Review queue

This page documents the '''steps needed to get MediaWiki extensions and other code that must go through the review process before possibly being deployed to Wikimedia wikis.

Writing an extension for deployment can be a time-consuming project; any interested party is encouraged to start the process long before any deadline.

To see all extensions awaiting review, the "Task Graph" list in T33235 links to all yet unreviewed/in-progress extensions.

Once an extension has made it through review (including product, design, and security evaluations), then the extension can be scheduled for deployment by the Wikimedia Foundation Release Manager.

General prerequisites and expectations

 * General: Follow the general guidelines and recommendations on writing extensions. Read Coding conventions, Pre-commit checklist, Performance guidelines, and Security for developers and make sure that your code follows these guidelines.
 * Documentation:
 * Create an  page in the Extension: namespace on mediawiki.org to document for developers and people who will install or configure the extension. Use Template:Extension for this.
 * Create a  page in the   namespace on mediawiki.org for your extension's end-user documentation. Cross-link it with the   page above. Also see Manual:Developing extensions. Example: Help:VisualEditor/User guide. Screencasts can be useful in explaining how things work.
 * Code hosting: Request a new Git/Gerrit repository to store the source code for your extension. Gerrit is where all code review will happen.
 * Issue tracking: Request a project in Phabricator to track bugs and feature requests for your extension. Get notified of new tasks reported in your project.
 * Localization: Your extension will need to be translated on translatewiki.net before it can be deployed anywhere. This requires your code to have proper i18n files etc.
 * Hosting a test version: Create a Labs account at labsconsole:Special:UserLogin/signup. Then find an existing Labs project to join or request a new one to host a testing server with your extension deployed to it for testing and demonstrations.
 * Add your extension to Developers/Maintainers and indicate who the maintainers are.

Once above steps are done, consider getting community support for your idea:
 * Community support can be shown by having an active discussion on the need of the extension on a wiki and documenting the responses. If there is no active community support, support can be built through discussions and proposals.
 * Post your idea to the wikitech-l mailing list to get feedback from experienced developers and Wikimedians. People may point you to another extension that is already in use whose functionality duplicates what you want, or could be easily extended to do what you want. In that case, you should use Git to work on the extension that is already in use.
 * Communicate your ideas/plans to affected wikis to garner both support and suggestions/feedback.

Preparing for deployment

 * 1) The production deployment tracking task:
 * 2) * Create a task in Phabricator to get an extension into the review queue. This task should only concern deployment itself. Any issues which block deployment should be separate subtasks (listed under "Task Graph") that block this parent task.
 * 3) * After creating that task, click "Edit Related Tasks… > Edit Parent Tasks" and add task number T33235.
 * 4) * Your deployment tracking bug should point to on-wiki community consensus (and/or community support/desire) for having the extension installed on a particular wiki, if applicable.
 * 5) Request and incorporate feedback the needed reviews:
 * 6) A security review: Open a security review task and mark it as a subtask of the main deployment task
 * 7) A product review, if applicable
 * 8) A design review, if applicable.
 * 9) After the security review, request deployment to the Beta Cluster (this can aid the other reviews).
 * 10) Make sure the extension is automatically branched.
 * 11) Request a date/time for deployment in the deployment tracking task to get it added to the deployment calendar.
 * 12) * "You" (the person or persons driving/requesting this) will need to be online (on IRC in ) and available during the deployment to respond to any issues that might arise.