When I took the job at Sun in early 2004, I had a long talk with John Fowler, about this blog among other things. John said: “You might end up happier if you don’t blog about open-sourcing Java.” That was then. Today’s story is simple: Unmodified GPL2 for our SE, ME, and EE code. GPL2 + Classpath exception for the SE libraries. Javac and HotSpot and JavaHelp code drops today. The libraries to follow, with pain expected fighting through the encumbrances. Governance TBD, but external committers are a design goal. No short-term changes in the TCK or JCP. There are a ton of presentations and an (excellent) FAQ and so on, all to show up at sun.com/opensource/java sometime in the next few hours. I wanted to add a couple of remarks on areas that stuff doesn’t highlight.
Why Free? · I’m committed to Open Source but not generally a member of the Free Software movement. For Java, though, it’s the only thing that makes sense. It’s been given away freely for so long, and it’s worked its way into so many places, that it should belong to the community, and if anyone figures out how to make it better, they should just bloody well give that discovery back. So for my money, the GPL’s the only sane choice.
History · There’s a lot of it, and I don’t know it, and I like it that way. I’ve had a few people say things like “I’ll never forgive Sun for what [name deleted] said in 1998” or “The liaison from [company deleted] were lying bastards and only in it to rape us.” And so on. Well, it’s history, it’s water under the bridge, forget it!
And I bet that nobody else will talk about this, so I will: there was internal resistance, and it was passionate. I disagreed, but I have a lot of respect for those people; they had good arguments that we need to keep carefully in mind, going forward. There are people who are bruised and hurting now and really unsure that this is the right path. I totally hope that, in a couple of years, this will be a tempest in a teapot, seen in the rear-view mirror, and that we’re still all on the same team.
Forks · The FAQs argue that the risk of forking under the GPL is low; the Free Software and OSS communities don’t want to; and given the massive installed base of compatible Java, nobody seems likely to try a repeat of the Microsoft shenanigans that we went to court over.
But I think there’ll be lots of forks, and I approve. I suspect that basement hackers and university CompSci departments and other unexpected parties will take the Java source, hack groovy improvements into it, compile it, and want to give it to the world. They’ll discover that getting their creation blessed as “Java” requires running the TCK/trademark gauntlet, which isn’t groovy at all. So they’ll think of a clever name for it and publish anyhow.
Which is terrific. I see no downside, and I see huge upside in that the Java mainstream can watch this kind of stuff and (because of the GPL) adopt it if it’s good, and make things better for everybody.
Remember: However many forks there are, it ain’t Java unless it’s called “Java” or has the coffee-cup on it. If it has the name and cup, it is Java and it’s compatible. And Sun will absolutely enforce that in court if we have to. We have in the past and we will again.
TCK · What to do about the TCK code? Its status is still TBD, and is going to take some careful thought. Right now, the TCK is like the road test that you have to pass to get your driver’s license. It’s a hugely important piece of the Java compatibility story. It has to maintain its integrity and it has to be perceived as maintaining its integrity. So, what’s the right licensing structure to achieve that? Beats me.
Long Term? · Anyone who tries to predict the long-term future effects of Free Java is braver than me. I have one concrete hope: that the people working on the GNU/Linux desktop can be unshackled from the tyranny of C++. Aside from that, who knows? Freedom is scary; but on balance I think Java’s new path will be more interesting and more profitable and more fun.