GitLab/Roadmap

Migrating our code review from Gerrit to GitLab is happening in stages:

✅ Foundations #
Consultation, documentation, vetting contractors, and buying hardware

👥 Groups involved
Technical community, Engineering Productivity, Site Reliability Engineering, Security, WMF Legal, GitLab contractor

📝 Activities

 * ✅ GitLab community consultation
 * ✅ Document code review and continuous integration workflows to include GitLab
 * ✅ Produce a roadmap
 * ✅ Engage with WMF Legal for ToS/Privacy Policy updates
 * ✅ Begin hiring process for GitLab contractor
 * ✅ Identify and estimate hardware use for GitLab components

📑 Status
✨Complete✨

✅ Construction #
Install and provision GitLab, create runbooks for upgrade and common administration tasks.

👥 Groups involved
Engineering Productivity, Site Reliability Engineering, Datacenter operations, Security, GitLab contractor

📝 Activities

 * ✅ Build a pre-production testing environment
 * ✅ Explore and establish login and authentication options
 * ✅ Rack, install, and setup GitLab for production
 * ✅ https://gitlab.wikimedia.org exists
 * ✅ Backups
 * ✅ Monitoring and Metrics
 * ✅ Establish deployment and upgrade cadence

📑 Status
✨Complete✨

✅ Explorers #
Individuals can use GitLab for their projects, but GitLab will still be missing features needed for teams to adopt GitLab.

👥 Groups involved
Individual developers, Engineering Productivity, Site Reliability Engineering, Security

📝 Activities

 * ✅ Publish tools for repository management
 * ✅ Create the initial ACL schema
 * ✅ Build puppetized CI runners
 * ✅ Open registration beyond NDA
 * ✅ Announce that we're open for use

📑 Status
✨Complete✨

🔁 Production-use foundations #
This phase has been long.

Before releasing code to our production environment, there is a large amount of work to be completed with many unknowns.

This work includes a set of instance-wide Shared Runners offering CI capabilities for unreviewed (meaning untrusted) code for private projects and forks. These Runners will be available for every project by default and help the community and volunteers to have CI for every code change.

👥 Groups involved
Release engineering, Wikimedia Cloud Services, Site Reliability Engineering

📝 Activities

 * ✅ Build GitLab workers for secure Docker image creation and publishing to production
 * ✅ Continuously publish image artifacts to our production Docker registry
 * 🔁 Build a stable set of untrusted cloud runners for unreviewed code:
 * ✅ Support an infrastructure allowing ephemeral runners
 * ✅ Ensure scaling works
 * ✅ Ensure caching works
 * ✅ Ensure MVP for monitoring is in place
 * 🔁 Announce and open runners to the world
 * ✅ Port release pipeline code to GitLab CI
 * ✅ Build MVP to integrate GitLab activity with Phabricator
 * ✅ Migrate toolforge repos from Phabricator diffusion to GitLab

📑 Status
🔁 In progress

🚧 Pipeline early adopters #
Groups of early adopters of the pipeline can start to use GitLab. Release Engineering will expand needed integrations and ease transition.

👥 Groups involved
Developer teams, Engineering Enablement, Site Reliability Engineering

📝 Activities

 * Refine integrations and adapt existing IRC/Slack bots for GitLab
 * Provide tools to help convert PipelineLib configs to GitLab CI files
 * Support early services adopters with documentation and learning sessions
 * Test out and build (if necessary) support for dependent patchset workflows

📑 Status
🚀Next

Estimate: Q3 FY2021/2022 (Jan–Mar 2023)

🔮 Beyond #
Work remains beyond the completion of above phases.

The list below is roughly ordered by estimated completion date:


 * Archive remaining Phabricator diffusion repos
 * Implementation of the Gerrit Privilege Policy on GitLab
 * Push to move remaining pipeline work to GitLab
 * Re-implementation of MediaWiki developer and release tools
 * Migration of MediaWiki+Extensions+Skins
 * Migration of the  repository
 * Migration of the long-tail of projects still on Gerrit
 * Archiving Gerrit
 * Gerrit becomes read-only
 * Create static dumps of historic reviews with reasonable efforts to preserve URLs
 * Important URLs: Change-Id, SHA1, unique ID, anchors to review comments(?)
 * Gerrit servers decommissioned
 * Ask GitHub repos to move to GitLab