OpenJDK 6 is an implementation of theJava SE 6specification valuing stability, compatibility, and security.Various binaries derived from OpenJDK 6 sources have passed theJava SE 6 Test Compatibility Kit (TCK) suite, including packagesforFedora 9andUbuntu 9.04.
As an implementation of the Java SE 6 specification, all changesto OpenJDK 6 must be allowable within that specification. Thisrequirement precludes many API changes. Acceptable API changesinclude those permitted by theendorsedstandards mechanism, such as upgrading to a newer version of astandalone technology, like a component JSR. One example of such anAPI change was theupgrade of JAX-WS from2.0 to 2.1 in OpenJDK 6 build b06.
Changes allowable within the Java SE 6 specification may stillbe rejected for inclusion in OpenJDK 6 if thebehavioralcompatibility risk is judged as too large. Behavioralcompatibility concerns implementation properties of the JDK.Clients of the JDK can knowingly or unknowingly come to rely uponimplementation-specification behaviors not guaranteed by thespecification and care should be taken to not break suchapplications needlessly. In contrast, if a change is appropriatefor every other JDK release train, it is generally appropriate forOpenJDK 6 too. Examples of such universal changes include securityfixes and time zone information updates.
With the above caveats, bug fixes in JDK 7 that do not involvespecification changes have presumptive validity for OpenJDK 6. Thatis, by default such fixes are assumed to be applicable to OpenJDK6, especially if having "soaked" in JDK 7 for a time withoutincident. On a related point, the fixes from the stabilized HotSpotforests (for exampleHotSpot Express14 orHotSpot Express16) are suitable for bulk porting to theOpenJDK 6 HotSpotrepository without review of individual bugs.
As a general guideline, if a change is applicable to both JDK 7and OpenJDK 6, the change should be made in JDK 7 no later than thechange is made in OpenJDK 6.
With the exception of security fixes, all OpenJDK 6 code reviewtraffic should be sent tojdk6-dev@openjdk.java.netfor consideration before a commit occurs.
All fixes require the approval of the release manager and mayrequire additional technical review and approval at the discretionof the release manager. Security fixes are first kept confidentialand applied to a private forest before being pushed to the publicforest as part of the general synchronized publication of the fixto effected JDK release trains.
Since there is only a single master OpenJDK 6 forest, near theend of a build period the release manager may defer otherwiseacceptable changes to the start of the next build.
The complete release process is documented in the fileReleaseProcess.html in the source repositories.
The schedule to tag builds of OpenJDK 6 is on an as-neededbasis. The timing and feature list of a build is coordinated on thejdk6-dev alias with theIcedTea 6project, a downstream client of OpenJDK 6. Before a build istagged, regression and other testing is performed to verify thequality of the build.
For OpenJDK 6, you can use the Oracle-internal bug id (if youhave one) or a bug id from theOpenJDK 6 bug trackerto push a changeset. If you are using the bug id from the OpenJDK 6bug tracker, please use the complete "issue id" that the OpenJDK 6tracker creates: For example,OPENJDK6-42
instead ofjust42
.
For OpenJDK 6, both of these are lines are acceptable as validbug id lines:
1234567: NPE thrown on FileInputStream("")
OPENJDK6-1234: NPE thrown on FileInputStream("")
If you are backporting a changeset from jdk7, jdk7u or jdk8,using the original Oracle bug id is preferred, since it makestracking changes easier.
The OpenJDK 6 code base is distinct from the code base for JDK 7and the 6 update train. As shown in the diagram below, the originalJDK 6 code base begat two lines of heirs: JDK 7 and the sequence of6 update releases. The decision to open source the JDK code basecame late in the life cycle of the development of JDK 6 so a buildof JDK 7 was the first to be published as open source. By the timeJDK 7 was published as OpenJDK 7, the first post-GA update to JDK6, 6u1, had already shipped. Work continued in both the OpenJDK 7and 6 update trains. However, an open source implementation of theJava SE 6 specification was needed as well. After considering thealternatives, OpenJDK 7 build 20 was chosen as the basis of abackwardbranch to create OpenJDK 6 by removing from the OpenJDK 7sources changes inappropriate for a Java SE 6 implementation. Sincethen, all three trains, 6 update, OpenJDK 7, and OpenJDK 6, havecontinued evolving, with certain fixes being applied to or portedbetween the releases. Security fixes are applied to all releasetrains.