Skip to content

Glasgow Haskell Compiler (GHC) migration to GitLab

Background

The Glasgow Haskell Compiler is planning a migration to GitLab. GHC's infrastructure is currently:

  • Trac for ticket tracking and wiki
  • gitolite and a variety of custom tooling for repository hosting
  • Phabricator for code review
  • a mix of CircleCI (for Linux, macOS) and Appveyor (for Windows) for CI

Those responsible for GHC's infrastructure has been in touch with GitLab (namely @dplanella).

Goals

The main goals for a successful migration would be:

  • More accessible infrastructure for contributors
  • Code review integration with git
  • Reliable and maintainable multi-platform continuous integration
  • Streamlined infrastructure and tooling
  • Good relationship and open communication channel with upstream (GitLab in this case)

Discussion

Currently the migration is underway. Tools for migrating Trac tickets and the wiki into GitLab are largely complete. A staging installation can be found here.

GitLab replacements

Tool Feature GitLab feature GitLab edition
Gitolite GitHub -> Git mirroring Repository mirroring EE
Gitolite Git -> GitHub mirroring Repository mirroring EE
Trac Tickets Issues CE
Trac Ticket lists Issue boards CE
Trac Ticket notifications mailing list ? ?
Trac Ticket priority Issue weight EE
Trac Wiki Wiki CE
Phabricator Herald for automatic reviewer assignment Code owners EE
Phabricator Code review Discussions CE
Phabricator Continuous integration Pipelines CE
CircleCI Continuous integration Pipelines with custom CircleCI bridge tool CE
Appveyor Continuous integration Pipelines and Appveyor's GitLab integration CE

Outstanding issues

Blockers

  • Issues/API: Import difficulties due to #46980 (closed)
  • Issues: Commit notes aren't created if ticket is created after commit is pushed (#56943 (moved); worked around).

Urgent

Important but not urgent

Important but not prioritized by GitLab

Nice to have

  • Issues: Issue search autocompletion should be less selective (#57249 (closed))
  • Code review: Comments not allowed on unchanged lines (#51823 (moved))
  • Code review: file tree (#46474 (closed))
  • Pipelines: Need to custom bridge tool to integrate with CircleCI (need mitigated by migration away from CircleCI)
  • Pipelines: Difficulty of managing builder images, no story for Docker on Windows. Potentially helped by gitlab-runner!464 (closed), gitlab-runner#2885 (closed)
  • Pipelines: No way to query triggered pipeline status (gitlab-ee#5096)
  • gitlab-runner: extends keywords is broken in some cases (gitlab-runner#3794 (closed))
  • gitlab-runner: gitlab-runner violates the principle of least privilege (gitlab-runner#3188 (closed))
  • Issues: Label namespace clutter due to lack of custom fields (https://gitlab.com/gitlab-org/gitlab-ee/issues/1906, &235)
  • Issues: Better handling of duplicate and blocking ticket relationships (#47007 (closed), #39751 (moved))
  • Repository mirror: Crash (#55350 (closed))
  • Code review: Convenient way to fold all resolved discussions (gitlab-ce#55747)
  • Code review: Allow user to rewrite commit message while squashing during merge (gitlab-ee#1510)
  • Code review: Button to toggle visibility of all discussions (#19149 (moved))
  • Search: Be more clever in identifying user intent for searching on IDs (#56967 (moved))
  • Poor search relevance: fix ElasticSearch support (gitlab-ee#9633)

Status

The migration effort is on a fairly aggressive timeline due to various considerations. The plan is to switch over to GitLab by December 18. There is a test instance here. This is a self-hosted GitLab Ultimate installation provided through the GitLab FOSS initiative which includes an import of GHC's Trac tickets and users from a few months ago.

After migration there are a

Collaborators

Edited by David Planella