Mozilla is to move the primary repository for its flagship Firefox web browser from Mercurial to GitHub, in order to reduce pressure on its development teams.
A post to the firefox-dev mailing list from Byron “Glob” Jones, a Senior Engineering Manager at Mozilla working on Workflow and Release Management, explains: “For a long time Firefox Desktop development has supported both Mercurial and Git users. This dual SCM requirement places a significant burden on teams which are already stretched thin in parts. We have made the decision to move Firefox development to Git.”
The repository will be hosted on GitHub, though the move is expected to take “at least six months before the migration begins.”
Mercurial is an open source distributed source control management tool, written largely in Python, and licensed under the GPL (GNU General Public License) version 2. It was created by Olivia Mackall in 2005 as an alternative to BitKeeper for managing the source code of the Linux kernel, in response to the discontinuation of the free version of BitKeeper. In the end Linus Torvald’s Git was used for Linux, though Mercurial became popular elsewhere.
The contribution workflow for Firefox involves a number of different tools. Bugzilla, another Mozilla project, is used for tracking issues, and although GitHub includes an issue tracker, Glob states that Buzilla will still be used. Contributors who fix issues then submit code for review to another open source tool, called Phabricator, and it is the reviewer who then submits the patch to the integration branch for Firefox. Mozilla also uses a tool called Lando to automate setting up development environments for Firefox.
“We will continue to use Bugzilla, moz-phab, Phabricator, and Lando,” says Glob, where moz-phab is a command-line tool for Phabricator.
As Glob mentions, it is already possible to uses Git for Firefox development, but once the migration is complete, support for Mercurial will be removed. The initial stage of the migration will see Git become primary, with one-way synchronization to Mercurial. The second stage will be when teams migrate infrastructure that depends on Mercurial to Git.
Git is open source, but GitHub is not. The repository for the Linux kernel is hosted at Kernel.org. Maintaining and securing a major repository is a considerable effort though and GitHub offers generous free facilities to open-source projects. Nevertheless this is a compromise and as one comment noted: “Going ‘all-in’ on GitHub means making yourself dependent on a Microsoft service that could change its conditions.”
Then again, Mozilla is already dependent on Google for much of its finance, and the switch to GitHub might help attract new contributors thanks to its familiarity.