Apache Software Foundation member Stephen Coleborne, speaking personally, quite rightly took me to task on my post from last week about the long-standing beef with Sun that led to the ASF's no vote on Java EE 6. Basically, I misunderstood exactly what the dispute was about; my excuse is that the real germ of dispute on this has been actively hidden from view by the participants. As Coleborne put it, "Many people think this is some minor, esoteric discussion of no importance. They couldn't be more wrong, but since the rest of the information in this dispute is private, I can't tell you why."
This led me on a bit of a treasure hunt to see if I could do a better job of explaining things. The best primary source documents are the open letter the ASF's Geir Magnusson wrote to Sun in 2007, and, even more illuminating, the accompanying FAQ. (The comments to this post on Magnusson's blog are also instructive.) As I noted yesterday, the ultimate dispute lies in the compatibility kit Sun offered the ASF for Apache Harmony. This kit is a technical framework that determines whether a specific implementation of some Java-related technology meets the standard laid out in the relevant JSR. But that's not all it is; it's also legal document that, if you pass, offers you the right, within the context of your implementation, to use the intellectually property contributed to the JSR standard by everyone who worked on that JSR.
The problem arose when Apache refused to accept the compatibility kit it was offered for its Harmony project, which is an implementation of Java SE, because it would limit the fields of use in which end users would be able to deploy Harmony. Apache says that such field of use restrictions are specifically forbidden by Sun's own rules for the JCP. And here's where it gets murky, because it's next to impossible to find information on exactly what the restrictions in this particular case entail, which I assume means that this is the private information to which Coleborne refers. The closest you get to an explanation is this excerpt from Apache's FAQ on the matter:
To give a concrete example from the Sun / Apache dispute, if Apache accepted Sun's terms, then users of a standard, tested build of Apache Harmony for Linux on a standard general purpose x86-based computer (for example, a Dell desktop) would be prevented from freely using that software and that hardware in any application where the computer was placed in an enclosed cabinet, like an information kiosk at a shopping mall, or an X-ray machine at an airport.
My first reaction to this -- which was the first bit of concrete information I had found after much pussyfooting around by all concerned -- was profound befuddlement. I had expected sweeping and squishy language restricting whole categories of potential use; this seemed like a painfully petty thing that couldn't possibly have held things up for so long. I thought about my own old tower computer, which sat in a little cabinet in my Ikea desk. Would I be either in violation or compliance of the terms of this agreement depending on whether the door was open or closed? Upon reflection, I imagine that this example is really Apache extrapolating some vague clause in the compatibility kit to an absurd conclusion. Just because it's absurd doesn't mean it isn't true, mind you, but it's in the ASF's interest to make the proposed restrictions sound as silly and arbitrary as possible.
Anyway, as you may have noticed, this dispute is over Harmony, an implementation of Java SE -- and yet the reason I'm going on about it at such length is that Apache voted no on the Java EE standard. As I read it, Apache is simply using this high-profile vote to draw attention to this dispute, which obviously matters a great deal to the ASF and yet hasn't been widely reported of late. (I was shocked to find that my own blog post from last week was the #4 Google hit for "apache harmony dispute.") In that sense, the move may have been productive, at least in terms of the quite specific audience that's important here; both Red Hat and IBM accompanied their "Yes" votes on the standard with caveats criticizing field of use restrictions in the JCP in general.
And Apache isn't being obstructionist in its larger participation with the Java Community Process; it even won the JCP Member Of The Year Award at 2008's JavaOne. I'm assuming that the Java EE 6 standard that was approved reflects Apache's contributions, even though they ultimately voted no on it. In a weird way, I'm reminded of Congressman Ron Paul, who gained a certain amount of notoriety with his quixotic run for the Republican presidential nomination last year. Paul, a libertarian who thinks that virtually everything the federal government does today lies outside the bounds of the constitution, is famous for voting "no" on nearly every piece of legislation that comes to the floor of the House of Representatives. But he works in committees to make sure that the budget bills he votes down contain earmarked spending that benefits his home district; he votes "no" on these bills, safe in the knowledge that they'll pass. I'd be very interested in seeing how the ASF would approach a vote that was actually close.