Project Skara: Migrating OpenJDK to Git & GitHub
I’m a Software Engineer working in Java and related technologies for the past 4 years. Knowing Java is an opensource programming language a few months I got too curious about where actually the code for Java lives. I started searching for java, OpenJDK, Java8
in Github a popular version control system but none of them given the result I was looking for. I started searching for other Source Control Management tools but I was unlucky every time. Finally, I started searching on Google what scm tool is used for openjdk.
It was quite hard to find the answer I was looking for but finally, I succeeded and came to know it uses Mercurial SCM.
Wait story doesn’t end here
Today again a got a bit curious let’s see what are new features coming in Java 16 by visiting the official OpenJDK website. And what I saw there below two lines-
Again I started exploring more and got to know about Project Skara whose whole to investigate alternative SCM and code review options for the OpenJDK source code, including options based upon Git rather than Mercurial, and including options hosted by third parties.
Objectives behind Project Skara
- Consolidate the JDK Forest into a Single Repository: For many years, the full code base of the JDK has been broken into numerous Mercurial repositories. In JDK 9 there are eight repositories: root,
corba
,hotspot
,jaxp
,jaxws
,jdk
,langtools
, andnashorn
. While this model of multiple repositories offers some advantages,
2. Allow atomic commit across repositories: it also has many downsides and does a poor job of supporting various desirable source-code management operations. In particular, it is not possible to perform an atomic commit across repositories of inter-dependent changesets. For example, if the code for a single bug fix or RFE spans both the jdk
and hotspot
repositories today, the change to both repositories cannot be done atomically in the forest hosting those two distinct repositories.
3. Preserve all version control history, including tags
4. Reformat commit messages according to Git best practices
5. Port the jcheck
, webrev
and defpath
tools to Git
6. Create a tool to translate between Mercurial and Git hashes etc.
Here are some resources exploring the same
- Erik and Robin’s session at GitHub Universe 2020
- OpenJDK GitHub repository
- OpenJDK GitHub organization
- Skara tooling
- JEP 296: Consolidate the JDK Forest into a Single Repository
- JEP 357: Migrate from Mercurial to Git
- JEP 369: Migrate to GitHub
- https://inside.java/tag/skara
- Project Skara with Joe Darcy and Erik Duveblad Podcast
- GitHub Welcomes the OpenJDK Project! by Martin Woodward (guest) on September 30, 2020
- Running JDK pre-submit testing on GitHub by Robin Westberg on September 16, 2020
- jdk/jdk repository transition to Git, GitHub, and Skara is done by Erik Duveblad on September 5, 2020
- More detail on the SCM transition plans for JDK 16 by Joe Darcy on May 19, 2020
- Amber is moving to Git, GitHub, and Skara by Vicente Romero, on April 13, 2020
- Project Panama is moving to GitHub by Jorn Vernee on January 14, 2020
- Project Loom Is Moving to GitHub by Ron Pressler on August 23, 2019
Keep Learning Java!!!