Background
GrowthExperiments uses wiki pages in the MediaWiki: namespaces to configure certain things (example: cs:MediaWiki:NewcomerTasks.json). Besides keeping config files readable, in theory this provides community members the ability to maintain the configuration (which references community-maintained elements like template names). In practice, editing a JSON file with no help is hard enough that this feature is unlikely to be used.
Goal
We should provide a user-friendly form (as a special page, or maybe as a custom editor) for interacting with the page. This would allow administrators to interact with the configuration without having to know JSON syntax, provide documentation, ensure the configuration is valid, and provide autocompletion (i.e. for page URLs) where it makes sense.
In the long term this should replace the current deployment strategy: GrowthExperiments could be deployed to all wikis in a default, invisible mode, and communities will do self-serve deployments by updating the configuration accordingly.
See also T249987: Scale: GrowthExperiments wiki monitoring dashboard and T274009: Scaling: Open question: How should we deal with on-wiki configuration for dozens of wikis?.
Specifications
- All on-wiki configurations should happen from a single Special page.
- The configurations should not require any JSON editing -- they should be done through a form.
- Only administrators or interface-admins should be allowed to edit the form. But all users should be allowed to view the form with its current values.
- The form will need to support links to other pages where documentation will be kept, including a link to the actual configuration page, so that users of the form can find the edit history and Talk page.
- The form should have a description at the top, where we can explain what it is for and how to use.
- On the form, fields may need to be grouped, e.g. all fields relating to mentorship could be grouped under a "Mentorship" header.
- Each field should have a place for a description, to explain to the volunteers what the configuration of that field does.
- For certain fields that take pagenames, we should only allow users to enter real page names that exist.
- The form should not update in realtime, but rather should update with a "Save" button.
- The page should display a line that says who last edited the page, and when: "Last updated by User:XYZ on 2021-02-01 11:22:33".
- The page should have an edit history page, with the ability for permissioned users to undo revisions.
Implementation notes
- This will be implemented as a JSON page in NS_MEDIAWIKI that will be editable through a custom editor, similar to https://meta.wikimedia.org/wiki/Special:EditMassMessageList/User:Martin_Urbanec_(WMF)/MassMessage_test_list.