Forward to the Past: Toward OpenJDK 6
By darcy on Aug 28, 2007
Previously, Sun has committed to providing an open source implementation of Java SE 6 in addition the already open sourced and in-progress JDK 7. Inside Sun, I've been busy leading up efforts to figure out a good way to do this.
The current plan is go "forward to the past" by starting with a near future build of JDK 7 and creating a backward branch that removes the changes inappropriate for a Java SE 6 implementation. The resulting code will be under the same GPLv2 license as JDK 7. Besides directly reusing all the (painful!) legalistic code audits for encumbrances and the like already done for the JDK 7 code, this approach also takes advantage of the forthcoming workspace restructuring and Mercurial transition Kelly is working on as well as the new binary plug architecture. If all goes according to plan, this new 6-from-7 workspace will seed an initial Mercurial repository for OpenJDK 6 and a change set can be computed to generate a current JDK 7 source base, letting the future OpenJDK 7 Mercurial repository to be retcon derivative of 6. Therefore, to fit into the present Mercurial schedule, the OpenJDK 6 repository will need to exist in some fashion in the next few months.
To avoid interfering with Consumer JRE and other in-flight work, at least Sun's next few 6 update releases will continue to be based on the current closed source workspaces and not on the new open 6 repository. Whether or not Sun's update train will switch over to the new open code base is yet to be determined. There would certainly be advantages to having the our source trains for the two most active releases having the same source code management system and build structure. However, the needs of a nimble open release and a stable update release may be sufficiently different that it makes sense to keep them separated. When will the update releases ship? That isn't for me to say, although big features tend to be available in time for a certain conference in the spring.
The initial deliverable for OpenJDK 6 will be buildable Mercurial repositories that pass JCK 6a when using Sun's binary plugs. We plan to have these available later this calender year.
Besides various internal technical and process details to be worked out, there are interesting questions about governance and managing bug fixing still to be determined for OpenJDK. I look forward to working with the wider community to help resolve those too!