Phabricator/Plan

This plan to migrate our developer infrastructure to Phabricator consolidates the feedback received at Requests for comment/Phabricator and other sources.

Summary
The result of the Phabricator RfC is favorable to move to this platform and replace gitblit, Gerrit, Jenkins, Bugzilla, RT, Trello, and Mingle. A first phase will focus on migrating all the Bugzilla and RT data to Phabricator, and merge the project management work being done in Trello and Mingle. A second phase —that could be worked in parallel— will focus on substituting Gerrit for code review. There is also a possibility to deprecate Jenkins as a continuous integration tool, but this option is out of scope for now. A few blockers have been identified in these areas, and we will collaborate with the Phabricator community to fix them.

The calendar of the migration is conditioned by the resolution of these blockers. The current assumption is that Phabricator will deprecate Bugzilla, Trello, and Mingle first. Gerrit will follow after a period of transition.

The Engineering Platform team at the Wikimedia Foundation will lead this project allocating the resources necessary to define a detailed plan, proceed with the migration, and maintain the new infrastructure.

Requirements
A detailed list of short term tasks is available at the project Wikimedia Phabricator Day 1.

General

 * Users log in to Phabricator with their Wikimedia credentials.
 * Unified search powered by ElasticSearch.
 * IRC bots ported to Phabricator.

Task / bug management

 * Possibility to remove and delete comments.
 * All tasks under a private project (e.g. Security) must be private.
 * Interacting with external (non-Phabricator) users via email.
 * Migration of all Bugzilla and RT  data, leaving automatic redirects.
 * Gerrit plugin to notify back to Phabricator during the transition of code review tools.
 * Flexibility for teams to move from Trello, Mingle, and Gerrit within a window of deprecation.

For an analysis between Bugzilla and Phabricator, see Requests for comment/Phabricator/versus Bugzilla.

Code review
A complete list of tasks is available at the project Code review for Phabricator.


 * The code review process in Differential/Audit needs to be adapted to our needs.
 * Build a binding between Phabricator and Zuul (if Phabricator's replacement for Jenkins is not ready).

Migration plan
The main lines of the current plan (for details, see Launch Wikimedia Phabricator Day 1): There is no mass migration from Trello and Mingle projects. Some teams are more interested than others in total / partial migration. One idea is to write the Bugzilla migration script with an abstraction layer that could be fine tuned for RT, Mingle, Trello.
 * 1) ✅ Deploy the Trusted User Tool using the Legalpad app only, with Wikimedia SUL enabled -- see https://legalpad.wikimedia.org (it will be merged with the main Phabricator instance by Day 1).
 * 2)  Deploy a separate Phabricator in a production server on https://phabricator.wikimedia.org/ after fixing the blocking tasks defined in the corresponding task. This is supposed to be finished in the week starting on September 15th. Blocking tasks as per September 14th are:
 * 3) Get certificate for phab.wmfusercontent.org (RT #8212 ✅), set up SNI on misc-web-lb (RT #8345 ), redirect to HTTPS.
 * 4) Create a phabricator authentication provider that uses mediawiki oauth (Upstream ticket, )
 * 5) Configure inbound email for phabricator.wikimedia.org
 * 6) Determine license of the content submitted to Phabricator and display legal footer
 * 7) ✅ The migration of a selection of projects in fab.wmflabs.org is required for Day 1.  This is supposed to be finished on September 12th and required taking down the Labs instance; the team can be reached on Freenode IRC in the #wikimedia-devtools channel. https://phabricator.wikimedia.org/ remains read-only until open issues listed above are solved.
 * 8) The migration of RT (workboard) follows. Earliest possible/expected date: September 29-October 03 (as Operations is busy with DC move the week before). RT downtime expected of 1-3 days.
 * 9) The migration of Bugzilla (workboard) follows. Earliest possible/expected date: October 06 but favoring Friday October 10 to interrupt engineering less (starting over the weekend). Bugzilla downtime expected of 1-3 days. Checklist:
 * 10)  Instructions to use Phabricator for bug reporting and project management.
 * 11) Documentation of data and features that will not be available in Phabricator after the migration.
 * 12) Phabricator test instance available with a sample of Bugzilla reports imported automatically (say 1 of each 10, about 700 reports).
 * 13) At least one week of margin to receive community feedback and implement improvements.
 * 14) Documentation of the migration process detailing sequence of steps and timeline expected.
 * 15) Go-NoGo meeting with the Phabricator team (Andre, Chase, Mukunda, Quim), Erik, Rob, MarkB, and Greg.

The migration of Gerrit and Jenkins is out of scope for Day 1.