Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News OpenJDK Migrates to GitHub

OpenJDK Migrates to GitHub

This item in japanese

The transition of the OpenJDK projects from Mercurial to GitHub will be completed by September 2020. Some of the expected benefits of the new source code management solution are performance and better support for code reviews.

OpenJDK has used the Mercurial source code management solution since 2008 to store source code and conduct code reviews. Some of the OpenJDK projects have already transitioned to GitHub and the JDK project will join them when Github becomes the official read/write main repo in September 2020.

Some of the OpenJDK projects such as Loom, Valhalla, and JMC have already moved completely from Mercurial to GitHub. Several others, such as the JDK itself, are in the process of transitioning. For those projects, the repositories are already on GitHub, but still as a read-only copy.

Joe Darcy, responsible for the migration to GitHub, recently gave an update about the status: "We're looking to transition the JDK mainline to Skara during the end of JDK 15, start of JDK 16 time frame". JDK 15 will be released in September 2020 and JDK 16 will be released in March 2021.

In 2018, Project Skara was started in order to evaluate possible alternatives to Mercurial for source control management. The mission statement of the project is "Make all contributors more productive, both new and existing ones".

Next to his statement on Twitter Darcy gave a more detailed description on the mailing list: "We are looking at transitioning the jdk/jdk repo hosted on to become the read/write master for JDK 16 sources in early September 2020. This would be a few weeks before the GA date of JDK 15 and after a separate JDK 15 repo is forked off in mid-June per the JDK 15 schedule.

The early access JDK 16 builds published on may transition to being Git-based rather than Mercurial-based some time ahead of the repo transition. Which SCM is used as a basis for a JDK build can be inferred from the contents of the "release" file in the root of the build. Among other information, the release file records the SCM and the SCM hashes of the sources used for the build.

To evaluate the possible alternatives for Mercurial, Project Skara defined a list of evaluation criteria:

  • Performance: time for clone operations from master repos, time of local operations, etc.
  • Space efficiency
  • Usability in different geographies
  • Support for common development environments such as Linux, Mac, and Windows
  • Able to easily host the entire history of the JDK and the projected growth of its history over the next decade
  • Support for general JDK code review practices
  • Programmatic APIs to enable process assistance and automation of review and processes

Despite existing OpenJDK developers’ familiarity with Mercurial and the cost of migration, the Skara project members decided to move to Git.

The main reasons to move to Git are the size of the version control system metadata and the availability of both tooling and hosting. JEP 357: Migrate from Mercurial to Git describes the motivation for Git in detail.

GitHub was chosen because of the performance, API, and expanded community. JEP 369: Migrate to GitHub explains the reasons for the move to GitHub.

Project Skara has itself a repository on GitHub and contains a list of tools to help transition to GitHub. There are tools to import Mercurial repositories to Git and vice versa. Next to that, CLI tools are included to assist in the migration, such as translating Mercurial to Git hashes.

Rate this Article