Writing an extension for deployment

First, extensions that are deployed should be in subversion. Get commit access if you don't already have it and put it in SVN:

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

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 starting to get your code in shape.

Next you should try to get two or more reviews by trusted developers. They will help you find any thing that doesn't have a chance of making it past the next step. Find a couple of people 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 SVN access to work on the extension that is already in use.

Finally, anything that is deployed on the Wikimedia cluster needs to be reviewed by the release manager for security and scalability issues. You should read and apply Security for developers before getting this far. 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.

Finally, you need to file a bug in Bugzilla to have it deployed. The bug will need several things:


 * The “shell” keyword so that people with shell access can find the request.
 * The bug should point to on-wiki community consensus for having the extension installed on a particular wiki.  No extension is deployed across all “non Latin Wikimedia properties” (for example) without first getting  consensus from the individual wiki.
 * Finally, an extension that hasn't been deployed yet should acknowledge that fact and point to release manager's approval for deployment.

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.