Heterogeneous deployment

Rationale
Part of the difficulty with deploying MediaWiki in a timely fashion is that many deployments require an all or nothing approach. We currently don’t have a systematic way of deploying different versions of MediaWiki to different production wikis (i.e. Hebrew Wikisource and English Wikipedia both must run the same version of MediaWiki).

The "Heterogenous deploy" project will give us the ability to stage new versions of our software to a production-like environment, and then deploy in waves to different parts of the cluster. This will allow us to deploy in such a way that we can receive and address reports from the first wikis we deploy to before moving on to other wikis that may have different problems to report.

Timeline
This project is currently in the planning phases. A provisional version of this feature was implemented by Roan Kattouw and Tim Starling during the 1.17 deployment. Tim Starling implemented a more robust starting point for implementation of this feature in April 2011 before moving on to other projects. Priyanka Dhanda is working on a more detailed plan which targets utilizing this feature for the 1.18 release. Tim and possibly others will join the project after some other parts of the General Engineering roadmap are completed.


 * Phase 1 - targeted for 1.18 release. Simple version that is good enough for 1.18, but not more ambitious than that
 * Phase 2 - version for HipHop, ready for 1.19 release

Additional documents

 * User requirements:
 * Specifications:
 * Software design document: http://wikitech.wikimedia.org/view/Heterogeneous_deployment
 * Test plan:
 * Documentation plan:
 * User interface design docs:
 * Schedule:
 * Task management:
 * Week of May 23


 * 1) Fix MWVersion to work with multiple versions of mediawiki using a new version.dblist
 * 2) Move wmf-config to be shared by all versions of mediawiki instead of having oner per version
 * 3) Edit configuration to keep track of version based on some global var
 * 4) $wgCacheDirectory should depend on the version being run (in CommonSettings.php and InitializeSettings.php)
 * 5) $wgExtensionAssetsPath and $wgStyleSheetPath should depend on the version being run (in CommonSettings.php)
 * Release management plan:
 * Communications plan: