In his essay “Free But Shackled – The Java Trap,” free software advocate, developer and leader Richard Stallman said the following:
If you develop a Java program on Sun’s Java platform, you are liable to use Sun-only features without even noticing. By the time you find this out, you may have been using them for months, and redoing the work could take more months. You might say, “It’s too much work to start over.” Then your program will have fallen into the Java Trap; it will be unusable in the Free World.
In a video posted today to Sun’s website, he says:
The Java trap won’t exist anymore – it’ll be a thing of the past…
Sun has…with this contribution will have contributed more than any other company to the free software community in the form of software.
If the delta between those does not convince you that today’s news is a big, big deal I don’t know what will. What if I told you that the widely read and hugely popular Pamela Jones of GROKLAW says that “Truly, the world seems to be turning upside down?” I’ve had a difficult time communicating to the media just how big this news is to members of the free software community, the Java community, and a variety of open source communities. We’ve been discussing it a bit in #redmonk, and #open-source-java on irc.oftc.net is going beserk as I write this.
The implications of this announcement are wide ranging and numerous, so they certainly cannot all be addressed here. But given the importance, we’re happy to bring you our usual Q&A to help in some small way with your parsing of the news. Apologies in advance for aspects you’re looking for that are not covered here; feel free to remedy that via comment or email.
Q: How about the usual disclaimer?
A: Sun is a RedMonk client, as are a variety of other Java ecosystem players such as IBM. Companies offering products competing with Java, such as Zend, are also RedMonk clients. As for the announcement itself, we were given access to and provided feedback on some of the messaging around the announcement, but were not consulted on the license selection itself. I think that about covers it.
Q: And a quick recap of the news…?
A: Tim’s summed it up quite nicely, so I’ll just repost his short version:
“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.”
In short, Java’s been open sourced via the GPL.
Q: What’s your personal opinion on open source Java? Good thing? Bad thing?
A: This may surprise some people, but historically I’ve been against the notion of an open source Java. Not the concept, to be clear, but rather the logistics. My concern, like many of those internal to Sun that have resisted the efforts, has been compatibility. Back when Apache’s open source project Harmony was launched, in fact, I said:
I’ve become convinced over the years that Java’s principle and primary virtue has been compatability. Yes, some will cite the *ilities (scalability, reliability, etc) or security as their motivation for selecting Java, but overall I think Java’s attracted the crowd it has largely because of the compatability it offers. I’m not naive on the topic; I’ve spent enough time in the field to know that cross-platform compatability is a relative term (trying moving a large application from WebLogic to WebSphere and you’ll see what I mean), but overall I think portability is far better in Java than in the alternatives.
This is why – and this may surprise some people (certainly it surprised IBM when we discussed it at the time of their open letter to Sun last year) – I’m actually not in favor of an open source Java. Or to put it more clearly, I’m not in favor of an open source Java that risks in any way the compatability of the platform. Not because I’m not a fan of open source – I am, and not because I think Sun’s been a perfect steward – they’ve been good, but not great. It’s because open source offers the opportunity for forking, and while that’s been a manageable risk for projects like Linux (depending on how you see the overall distro compability), Java’s a different animal. Java’s a platform whose credibility rests on its ability to run code platform to platform, but a platform whose advocates are not always a.) on the same page or b.) content to wait for consensus building.
If a governance model is devised by which the compability of Java can be guaranteed while opening the source, I’d be first in line to support it. But I haven’t seen such a model put forward yet; the threat of “not being able to call it Java” has never impressed me as being all that intimidating an obstacle for vendors over a certain size and with certain motivations. No, I tend to agree with my colleague who used Winston Churchill’s line last year when comparing the JCP to democracy during a JavaOne panel, calling it “the worst form of governance, except all other forms of governance.”
But over time, that stance has been softening in the face of unrelenting support for the idea of an open source Java from a variety of quarters. In May, I acknowledged this, saying:
Well, a number of folks that I have great respect for have taken rather unambiguous stances in favor of open sourcing Java. These are not the kind of people that have little appreciation for the risks and threats inherent in such a move, but rather the type that understand that intimately. The most convincing of the arguments are coming from those that are closest to Sun; it’s not that an outsiders perspective, such as mine or Bob Sutor’s, is irrelevant; it’s more that those agitating for an open source Java within Sun are facing greater risks, and therefore their actions on its behalf carry more weight…
Much as I might take exception to individual aspects of their various arguments, I’d be foolish not to recognize that a.) they’re all smart people, b.) they know Java, and c.) they’ve got Java’s (and in most cases, Sun’s) best interests at heart. Thus I’m not backing off on my analysis, and I maintain that the risks to an open source Java are real, but perhaps they can be mitigated under the right circumstances. Either way, I’m sure we’re going to find out.
Where am I today? Still concerned for compatibility, certainly, but guardedly optimistic that the obvious tactical advantages that open source affords in terms of distribution will not be undercut by strategically dangerous forks. It’s also possible, as Ian has argued in the past, that the lack of an open source Java is causing rather than preventing forks. So for the time being, I can probably be thrown into the “good news” bucket. If it weren’t for my ongoing concerns around forks, it’d be a no brainer given the reactions that I’m seeing thus far, but as is is looking quite good.
Now that Java’s established itself beyond a doubt, it’s time to take the next step, to utterly obliterate the barriers to entry for developers around the world seeking to build the next great device, or the next great internet service.
This move, to me, is about volume and ubiquity, plain and simple. There are other benefits to be sure – PR and community perceptions among them – but the single most important aspect of this announcement is the removal of barriers to entry.
Q: What does that mean, practically speaking? What changes w/ an open source Java?
A: Distribution, for one. Take hosting providers, as an example. Back in February I considered the question of whether or not Java was ubiquitous by looking at whether or not large hosting providers offered Java by default on their hosting packages – as they did with PHP. For 1and1, GoDaddy and Rackspace, at least, the answer was no. There are a variety of reasons for this, but the licensing restrictions that prevent most Linux distributions from shipping Java are undoubtedly a major factor.
Today? Those restrictions are gone, and Linux distributions – if they choose to – can make Java a default part of the platform. Back in June of 2004, I asked how important Linux was to Java: today the answer was made clear – very.
Interestingly, I expect the ripple effects to be felt not just on Java itself, but applications that run on top of it. Shortly after News.com quoted Simon as saying [of open source Java], “I’m not sure it changes very much of your life” I happened to be speaking with a developer in #redmonk who indicated that were Java to go open source, he’d be open to running Zimbra whereas now he would not. The reason? The lack of Java in the Debian based stack they ran off of.
As Java propagates, I expect we’ll hear more stories like that.
Q: Why now? Why do you think Java was open sourced today – any relation to recent news?
A: Well, by recent news I’ll assume you mean the Microsoft/Novell partnership that *still* has people talking. Jonathan alludes to this, saying that “one of the strongest motivations to select the GPL was the announcement made last week by Novell and Microsoft, suggesting that free and open source software wasn’t safe unless a royalty was being paid.”
There are two parts to that question: a.) is the open sourcing of Java influenced by recent events or b.) is the license selection influenced by recent events. I’m not sure that I can really answer b except to say that there have been GPL advocates for Java for quite some time, and I’m quite sure that Sun didn’t pick the GPL strictly for the purposes of counterbalancing the Microsoft/Novell alliance. The answer to the first part of the question, a, is much simpler: this has been in the works for a long, long time. There were folks in the #open-source-java channel this morning that had been championing, agitating for or otherwise working on this announcement for years – close to a decade, in some cases. So no, I don’t believe this announcement is a reaction to any particular recent events, although it does have an impact on some of the parties involved.
Q: Why did it take so long for Java to be open sourced?
A: Well, thanks to Jeff‘s very kind transcription efforts for those of us who didn’t want to chance having their Linux client taken down by Second Life’s very alpha client for that platform, I’m told that Simon fielded just this question by answering that Sun’s primary responsibility was to not screw up the 6 million Java developers. He also, I gather, gave a longer answer drawing on some of this history here.
From where I sit, there were two basic obstacles:
- Recognizing the need for an open source Java
- Once that’s done, determining how to do it safely
While one of those problems may seem trivial to you, the truth is that neither was. Addressing those in combination was the effort of years (just talk to the people involved – starting with Danese), and frankly there is much work yet remaining.
The simple fact here is that open sourcing a piece of code for the first time is difficult; tremendously so. Particularly one as complicated as Java. It is done neither on a whim nor overnight. Plus there’s the politics.
Q: What do you mean by politics?
A: Well, Tim rather obliquely refers to it in his piece with the following:
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.
I can go a bit further while still respecting the confidentality of my relationships by saying that there was an active anti-open source faction with very senior representation. Some of the folks opposing today’s announcement are gone, some of them are still there, but suffice it to say that when Danese says that there are those within Sun that have risked their jobs over open sourcing Java it’s not hyperbole: it’s fact. Sun, like any large company, has its internal factions – more than some, less than others – and as recent events have demonstrated quite successfully there is nothing as successfully polarizing to a software firm as open source. While this day represents a victory to those that have championed the idea of an open source Java, it should not be forgotten that it was not achieved without cost or effort. Or collateral damage, for that matter.
Q: What do you personally think of the selection of the GPL, as opposed to an Apache style license or the MPL derived CDDL?
A: I think it’s the best choice that Sun could have made, all things considered. Look at it from their perspective: BSD? Too easy to fork? CDDL? We’ll get killed PR-wise. What’s left amongst mainstream licenses?
Sun, you have to understand, was faced with the uncomfortable reality that whichever license they picked would make someone unhappy.
And while I’m certainly not a GPL bigot, I think in this case it was the best choice. Even if, as Ryan points out, the GPL was actually produced in response to a dispute between Gosling and Stallman. Not necessarily because it governs Linux, or because it’s popular (as evidenced by the near 70% of projects using it on Sourceforge), but because it acts to inhibit forks. It doesn’t prevent forks, as some have claimed (just ask Red Hat). Its reciprocal nature, however – the provision that says that derivative works must be released under the same terms – disincent potential forks in a way that will hopefully prove manageable. It’ll all come down the Java brand strength and compatibility promise, ultimately – that’s all that’s holding back the tide of forked, dissimilar Java platforms. Well, that and the threat of trademark infringement should you apply the Java brandname to non-TCKed code.
Are there reasons to prefer other licenses, such as more permissive Apache/BSD variants? Certainly. IBM would certainly seem to have preferred that, as would some other intelligent folks. But given that my concern is and always has been compatibility, the GPL seems the appropriate choice. It is what I would have advised, had I been asked. My reasoning would have been simple: if you have to pick between enterprise/vendor preferences (BSD) and developer preferences (GPL), I’m going to pick the latter (yes, I’m aware that this is a gross generalization and that many developers – Apache ones in particular – prefer non-GPL licenses, but the Sourceforge #’s are fairly convincing). If you don’t make the developers happy, the enterprises and ecosystem vendors aren’t going to matter a whole lot. Mike’s prediction might have been wrong, but his reasoning was sound: if Sun had CDDL’d Java it’s my opinion that Sun would have been hammered for it – fairly or unfairly.
Q: What’s the “classpath exception” provision? What does that mean in practical terms?
A: Cote’s already fielded that one, see here:
That is, the new open sourced Java is still fine to use if you’re shipping and selling closed source code. Even “better,” Sun is dual licensing the code so you can still get and distribute Java under the “old,” commercial terms.
The net effect of all this license dancing is that commercial companies using Java shouldn’t need to freak out about the 3 letters “GPL.” I wanted to make sure to call this out because I know many “closed source” people have a negative view of using GPL regardless of whether those perception are warranted.
Q: Speaking of the TCK, how’s this going to work? What gets to be called Java? Who gets access to the TCK?
A: Well, herein lies one potential issue – at least to my current understanding. It’s all well and good that Java is open sourced, and it’s also necessary that Sun absolutely maintain compatability, but as far I know at the moment Java will be open source but the TCK will be neither open source nor free. Meaning that would be implementations of Java will have to acquire access to the TCK test suite before branding themselves as Java. I don’t think this is a huge issue because there are apparently scholarships available, and I haven’t seen many complain about this yet, but it did strike me as a bit incongruous when I first saw the messaging.
Q: What impact does this have on the JCP?
A: Well, I’m not quite sure yet. I’ve been told by multiple Sun folks that this doesn’t change the role of the JCP moving forward, but I’m not quite sure I believe that. Here’s why: with Java open source, the only real obstacle to producing an alternate implementation of the platform – with features that were never JCP designed nor approved – is the TCK. In other words, you can take the official JCP approved group of specifications, add your own special features or functions, and provided that you pass the TCK may call it Java Compatible or Java Powered depending on your commercial / open source status and licensing agreement. Ultimately, the JCP will remain important as the requirements central trunk, as it were, but I’m not convinced that the open sourcing of Java has no impact on the JCP. Far from it, in fact.
Q: Who does this affect?
A: Ah, that’s the $64,000 question, and to my way of thinking it all comes down to whether or not you consider the announcement additive, as my colleague put it, or if you believe that languages and platforms are a zero sum game.
Depending on who you’ve been listening to today, you might hear that anyone from C#/Mono to PHP to Ruby is doomed, or niched, or hamstrung. Personally, I call BS on that. Just as I did when claims were made that J2EE was doomed. Setting aside the fact that many of the technologies involved are good at different things, have very different install bases, not to mention communities that are not inclined to migrate en masse simply because something’s been open sourced (or do you think that Beagle, F-Spot, Tomboy, et al will be rewritten in Java tomorrow?), my primary difficulty with that line of thinking is that languages don’t tend to be a zero sum game. Miguel says it beautifully, I think, in a very gracious congratulatory note:
Also, from reading Slashdot today I get the impression that there is too much of zero-sum mindset, a feeling that those of us in the Mono community would not be happy about this development, which is nonsense. We are after all, free software developers. Maybe this is based on the assumption that we are competing for the same contributors, and hence a fear of scarcity prevails. I like to think that although there is some overlap, our communities are vastly different.
Will Java pick up some developers as a result of this move? Undoubtedly – I’ve already seen a couple of promises to that effect. Will some of these Java developers come from other, competing communities? Sure. But have the reasons for adopting, say, PHP over Java changed materially as a result of this announcement? No.
Paraphrasing from my simplistic economic model, I’d say that the news is great for folks that will use or might use Java, but that there are a hell of a lot of people that will never use Java for a variety of reasons.
Over time, this announcement will undoubtedly improve Java’s competitive footing with respect to language adoption and uptake, but I think it’s far too early to say that Java’s running away with the game. The problems it has as a platform remain, and open source is no panacea for some of the issues that the platform brings with it.
Q: Who are the winners here?
A: Sun, most obviously. The euphoria that I’ve been seeing on the part of even the non-Sun communities is surprising even given the gravity of the announcement, and Sun appears to be receiving a massive windfall of goodwill. When PJ and Stallman more or less pull a 180 in terms of their perceptions of you, it’s bound to give you a bit of a positive bump in the various communities. How sustainable this goodwill will be over the longer term will depend in large part on how the governance challenges are handled, but for now this is as happy as I’ve ever seen the the various communities with Sun.
Java developers, potential Java developers, and Java application users win here also, as the restrictions that have prevented them from using the platform as easily as they might have liked are now removed.
The Linux distributions also stand to benefit, as they gain simplified access to a proven enterprise platform under the same license terms that they themselves use. Ryan puts it best, saying, “I know with absolute certainty that it was a big deal for Sun and it will surely have an impact on many Linux and BSD distributions.”
Q: And the losers?
A: Well, not to go all kumbaya on you but apart from Java being more competitive I don’t see too many outright losers here, at least in the short term. I’m sure that there are a host of commercial entities that would have preferred any license but the GPL, but in time I think they’ll learn to live with it just as they have with Linux.
Q: What about projects like Harmony? Don’t they stand to lose?
A: Well, inasmuch as part of the reason they exist was to provide an open source Java I think it’s actually more accurate to say that they’ve won. They kept pressure on Sun to keep the open source ball rolling, even during times when its priority could have slipped. In terms of how the logistics of the various open source Java projects will relate to one another, I think it’s too early to say although I was very encouraged by the tone from the early conversations on #open-source-java. Very collaborative, a lot of “let’s work together” and so on. Good news indeed.
As for Harmony specifically, my understanding – and this was confirmed during the Q&A from what I hear – is that the GPL will allow one way code contributions from Harmony to the newly open sourced codebase, just not the reverse. GPL code cannot be ported back to Apache style due to their reciprocal nature.
Q: What’s left for Sun to do – you mentioned there was a lot yet to be accomplished?
Q: Well, there’s the full code drop, of course, and there are a variety of encumbrances around the 2D and font rendering bits which will have to be addressed. From the sheer variety of ideas (Pango, Cairo and so on) being batted around earlier today, I’m pretty confident they’ll be satisfactorily addressed in a reasonable timeframe.
But the biggie for me and some other folks is the governance model. This was touched on, I understand, in the Second Life chat and if I had one request – and actually, I suppose I have had the chance for input – it would be for the swift inclusion of outside committers. The sooner Java becomes a more diverse body with representation from multiple parties (again, from a committer standpoint – I’m aware that the JCP is in fact quite diverse), the less chance there will be of damaging forks. It’ll be very interesting to see what kind of model they pursue, as Java is a very unique entity.
Q: Any complaints?
A: Well, it may seem like a nit but the Sun folks need to be careful not to use interchangeably “free software” and “open source software” because they are not the same thing. As Tim said earlier today, the good news is that Java is both, but the free software people in particular are very sensitive to being grouped with those that are less committed to their ideals.
I’m also not a huge fan of the Second Life based events mainly because they don’t have a client that works well on my platform (Ubuntu), but I’m sure I’m in the minority there so I can’t complain too seriously (and at least there is a Linux client, unlike most of the webcast platforms people use). Andy also tells me that the latest SL Linux alpha is a bit less tempermental, so maybe this will be a non-issue in the not too distant future.
Q: Anything else to add?
A: Well, kudos to the Sun folks for their hard work here, of course, but I doubt they’ll hear my little thanks amidst the sea of thank you’s they’re receiving right now.
But I’d really like to express my sincere appreciation for the folks that participated in the #redmonk discussion earlier today. I don’t know about them, but I learned a lot. Whether it was Jeff chiming in with Gnome thoughts and impressions or helpfully transcripting the Second Life press conference, Dalibor speaking as an acknowledged expert on the intricasies of some of technical details, or Mark giving us the subtext and background to better understand the day’s news, today was a perfect example of why our new slogan is “Analysis for the People, By the People.” Whatever successes we have are attributable in no small part to your contributions, your participation, and your support. So on behalf of my colleagues and myself, I thank you.
On a totally different note, I highly recommend checking out Jeff’s version of the announcement. Comedy. Would have run the piece with it – I had Jeff’s permission – but I can’t afford to clog up my inbox with a bunch of emails telling me that the graphic had spelling errors. So it’s merely a link.