Looking ahead: proposed Hg forest consolidation for JDK 10

Jonathan Gibbons jonathan.gibbons at oracle.com
Wed Oct 12 23:53:06 UTC 2016

On 10/12/2016 09:25 AM, Andrew Hughes wrote:
> ----- Original Message -----
>> snip...
>>>>> I would appreciate if the runner could be included in the
>>>>> root/test directory.
>>>> I'm not quite sure what you are referring to by the jtreg runner.
>>> I mean the code in http://hg.openjdk.java.net/code-tools/jtreg
>> I think the problem with that is that the development of jtreg then becomes
>> tied to OpenJDK. It might be ok for the development version of OpenJDK, but
>> you then have to backport jtreg fixes into update releases, rather than just
>> using the same jtreg from the separate repository.
>> We've experienced that bundling issue with IcedTea, and it's why we split
>> out the plugin/javaws work (IcedTea-Web).
>>> As Andrew stated, some subdirectories are pretty stable. It
>>> might completely make sense to merge these into one repository, but I'm
>>> really concerned about jdk and hotspot.
>>> In general, I think those people that are highly specialized on complex
>>> subcomponents of the VM will suffer from this.  They often are fine
>>> just working with hotspot / jdk etc..  In general, these people develop
>>> new components in the latest branch.
>>> Those people that have to maintain and test the VM really will profit
>>> from the new setup.  They anyways always operate with the full
>>> repo tree.
>>> Having this said, I think it would make more sense to put the legacy code
>>> base into merged repos, and not the development branch?
>> I agree the biggest friction is going to be between HotSpot and the other
>> repositories, much as it was for the build system changes which took an
>> entire OpenJDK release to make it to HotSpot, because the development
>> experience is quite different.
>> The HotSpot repository is still fairly slim and performs well. I get the
>> impression that many HotSpot developers work on that repository in isolation,
>> given their requirements to be able to build from within the repo rather than
>> the top-level.
>> The JDK repository is already experiencing slowdown. It doesn't really work
>> without the top-level repository and the additional components (CORBA, JAXP,
>> JAXWS, Nashorn) are usually needed for a build, even if they are seldom
>> altered.
>> Given the size of the JDK repository already, adding in these components is
>> not going to make a huge difference.
>> Build changes usually end up touching most of the repositories. Merges
>> certainly
>> do. So, yes, the benefits are greatest for those doing build and integration
>> work.
>> I do wonder what percentage of the cross-repo commits touch HotSpot, and
>> whether
>> we could retain that as a separate repository if it's going to cause so much
>> disruption for HS developers.
>> JDK builds can be done using an imported HotSpot and HotSpot developers can
>> use an
>> imported JDK, so I don't see a strong reason to join these together. We've
>> had to
>> swap out HotSpot with one that includes a newer port on several occasions,
>> and
>> having to duplicate all the JDK code in these cases would be a major pain.
>> HotSpot also operates a different commit process which could cause friction
>> if
>> the repos are merged.
> Further to that, for OpenJDK 8, the relative repo sizes look like
> this (compressed):
> -rw-r--r-- 1 andrew users 918K Aug  7 18:20 corba.tar.xz
> -rw-r--r-- 1 andrew users 6.5M Aug  7 18:22 hotspot.tar.xz
> -rw-r--r-- 1 andrew users 2.2M Aug  7 18:21 jaxp.tar.xz
> -rw-r--r-- 1 andrew users 2.2M Aug  7 18:21 jaxws.tar.xz
> -rw-r--r-- 1 andrew users  38M Aug  7 18:23 jdk.tar.xz
> -rw-r--r-- 1 andrew users 2.0M Aug  7 18:21 langtools.tar.xz
> -rw-r--r-- 1 andrew users 2.2M Aug  7 18:25 nashorn.tar.xz
> -rw-r--r-- 1 andrew users 327K Aug  7 18:20 openjdk.tar.xz
> The JDK repository, even compressed, is over five times the size
> of HotSpot. Adding the other repos into the JDK repository thus
> wouldn't make that much of a difference to it, even if HotSpot is
> included, whereas it will cause an order of magnitude increase compared
> to the current side of the HotSpot repositories.
> I think I'd thus prefer to see it cut down to two repositories. That
> would give most of the benefits I described of getting rid of all
> the superfluous repos, without bloating the requirements for HotSpot work.

For my part, I always preferred a different grouping of repositories, 
along more
functional lines, starting with

*    hotspot + java.base module + javac
*    client/desktop/gui code
*    XML code
*    nashorn

But while I believe that would solve many/most of the problems for 
"coordinated" updates
across hotspot/core-libs/javac, I have to accept it will not solve "the 
bisect problem",
and so I have come to accept the desirability of a single repo.

That being said, I do see practical concerns here about working with a 
single repo, and
want to make sure we address all those concerns with reasonable, 

-- Jon

More information about the jdk9-dev mailing list