Years from now, today may -- just possibly -- be known as the day Java opened up.
As some of you may know, I'm the Apache Software Foundation representative to the Java Community Process (JCP). What that means is that over the past year and a half I've been engaged in an ongoing effort to open up the JCP and fix several of the crazy restrictions stopping open source implementations of Java standards (JSRs). It's true Apache hosts many projects that implement JSRs (Tomcat for Servlets/JSPs, Xerces and Crimson for JAXP, Axis for JAX-RPC, etc) and often with Sun's support. But the legal terms have always been shades of gray and, to be honest, closer to black than white.
Back in January and early February, I wrote and Apache published a JSPA Position Paper enumerating four points seen as critical to Apache's support and continued participation in the Java Community Process.
Apache set JavaOne as the deadline for the issues to be addressed. This was further reinforced by the passing of an Apache board resolution which mandated that Apache would stop its implementations of JSRs where open source implementations were not clearly allowed (a special Apache waiver would not suffice, it was all open source groups or jettison the project).
Over the last several weeks, my time has been spent in discussions with Sun about how to address Apache's requirements, and also with Apache members in an attempt to fully specify our collective requirements. Apache operates like a democracy and although everyone agreed change had to happen, consensus had to be built regarding the style and extent of that change.
All this time both Apache and Sun were unsure if there was any middle ground where the two could meet. I would have laid even odds.
This week, the last week before JavaOne, discussions reached a fevered pitch going all hours of the day. It's an odd experience being awakened in the early morning by a call from a Sun Vice President. It's even more odd when you're not surprised...
Two nights ago on Wednesday came the show-down. Members from Apache and Sun teleconferenced together to discuss a Sun proposal for change. Everyone seemed nervous. The roles were set. Apache had to be on solid legal ground to continue supporting the JCP. Sun had to find ways to legally allow open source Java implementations without abandoning compatibility.
When the call concluded two hours later, I remember one Apache person asked another: "Am I crazy or did we get what we needed?" I'm told Sun people asked each other the same thing: "Are we crazy or did they seem satisfied?" Middle ground appeared to have been found. Yet everyone was -- and still is -- waiting for the other shoe to drop. Some of these issues had been fought about for years!
This noon the action became public when Sun posted their letter of intent, perhaps more appropriately called a pledge, to the JCP.org website. The news item doesn't receive high billing, but that belies its importance and the work that went on behind it for both groups.
The letter of intent says Sun will do the following:
In addition, Sun has proposed changes to the legal agreement signed when joining the JCP, known as the JSPA, and has sent these changes for review to the Sun-led committee working on the revision. The goal is for the JSPA, when it's finalized and signed by members, to legally require this level of openness across all JSRs. Furthermore, the JSPA will explictly allow open source reference implementations and test compatability kits, as well as more public involvement in the development of JSRs where it makes sense.
The terms looks good, albeit non-binding. So don't for a second think this is over. Apache will be carefully watching if Sun honors its word, and if Sun doesn't, there won't be another large behind the scenes fight -- Apache will just bug out knowing it had given things its best effort.
For myself, step one will be to see what Sun says of this at JavaOne. A Friday posting to a second-level page on jcp.org is about the quietest official release Sun could give. If Sun was serious, you'd think they'd want to say so a little more publicly. JavaOne next week should be interesting. What's accomplished within the 90 day window should be even more interesting. Stay tuned.