Re: Binary Compatible Versus Open Source Java
Posted: Apr 3, 2006 2:52 AM
> Among the many implementations, the RI
> is the one to look at when there's a question about what
> behavior is "standard." Even if someone starts with the
> Sun code, they still add their own changes to it, which
> makes it a different implementation in my mind.
Sure. I meant different to mean "completely different", rather than "partially different", i.e. independent vs. derived code. My bad, sorry for the confusion.
> They have
> to take that implementation back and have it pass the
> tests, don't they?
The SCSL has a TCK (i.e. the test suite) section. According to it, they need to pass the tests before they release a compatible release. Afaict, licensees get to judge on compatibility themselves, but need to pass their results on to Sun. It's self-certification with a honors system, afaict from it.
See http://java.sun.com/j2se/1.5.0/scsl_5.0-license.txt for details.
> What I mean by "like open source," is that with an open
> source project, you don't have multiple implementations of
> a standard, you just have one shared body of code. That
> contrasts with one shared standard, and multiple bodies of
> code that implement that standard. What I was trying to
> say is that you pointed out to me that there's a shared
> body of code (Sun's implementation of the Java runtime,
> which Sun of course uses and others license) that may play
> a part in Java's interoperability, in addition to the
> standard enforcement through conformance testing.
That depends. Take an open standard like XML, where you have dozens of open and closed source implementations. They may or may not share code, but yet manage to interoperate quite alright.
If you need to know if the one you want to use implements the standard faithfully, you can grab the test suite from W3C, no strings attached, and see if the claims of the vendor hold water.
You can't do that with Java, since you don't have access to the test suite, and the test suite license does not allow you to test other people's implementations. It's a funny system, designed to extract cash from licensing the brand.
> I don't understand what you mean by "Sun makes it
> impossible for a third party to verify how compatible
> these implementations are." Can't a third party just go to
> Sun, pay some sum, and have the tests run on their
No, not really. Up to 1.5, any certified as compatible implementation was forced to include proprietary software from Sun, which squarely ruled open source implementations out, since Sun's license infected other, independent code. That's 9 years during which Sun actively made it impossible to have an officially compatible open source implementation.
Eventually, Sun published the test suite under a "read only" license, that only allows reading the tests, but forbids actually compiling or using them to test an implementation.
The license is available at https://jck.dev.java.net/jck-read-only-license.txt Publishing the TCK under the "read only" license was a nice PR stunt for Graham Hamilton, but it was completely useless to anyone else.
After we've rattled Sun's chains for 9 years, since 1.5, it is now theorethically possible for a non-commercial author to get access to the J2SE test suite through the TCK scholarship. Noone has got one yet, I've applied and I'm working my way through the legal booby traps. Unfortunately, it's an NDA-ridden process itself, so I can't tell you much about it yet.
> Is the problem that the open source
> projects can't afford the money it costs to run the tests,
> or is it that their terms you would have to agree to even
> if they paid the testing fee would be incompatible with
> the open source license?
In general, the problem with most of Sun's Java technology licensing is that Sun can pull an SCO on you any time, as the agreements are very asymetrical.
Here is an example: You can see Apache's deal with Sun at http://jakarta.apache.org/site/jspa-position.html and note how shaky the whole thing is.
It almost blew up in their face when Sun's legal temporarily forced Apache Geronimo to include weird 'Notices from Sun Microsystems' on their web site, saying that the all derivative works of the open source Geronimo code must be recertified and re-licensed by Sun, which contradicts Apache Foundation's own license. I've explained that issue at http://www.advogato.org/person/robilad/diary.html?start=52
Eventually Sun's legal division stopped whatever it was up to, though.
> Or perhaps something else. I
> don't quite understand what the block is.
There are no test available with no strings attached, simply put. What you can get, you are not allowed to use. What you can beg for, I am not allowed to talk about what the block is.
I do think, though, that having to beg for access to a compatibility test suite under non-discriminatory terms flies in the face of the idea of Java as an open standard.