Proposed Consolidation of JDK 10 OpenJDK Mercurial Repositories

| by Michael Redlich Follow 15 Followers on Oct 21, 2016. Estimated reading time: 2 minutes |

In an e-mail posted on the OpenJDK mailing list, Joe Darcy, JDK Engineer at Oracle, proposed a consolidation of their Mercurial (dubbed “Hg”) source control repositories for JDK 10 OpenJDK into a single repository.

JDK 9 OpenJDK is currently organized into an Hg “forest,” a collection of multiple related Hg repositories. Eight repositories make up the JDK 9 forest:

The motivation behind this proposed consolidation, as stated in JEP 296, is to eliminate the disadvantages of maintaining multiple repositories. For example, it is not possible to propagate a single bug fix that spans multiple repositories with the current forest arrangement. One advantage of a single repository provides the benefit of tracking changes to sets of files as opposed to individual files.

Alternatives proposed in the JEP were (a) staying with the current Hg forest, and (b) consolidating only a core subset of the repositories, but the latter was rejected. It was also decided to not include JavaFX into the Hg forest.

Despite posting anticipated Q&A in the proposal, a debate over scalability, performance, and other difficulties emerged from various contributors especially in this response in which a litany of concerns was presented. In an apparent attempt to bring the focus back to the “big picture,” Oracle language architect Brian Goetz, explained:

OpenJDK developers are not the only stakeholders here. By aligning more with the way the rest of the world develops -- all code in one linearized, transactionally updated repo -- it increases the feasibility / reduces the cost of tools like 'bisect' to determine where a fault was introduced. This reduces SQE costs and increases product quality -- something we all have a stake in. David Lloyd has pointed out other tooling-related benefits, such as making it easier to maintain a git mirror.


Most of the objections raised so far have been "(I think they will) make my life harder." Fair enough; people should be their own advocates. But let's not forget the significant benefits that accrue to *everyone* as a result, and keep those in mind when judging the pros and cons.  

This isn’t Oracle’s first attempt to clean up the OpenJDK Hg forest. In November 2013, Darcy proposed to “use an alternate forest arrangement for JDK 9 that will dramatically reduce the propagation time of fixes across the set of forests.”


A prototype was created to test consolidation of an Hg forest, and the supporting Python scripts (detailed below) are available for download.

  • prepares for the unification by converting each repository in the forest into the appropriate format.
  • unifies all the converted repositories from a forest into one repository.
  • verifies that the file contents of the forest and the unified repository are equal at every tag in the history. This is done with the help of the diff(1) program.

The prototype contains eight repositories that will be combined into a single repository using the Python scripts. History, changeset comments, and original creation dates are preserved. The single repository will contain single top-level src directory. For example:




Rate this Article

Adoption Stage

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread


Login to InfoQ to interact with what matters most to you.

Recover your password...


Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.


More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.


Stay up-to-date

Set up your notifications and don't miss out on content that matters to you