OpenJDK Mercurial Wheel
By kto on Oct 29, 2007
Sorry Dorothy, we aren't in Kansas anymore, and there isn't just one repository anymore. ;\^)
The JDK team has been using TeamWare (also a Distributed SCM like Mercurial) for a very long time, and the strategy adopted involves having different teams (usually based on functionality) push changes through specific team areas rather than everyone integrating into one MASTER area. Each team can focus their testing on the changes their team is making, and also protect themselves from regressions made by other teams. It also allows for changes to be "baked" before being pushed into the MASTER area.
There is some overhead here, in that an assigned integrator for each team will need to periodically sync up or merge with the MASTER area, test the merge, and push the resulting merge up to the MASTER area. Sometimes this happens every few days, sometimes every week, and sometimes every two weeks. It depends on many factors. And some of these areas may not push directly to the MASTER area, it's up to the integrator and the team to decide if they want another ply on the wheel (so to speak). For example, the hotspot team has GC, Runtime, Compilers, and Serviceability areas (sometimes called baselines) that those hotspot teams push changes to, and those changes then get pushed to the hotspot area (sometime called "main" or "main/baseline").
And of course, all integrations to the MASTER area are done using a basic reservation model so that the merge and integration is not interrupted or complicated with someone else pushing changes to the MASTER area.
Hopefully this illustration will help.
Given any point in time, every one of these areas could be different in different ways, depends on how often the integrators sync up with the MASTER area. For the most part (with some exceptions) there is little overlap in the actual files changed in these areas, so often the merges are fairly simple, but they can get nasty. So if you need to talk to an integrator, remember, they don't get paid extra for being an integrator, so be nice. ;\^)
For anyone considering a change to the OpenJDK, I recommend they go to the OpenJDK email aliases and connect with the appropriate team for the change you are making.
Expect more details on this in the days ahead.