Page MenuHomePhabricator

Remove custom "Expert Mode"
Open, LowPublic

Description

People asked me if they should enable it or not. I had no answer for them as I did not know what it means or does.

Could not find a discussion or ticket; rPHEX9f897dbcb9cbebea42ad716633da3bcf83e315de provides no reasons.

Then found https://www.mediawiki.org/wiki/Phabricator/Help#Search_terms where it is documented.

After enabling "Expert Mode" on https://phabricator.wikimedia.org/settings/panel/developer/ , the advanced Search interface at https://phabricator.wikimedia.org/maniphest/query/advanced/ exposes five additional fields: Parent IDs, Subtask IDs, IDs, Columns, PHIDs (see screenshots below).

[acko@fedora phabricator]$ grep -r "expert-mode" .
./extensions/src/expert/ExpertModeSetting.php:  const SETTINGKEY = 'developer.expert-mode';
./deployment/libext/misc/src/expert/ExpertModeSetting.php:  const SETTINGKEY = 'developer.expert-mode';

[acko@fedora phabricator]$ grep -r "ExpertMode" .
./extensions/__phutil_library_map__.php:    'PhabricatorExpertModeSetting' => 'src/expert/ExpertModeSetting.php',
./extensions/__phutil_library_map__.php:    'PhabricatorExpertModeSetting' => 'PhabricatorSelectSetting',
./deployment/translations/projects/phabricator_ext/core/qqq.json:	"0697a4a521e77f96": "Used in:\n\n[https://phabricator.wikimedia.org/source/phab-extensions/browse/wmf%252Fstable//src/expert/ExpertModeSetting.php$33 ExpertModeSetting.php:33]",
./deployment/translations/projects/phabricator_ext/core/qqq.json:	"9818855a7a1ea556": "Used in:\n\n[https://phabricator.wikimedia.org/source/phab-extensions/browse/wmf%252Fstable//src/expert/ExpertModeSetting.php$24 ExpertModeSetting.php:24]",
./deployment/translations/projects/phabricator_ext/core/qqq.json:	"aa5fe7b0dc66e1b8": "Used in:\n\n[https://phabricator.wikimedia.org/source/phab-extensions/browse/wmf%252Fstable//src/expert/ExpertModeSetting.php$34 ExpertModeSetting.php:34]",
./deployment/translations/projects/phabricator_ext/core/qqq.json:	"e20bdc892a74ee50": "Used in:\n\n[https://phabricator.wikimedia.org/source/phab-extensions/browse/wmf%252Fstable//src/expert/ExpertModeSetting.php$12 ExpertModeSetting.php:12]",
grep: ./deployment/.git/modules/libext/misc/index: binary file matches
./deployment/libext/misc/src/expert/ExpertModeSetting.php:final class PhabricatorExpertModeSetting
./deployment/libext/misc/__phutil_library_map__.php:    'PhabricatorExpertModeSetting' => 'src/expert/ExpertModeSetting.php',
./deployment/libext/misc/__phutil_library_map__.php:    'PhabricatorExpertModeSetting' => 'PhabricatorSelectSetting',

phab-expert-mode-disabled.png (2×960 px, 218 KB)

phab-expert-mode-enabled.png (2×960 px, 231 KB)

Event Timeline

Aklapper triaged this task as Low priority.
Aklapper renamed this task from Remove custom "Expert Mode" and make its behavior default to Remove custom "Expert Mode".Mar 14 2025, 4:14 PM

SELECT u.userName FROM phabricator_user.user_cache uc INNER JOIN phabricator_user.user u ON uc.userPHID = u.phid WHERE uc.cacheType = "preferences" AND uc.cacheData LIKE "%\"developer.expert-mode\":\"1\"%"; shows that ~250 users have this setting enabled.

Does this need a mitigation strategy, or is Phorge intelligent enough to ignore that setting if that config does not exist anymore? I mean, it's just a cache...?

I'm really sad to lose the controls this gives me via Parent ID searches. Can this proposal be discussed first, please?

I did not know what it means or does

"Never open a gate you don't know why it was shut" feels like it applies.

"Never open a gate you don't know why it was shut" feels like it applies.

If I'm supposed to maintain a place and previous owners didn't leave keys I'm happy to kick in the gate.

I guess there are three options: Restore the buggy behavior, restore and somehow fix the buggy behavior, or the status quo of having less custom code.
Though I'm also a bit curious about your use case - I guess I just hadn't used this feature to be fully aware, sorry. :-/

I wonder if we should write up the various features it gave and raise upstream for potential inclusion of them in core to benefit all installations?

I'm really sad to lose the controls this gives me via Parent ID searches. Can this proposal be discussed first, please?

@Jdforrester-WMF Could you please elaborate how and for what you've been using this stuff so I can understand better?
If I revert rPHABe610188169c6d96c4e5de8f6cf98a2d288d03006 locally and I go to /maniphest/query/advanced/, I (still?) do not see a "Parent ID" field (I know though that it can be used for queries, it's just unclear to me how to get it shown).

If I enter stuff like ["PHID-PROJ-diiu4dxhqvraareeve6n", "PHID-PROJ-awhh6j3juortynjmeohe"] into that (now gone) PHIDs field I incorrectly get zero results.

Speaking personally, I've used the IDs field before - it's been useful when I wanted to list a number of pre-selected Phabricator tasks in the search interface. I can imagine that it might also be useful if someone wants to perform the same batch edit on a predetermined list of tasks.

I understand that (workaround is constructing an URI like https://phabricator.wikimedia.org/maniphest/?ids=1,2,3) but I'm specifically curious about "Parent ID" mentioned before :)

[...] I'm specifically curious about "Parent ID" mentioned before :)

I've found just now that I probably also miss the functionality of searching by parent IDs. Right now, I was wanting to search for subtasks of T125653: Create new types of notifications (which should arguably be a tag rather than a tracking task, but that's a different question, lol) that were within the MediaWiki-extensions-CentralAuth project.
I worked around it this time by manually appending &parentIDs=125653 to the body of a POST request to https://phabricator.wikimedia.org/maniphest/, and then visiting the results URL it redirected to (which seems to then actually have the 'Parent IDs' field visible in its list of filters, yay!!) & adding the CentralAuth project to the 'Tags' filter option. However, it'd be preferable if I didn't have to manually play around with the body of a POST request in order to make this field visible/useable :)