Writing an extension for deployment

This page documents instructions for writing an extension for deployment on Wikimedia wikis.

Code location and internationalization
First, extensions that will be deployed should be in Git. Get developer access if you don't already have it and put it in Git -- see Git/New repositories.

This gets the ball rolling. The extension will need to be translated on Translatewiki before it can be deployed anywhere, and putting it in Git with the proper i18n files and such will make that happen fairly quickly.

It's a good idea to start documenting your extension, at this point, here on MediaWiki. The extension template is a good place to start.

Code review
You'll likely start to get reviews at this point for code style. You can get a jump on those by reading over Coding conventions and Security for developers and making sure that your code follows these guidelines.

Next you should try to get two or more reviews by trusted developers. If you don't yet know any other MediaWiki developers, ask in IRC, or on the developers' mailing lists. They will help you find anything that doesn't have a chance of making it past the next step. Find a couple of established MediaWiki hackers to look over your code and point out any flaws in it. Make sure they know you're trying to follow this guide. If they know you're trying to get your code deployed, they'll look for things that would block deployment or alternatives to deployment that you might not be aware of.

For example, they 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 your newly-acquired Git access to work on the extension that is already in use.

Review for deployment
After your code has been checked by a few developers and the issues have been resolved, file a bug in Bugzilla asking that the extension be reviewed and deployed by the release manager

The bug should:
 * use the "shell" keyword so that people with shell access can find the request;
 * point to on-wiki community consensus for having the extension installed on a particular wiki, as necessary;
 * indicate that the extension hasn't been deployed to a Wikimedia wiki yet and ask the release manager to review it.

Also list the extension at Review queue with its bug number, and connect it to the extension review tracking bug by saying that your bug blocks bug 31235.

Anything that is deployed on the Wikimedia cluster needs to be reviewed by the release manager for security and scalability issues. Ask in IRC to find out who that is.

Any issues that the release manager identifies must be addressed before anyone can deploy your code on the cluster. If you've followed the advice of earlier reviewers closely, you probably won't have too much of a problem here. But the release manager takes his job very seriously, so he may well spot a show-stopper that eluded your earlier reviewers.

If everything appears ready for deployment, the extension should be moved from Review queue to Deployment queue. The release manager should do that.

Profit
Getting something deployed is not an easy task, but if you can meet the challenge, you know you've done something that not many people are capable of.