Git/Conversion/Timeline

December 2011

 * Preliminary test conversions early in month ✅, December 5ish
 * Git workflow architecture review ✅, December 19
 * Agree on implementation strategies regarding remaining development process questions, e.g. how to handle multi-repo commits ✅ as of 1 Feb

January 2012

 * CI tests and linting get run when a developer chooses to push to the stage between their branch and the mainline branch (see Ideal Workflow Document and Git-review) (still in progess as of 9 March -- Antoine is working on this. right now, only happens on the master)

February 2012

 * Finish code review on trunk (progress at Code Review stats and MediaWiki 1.19/Revision report) Code review backlog went back up at the end of the month.
 * Cut 1.19 release branch - ✅, Branched at r110996 on 9th February, 2012
 * Ask people to stop creating new extensions in Subversion now - ✅, 11 Feb
 * Communicate to larger community about migration
 * techblog post - ✅, 15 Febuary 2012
 * Make Gerrit behave like we want it to -- TODO [in progress, see March]
 * work on permissions ✅ as of March 9th
 * work on hooks - ✅ as of March 30th
 * Training documentation and interactive training
 * Update Git/Workflow ✅
 * Video training. Set up a test repo, tell 3 people to submit patches simultaneously, walk them through that, then walk them through reviewing it ✅

March 2012
(Chad Horohoe unavailable March 10th-19th; Antoine Musso is his backup.)
 * Finish up specific Git management scripts / changes
 * to support WMF workflow ✅
 * stage git-based tree on fenari ✅
 * update documentation ✅
 * i18n updates Bug 34137 ✅ This is nearly complete by March 30th. l10n updates can be pushed from translatewiki, finishing the auto-approval process.
 * Automate the translators' process as much as possible--it currently takes about 20mins/day for Raymond to do and that's a huge timesink. Chad to follow up.  This has to be ready before ANY migration of core to git starts.
 * MediaWiki 1.19RC1 release from Subversion. [Week of 5 March] ✅
 * Code review stats goal by end-of-week: 20 new on phase3, 100 new on phase3+extensions WMF deploys. ✅ (late)
 * 2 weeks before migration of MediaWiki core, start communicating about cutover date -- give date & links to all the documentation with the 3 most frequently asked questions [Week of 5 March]
 * wikitech-l, mediawiki-l [ongoing]
 * add !gitconversion to mw-bot ✅
 * Keep Extension:ExtensionDistributor working. See 27812. [In progress - Sam]
 * MediaWiki 1.19.0 release from Subversion Git. [Week of 12 March]
 * MediaWiki 1.19.0beta2 release from git ✅ March 22nd.
 * Code review stats goal by end-of-week: as close to zero as possible in phase3+extensions WMF deploys. ✅
 * Mass-create Gerrit accounts from the SVN users whose USERINFO has an email address in it, and tell them via wikitech-l that they should just go to the password reset page on labsconsole to start logging in. [Ryan, March 12th] ✅
 * Make Gerrit behave like we want it to -- [[labsconsole:Gerrit bugs that matter|TODO] (better TODO to come)
 * Making permissions right ✅
 * Allow anyone to create a gerrit account without needing human intervention from a gatekeeper [in discussion]
 * Making hooks correct ✅
 * Documentation and training
 * Chad to update the code review guides, with help from Guillaume, before the migration of core. This will include:
 * docs on how current SVN committers can link their LDAP accounts, get passwords put on them, and thus get gerrit accounts (currently on labs, need improvement)
 * Create a page where people can request Gerrit accounts [Sumana, March 13th]: ✅ labsconsole:Help talk:Access
 * procedure for adding and removing people from gerrit project owner groups, including for WMF deployment branch and WMF master ✅ When/how we'll add, remove people from Gerrit project owner groups, Git/Gerrit project ownership
 * Git migration -- core & extensions [scheduled for Wednesday, March 21] ✅
 * Make trunk/phase3 & trunk/extensions read-only ✅
 * do deauth of SVN as a pre-commit hook to output an informative error message in case someone tries to commit to MW core -- "Subversion is dead, we have moved to git, read Git/Conversion"
 * pre-commit hooks are in puppet, when someone does this (probably Chad)
 * Right now it's a hard de-auth in authz
 * Get native packages on Windows and Mac for git-review since it's so much easier and better than the manual commit messages hook process. See 35145. ❌

April 2012 + mysterious future

 * Git migration -- ANYTHING ELSE
 * Make paths read-only on case-by-case basis.
 * Ongoing, slow process.
 * change links on mediawiki.org
 * Developer Hub
 * How to become a MediaWiki hacker ✅
 * Commit access ✅
 * Writing an extension for deployment ✅
 * More documentation updating. Ask Guillaume for help.
 * Code review page is a high priority.
 * get out-of-date git template & stick it on every page that mentions Subversion, including Subversion
 * Possibly 1.20wmf1 (first mini deployment untethered to release schedule, first of many...1.20wmf2, 1.20wmf3, etc) from git. ✅
 * Move towards git-based development and release process ✅
 * First deployment from git mainline development branch ✅
 * Move towards continuous integration via git, goalpost: weekly deployment
 * Jenkins (Testswarm/PHPUnit tests) on git branches
 * 34141
 * MediaWiki 1.20, first deployment and release from git mainline development branch [Targeted for October currently]
 * [//bugzilla.wikimedia.org/showdependencytree.cgi?id=22596&hide_resolved=1 Unsorted "blockers"]

June - July 2012
Evaluation of Git/Gerrit workflow and consideration of alternative tools/workflows.

Goal: Determine whether we need to undertake a significant round of Git/Gerrit improvements, or whether there are major deficiencies in the Git/Gerrit workflow that would justify switching to a different review tool/process.

Alternative open source review tools:
 * ReviewBoard (example use by Khan Academy)
 * Phabricator (developed initially by Facebook and now community-maintained, example use by Phabricator project ; see also Phabricator)
 * Gitorious (developed by Gitorious AS and used to host Gitorious.org; has cross-repo merge request functionality similar to GitHub's pull request feature; example merge request list for StatusNet).
 * GitLab (developed by ???, positions itself as open source alternative to GitHub and seems to target a similar feature set -- a bit more active than Gitorious, but does not seem to self-host yet; code on GitHub. Ruby on Rails with a dependency on Gitolite, which is written in Perl :-)

Things about Gerrit we like:
 * We've got core unit tests running prior to any human review
 * We have (imperfect) e-mail notification about changes
 * We can push changes to a specific reviewer
 * Patch sets allow gradual improvement of a change prior to merge
 * Frequent releases of Gerrit itself and active dev community

Things about Gerrit we dislike:
 * Gerrit bugs that matter

Workflows to consider:
 * Short-lived bug/feature branches (e.g. "bug/36987")
 * Long-lived feature branches (e.g. Wikidata)
 * Well-maintained, regularly pushed extensions (e.g. MobileFrontend)
 * Cross-project maintenance and development (e.g. i18n/l10n updates and fixes)
 * Security-sensitive or access-restricted code (e.g. ops production changes)
 * Complex third party extension development without significant WMF implications (e.g. Semantic MediaWiki)