Switch jdk8u development to Git/Skara

Andrew Hughes gnu.andrew at redhat.com
Fri Oct 1 02:25:15 UTC 2021

On 06:57 Tue 14 Sep     , erik.joelsson at oracle.com wrote:
> Hello,

Hi. Sorry for the delayed reply, but we needed some time to think
this over in detail.

> Back in February there was a discussion about moving the OpenJDK 8u 
> development to Git/Skara together with the jdk11u move [1]. The 
> conclusion then, as I understood it, was to wait until sometime after 
> jdk11u was moved to give people a chance to get familiar with the new 
> development process and iron out the details on how it should be 
> applied. The jdk11u move took place over the summer, so I thought now 
> would be a good time to revisit the discussion for jdk8u.

I'd still consider the 11u move in progress, as it's not yet
completed a release from the new repository. That's the stage
that particularly concerns me and I'll be keeping an eye on.

> The move for 8u is a bit trickier than 11u as a necessary pre step is to 
> first consolidate the Mercurial repositories into one, like we did for 
> JDK 10. I have already produced a prototype conversion during the 
> previous discussion [2], but it's quite outdated at this time. 
> Unfortunately, the consolidation process is not easily automated and 
> only incremental to a point (basically on a per promotion tag level, but 
> even that comes with some caveats in the update world where multiple 
> releases are are being developed in parallel). Because of this it's not 
> feasible to setup a live mirror like we did for jdk11u. Instead, we will 
> need to plan for up to a week (worst case) of downtime where I produce 
> the final consolidated HG repository, and then let Skara convert and 
> publish this to Github. Ideally it should only take 1-2 days, but these 
> consolidations have been finicky in the past, so better plan for the worst.
> Another option would be to transition in 2 steps, first to a 
> consolidated HG repo, then to Git. This certainly has other drawbacks, 
> having to adjust to and support another development process for a short 
> period of time. It would, however, make the final transition to Git much 
> smoother and similar to the jdk11u transition.
> I would like to hear from the maintainers of jdk8u what your preferred 
> strategy would be and what timelines that would make sense to you.
> /Erik
> [1] 
> https://mail.openjdk.java.net/pipermail/jdk8u-dev/2021-February/013402.html
> [2] https://github.com/openjdk/jdk8u

The possibility of a two-phase approach to this has allayed a lot of my
fears about the possibility of such a transition. Following the well-trodden
path used by the main JDK repositories, and the greater time period to
adapt to the transition, would ease things a lot.

Having discussed this at length with Severin, I propose the following timetable:

1. End of November 2021 (Rampdown of 8u322 / Start of 8u332 Development)

* Convert 8u & 8u-dev to Mercurial mono repositories.
Given they should be identical at this point, it should be possible to
do one conversion of 8u, provide copies at both 8u and 8u-dev, and
then let each copy diverge.

* Create live read-only mirrors of 8u & 8u-dev in git

2. End of February 2022 (Rampdown of 8u332 / Start of 8u342 Development)

* 8u-dev development switches to Git & Skara, with the previous read-only
git mirror being used directly.
* 8u remains on Mercurial for the release of 8u332.  8u can be synced
to 8u-dev from the 8u git mirror.

3. April 2022 (Release of 8u332)

* 8u git is used directly for promotions of 8u342.

I think this provides the best balance of risk, while also allowing 8u
to be consumed from git within the next few months.

The most demand I'm seeing for 8u to be in git is from downstream
users, who expect it to be on github with the rest, while the most
change is required from developers, who have to adapt to the markedly
different process used by Skara.  The above allows an additional cycle
for developers to adapt to this change, see the live git mirrors in
operation and perhaps experiment with development in later JDK trees.
Meanwhile, downstream users should be able to start working with
8u in git from December.

Please let us know if the above seems feasible.  My understanding
is that the majority of work will be at the end of November,
and the second and third changes should just be a matter of making
it possible to commit to the git repositories.

A couple of additional questions:

1. Would the consolidation to a monorepo take place on top of
the existing root repository or be an entirely new Mercurial
repository? I've been trying to recall from the jdk10 transition,
but can't remember. Either way, the change for developers should
just be a one-time switch to the repository and the process
of submitting patches remains exactly the same as it is now,
except everything is from the one repository.

2. Is the consolidated repository expected to be identical
to a fully-checked out copy of the forest (i.e. the root
repository with each subrepo as a top-level subdirectory).
I know some files moved with jdk10, but I think we'd want
everything to stay the same with 8u.

3. As mentioned in another reply, could Skara's backport
command be adapted to "shuffle" the paths to fit the
8u layout? This may be quite tricky as currently it
requires both the 10u->9u conversion and the 9u->8u
conversion, but without this, the backport command
is effectively unusable and they all would have to
be performed manually.

4. Could Skara be adapted to enforce the jdk8u-fix-yes /
jdk8u-critical-yes JIRA labels so the change can't be pushed until it
has been approved?

Andrew :)
Pronouns: he / him or they / them
Senior Free Java Software Engineer
OpenJDK Package Owner
Red Hat, Inc. (http://www.redhat.com)

PGP Key: ed25519/0xCFDA0F9B35964222 (hkp://keys.gnupg.net)
Fingerprint = 5132 579D D154 0ED2 3E04  C5A0 CFDA 0F9B 3596 4222

More information about the jdk8u-dev mailing list