Oracle has been making what seem to some as drastic changes in the way it handles the open source projects it inherited from Sun Microsystems. The open source community has watched with anything from bemusement to outright shock at some of the actions Oracle has taken without apparent rhyme or reason. But if you look close enough, the reason will usually make itself clear soon enough.
Last Thursday, Jaroslav Tulach, NetBeans Platform Architect for Oracle, posted a public message on the JUnit Yahoo! groups that asked the JUnit developers to consider switching from testing framework's current Common Public License to something that would be more compatible with the rest of the NetBeans IDE.
"We have new lawyers. Our new lawyers seem to be concerned about the JUnit license. True, JUnit's use of Common Public License is unique and sort of archaic. I don't know about any other (important) project using this license anymore," Tulach wrote.
If you read the entire note to the JUnit team, Tulach doesn't really come across as threatening or intimidating in any way. If anything, he seems a bit sheepish to have to come to the developers of an essential part of NetBeans (and any important Java development) and ask them to make the change.
He did, unfortunately, lay it out for the JUnit team: because of the CPL's incompatibility with NetBeans, Oracle's lawyers were concerned enough to pull JUnit from NetBeans unless JUnit would move to a more modern license, like the Eclipse Public License. The EPL is widely regarded as the natural successor to the CPL, particularly after the Eclipse Foundation retired the CPL in 2009.
"Right now we are holding our release and getting ready to remove JUnit from our standard installation. Silly, I know, JUnit is necessary part of any serious Java development, but there is not much we can do," Tulach continued, again, with that slightly embarrassed tone.
The solution for Tulach, on behalf of Oracle and the "about 800,000 active users of NetBeans IDE," was straightforward: change the license from CPL to EPL.
I contacted one of the key JUnit developers, David Saff, about the request last week, and was encouraged by the brief reply. Saff informed me that the JUnit team was very busy at present, and they would try to get some sort of answer to Tulach and Oracle as soon as they could. I got the sense that Saff was still in discovery mode, and not trying to evade the question.
Nor was Kent Beck, one of JUnit's founders, who directly replied to Tulach in the same Yahoo! message thread.
"Thank you for the message. It is not practical to change the license for JUnit because of the difficult of identifying and notifying contributors. Commercial licenses are available and have been sold through Three Rivers Consulting, Inc. [Beck's employer] with terms crafted to meet your needs. Please have your lawyers contact me for details," Beck wrote.
The tone of all of these conversations sounds like everyone is pretty cool with working through this issue, which is a nice change from other recent Oracle interactions with open source projects. I think everyone at Oracle who interfaces with open source projects should take a lesson from Tulach's approach. He recognized that something important needed to be changed, but he didn't come in with all guns blazing and demand that this will be done and that will be done or else your project shalt be excommunicated.
What is Oracle's problem with the CPL license? Likely the clause in Section 7 of the CPL that the Eclipse Foundation dropped when they succeeded the CPL with the EPL:
"If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient’s patent(s), then such Recipient’s rights granted under Section 2(b) shall terminate as of the date such litigation is filed."
Sentence one, which I emphasized above, was dropped for the EPL. The anti-patent clause was clearly not amenable to Oracle's business plan, since this is essentially a patent land mine: if the software holder sues a contributor, then any patent licenses going the other way (from the contributor to the software owner) would be rendered null. Think of it as mutual assured destruction.
That this was Oracle's beef is not speculation--Tulach confirmed it when he replied to Beck's initial response: "I am glad we have an option to pay for a better license, especially one without the patent clause."
As the JUnit figures out what to do next, it was enlightening to see this change, because it gives a glimpse of what's going on at Oracle. There are teams of lawyers going through all of the open source projects and making sure Oracle is as protected as possible. In some cases, such as this one I think, the outcome will be mutually agreed upon. But for others, like Hudson/Jenkins and OpenOffice.org/LibreOffice, Oracle's intransigence seems to be contributing to project forking.
Which, while a PR bump in the road, still gives Oracle what it wants: all its legal ducks in a row.