You are viewing robilad

Previous Entry | Next Entry

OpenJDK JCK


As Andy Roberts writes over on InfoQ, Sun has worked on their promise to make the compatibility tests for Java SE available to OpenJDK, and projects based on it in a substantial way. Tom Marble points to the new TCK license and in what's becoming a nice tradition, an extensive FAQ that goes with it.

Compatibility certification has always been a bit of a "holy grail" in the long race to ubiquitous, compatible, free software Java implementations, an implicit goal for a Kaffe/GNU Classpath combination and an explicit one for Apache Harmony, and an obvious thing to do for OpenJDK.

The test suite used for the Java SE certification, called JCK in the jargon, has always been licensed under a proprietary software license, like most other test suites in the JCP. So far there have been two major ways to get such proprietary test suites including the right to certify an implementation: by buying a license with support and all that, or by going through the JCP 'scholarship' (conditions apply, etc.), and getting a gratis license, support and all that. Proprietary software vendors pay, open source foundations get them gratis through the scholarship. Both 'classes' of test suite licensees get proprietary licenses for proprietary test suites, branding rights, etc.

The proprietary part didn't change with this announcement, unfortunately. What the new TCK license for OpenJDK changes significantly is that it adds another class of licensees for the JCK for OpenJDK and projects based off it, where the proprietary aspects of the license are much less onerous than with the other alternatives.

In comparison, it's several pages shorter than the TCK license the ASF has obtained through the JCP scholarship, and accordingly contains less legalese. It has kept the confidentiality requirements, although in a milder form : OpenJDK JCK licensees can freely talk about the secret sauce in the JCK among each other, and talking about one's use of the JCK to others seems is fine, too, as long as one's not talking about the secret sauce or making comparative claims about compatibility. It (rather obviously, as OpenJDK is under the GPL, and the GPL does not allow further restrictions) doesn't have any downstream 'field of use' restrictions on the certified binaries. It requires an implementation to be under the GPL, and to be significantly derived from OpenJDK.

Requiring the GPL for an implementation certified with the JCK released under this 'proprietary-light' license makes sense for Sun, as Rich Green explains. It's rather interesting to read the business model and ecosystem considerations behind the move. My choice quote would be:


So to be clear, anyone—yes, even Sun’s competitors—can use the Java GPL source code for anything—yes, even a fork—as long as they publish their modifications under the GPL—no other consideration required. They can use the TCK to prove to themselves and the community that their contributions do not alter the promise of compatibility. But access to the code, the tests and the ‘Java Compatible’ brand governed by any other OSS license is both outside of our pact with the community, and not in Sun’s best business interests.


While the OpenJDK license remains proprietary to avoid 'cheating' on the tests, it creates a competitive advantage for a class of free software Java implementations over their proprietary counterparts. That could be a similarly game changing move that the introduction of the JCP scholarship was.

But the primary, obvious target groups for the announcement are the OpenJDK project itself, projects building on OpenJDK like IcedTea, Linux distributions wanting to distribute OpenJDK builds with or without their own customizations like use of system's time zone data or build fixes, porting projects like gbenson's work on OpenJDK interpreter, and GPL licensed hybrid projects like twisti's work on making Cacao work with the OpenJDK class library. The interesting question is whether the OpenJDK license in its current form is adequate for those target groups.

I think that today's IRC session summary is a mildly positive overall impression, in my case partly because the license is not as restrictive as I would have feared after reading about various issues ASF had on the jcp-open mailing list. It appears to be a 'workable' compromise for the context of most current OpenJDK uses, provided that distributors can live with the restrictions on their own JCK use. We'll see how that works out when OpenJDK is free of encumbrances.

Anyway, enough about that. Looking forward, I would love to see an open source TCK license for Java 7, but I'm cynical enough to see that it won't happen as long as there is no concentrated push at the JCP to move the big Java vendors away from their old business model of tying in heavily protected proprietary TCKs with JSRs, to a more collaborative one, around free software RIs, TCKs, and all the other rather obvious things. It'll take getting a bunch of those companies to figure out they are better off with an ubiquitous, free software, verifiably compatible Java platform in the long run, rather than just one or two of them.

That is the really important battle to fight, in my opinion.