Skip to content

GPL'ed Java

First off, as a disclaimer, Sun is a client. More importantly to my biases, actually, is that I’m a Java developer. I like Java, quite a lot actually. So, take those disclaimer as grains of salt in all of this.

In Summary

Sun announced much more in the ongoing open sourcing Java effort this morning, namely providing the majority of the source code under the GPLv2 license starting today.

They’re still not “done” open sourcing Java, but, to be fair, they’ve now done much of the work. There’s still some encumbered code that they can’t open source; this means that people other than Sun hold the copyright and those third parties and Sun haven’t figured out what to do with that code in with open source Java. My understanding is that the majority of this code are graphics and rendering things.

This news covers Java SE, ME, and Glassfish (Sun’s Java EE 5 implementation). That said, most of the focus here and elsewhere will be on SE as that’s usually what people mean when they say “Java.”

Hah…and they’ve also open sourced Duke under the BSD license


First off, though I’m not a lawyer, the following is my understanding. To clarify, Sun has selected the GPLv2+Exception license for Java, at least for the libraries in the JDK [looking at the FAQ again, I’m not clear if the GPLv2+Exception applies to “all” of Java, or just the libraries; I’ll have to clear that up]. This means that if you use the GPLv2+Exception licensed Java, you can still ship closed source code that uses Java.

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.

Of course, an effect is also that closed source people can’t modify Java and ship that code without either open sourcing those customizations or licensing the code from Sun. Indeed, preventing that kind of forking is one of the strategic moves when choosing the GPL.

Why Does it Matter?

Aside from having a mandate from the top to open source all of Sun’s software, open sourcing Java matters for at least three reason:

Building good will between Sun and the open source community

Sun is one of the companies that the open source community tends to view with cautious suspicion. From the conversations I’ve been in, the attitude is usually, “show me the code” rather than extending good faith that Sun will do it “one day.” That’s fair in the meritocracy open source world: talk is cheap, commits are what matter.

From the early conversations I’ve had with several people, it seems like the open source community leaders are pleasantly surprised. Why does that matter? Because, as Sun folks like to say, innovation happens elsewhere, and a large part of that elsewhere is the open source community. Meaning…

Inviting more people to innovate and care for the Java ecosystem

The open source world innovates at a rapid speed and in many directions, largely because there’s no one there to tell them to slow down. While that may seem like chaos at first, the open source world has figured out how to deploy, or make production ready, all that innovation in a stable way on a still relativly fast timeline.

I take that line of thinking for granted, but it’s especially true in the Java world where so many of the great technologies of the past n-years have come from the open source world: JBoss, Struts, Spring, Hibernate, XDoclet-cum-annotations, Jakarta Commons, and many more. Java innovation has been happening elsewhere for some time; to be fair, the JCP has done a fair job pulling it back into Java, as with Java EE 5. While the governance hasn’t been settled yet, Sun has managed to at least make it possible for Java to more directly and quickly benefit from that type of innovation.

Wider distribution in the Linux world.

While Sun has tried in the past to crack this nut, I’m not sure it’s been as successful as it could now be with Java under the GPL. Getting into Linux as a “normal” piece of software is important for achieving tipping points of ubiquity. At the moment, Java can’t be depended on to exist on any old Linux. With Linux Java [thanks to Barb Heffner for pointing the typo out] under the GPL, there’s a hugely higher chance that it will be available on more Linux platforms if only more easily in apt-get and other package management systems.

The effect of that is subtle: if a developer can “depend” on Java being there, they have a higher (or at least, competitive) chance of selecting Java over C/C++, shell script, Ruby, python, perl, or whatever else.

As an example, it’s not uncommon to see Java desktop application is OS X where Java is guaranteed to be available. Many of the applications I use are Java based where-as in Windows and Linux land, aside from Eclipse, that was never the case for desktop applications.


It’s easy for a “developer type” like me to overlook the PR bump that an announcement like this can cause. Why does a “PR bump” matter? It just gets more attention for Sun and Java.

To be frank, the benefit here is people thinking, “oh, wow, Sun, I’d forgotten about them.”

What matters then is for Sun to do something with that PR window.

For Sun

As always with Java, people want to know how Sun will make money. The honest answer is that Sun makes money more indirectly from Java than directly. Sure, there are licensing fees (esp. for Java ME I’d imagine) that can provide revenue. The more important effect of Java, and esp. open sourcing Java, is maintaining and growing an environment that’s favorable for Sun to market and sell into.

This is basic Microsoft tactics from the early ’90’s: build a strong developer platform, and the much more will follow.


I’ve been impressed with the community out-reach that Sun has done around this announcement. Not only did they talk with The Usual Suspect (including us) last week, but they talked with folks from GNU Classpath, other open source Java projects, and open source folks in general. I thought I’d be clever advising them to talk with the Java Posse guys, but they were one-step ahead of me and had already scheduled a recording. (Congrats to Java Posse by the way!)

Being Open

This outreach is interesting because RedMonk spends a lot of time talking with companies about open sourcing and being and open source company. Typically, one of the more difficult things for those folks to “get” is that open source means more than just code. It also means being (more of) an open company instead of operating under the NDA/embargo practices of the closed source world. For a company like Sun, or any publicly traded company, that’s a fine line to walk.

Along with other efforts — like getting the SEC to recognize blogs as fair disclosure — Sun is one of the more interesting companies to watch as it evolves (I hope) into an open company.


Reporters are always looking for the battle-angle on things, so I get asked a lot, “what does this mean for Microsoft/IBM/etc.?” That’s a good question. To be frank, I’m depending on Steve and James to better outline the effects of this on other companies.

Obviously, if the hopes of making Java more widely distributed, used, and innovated on pan out, then there will be pressure on non-Java ecosystems, like Microsoft and even things like the LAMP stack and Rails. (To be fair, the last two are more long-shots at this point, but it was interesting to see Mark Shuttleworth commenting in that area.)

Now, I would hope the results of that pressure would be additive rather than zero-sum. As I commented to a reporter this morning, as RedMonk has said before, Microsoft has been surprising people with their closer engagement with the OSS world.

Sorry to get all Rumsfled, but we’ll have to see what happens.


You’ve probably noticed the tentativeness to much of the above phrasing: “makes possible,” “if they choose,” etc. That’s the nature of open source: you can only try to direct things in your direction, it’s the greater community that actually makes it happen. That kinds of “guided chaos” may seem dangerous, but companies like IBM, RedHat, Oracle, and Sun themselves have long shown that it works for a commercial company.

That said, there is a degree of waiting and risk involved. BUT, as I mentioned above, many of the right people and communities seem to be happy with this move, much more so than other recent commercial/open source encounters of late. More importantly, I’m not really sure it could be any other way.

Finishing Up

For Sun, as Ian Murdock IM’ed me, one of the most important things now is to get Java in a Linux distribution, probably RedHat. Of course, that implies finishing open sourcing Java, which is, to dork out, the 0th most important thing.

And that’s the main hitch on all of this: there’s still more work to be done, namely,

  • Finishing open sourcing Java, resolving the encumbered IP
  • Provide a binary, built distribution of GPL’ed Java
  • Deciding on a governance model
  • As mentioned above, getting into Linux distros
  • Get the first non-Sun commiters

The last point is my “graduation milestone” for any company open sourcing a code-base. To twist the Zen koen, if a company open sources a code base and no one commits code, have they really open sourced?

Personally, I think they Sun and Java will reach that point, but it’s important to temper my enthusiasm (see the initial disclaimer) with that gating.

Disclaimer: as mentioned, Sun is a client, as are IBM and Eclipse.

Tags: ,

Categories: Companies, Java, Open Source, Programming.

Comment Feed

2 Responses

  1. great stuff; surprised there aren't more comments. you might have tagged this Java and opensource but thats just me. re ian murdock's question -shouldnt you call out ubuntu. given shuttleworth was on the call and all.

  2. Indeed, I think the title was too boring. Also, re: tags, the categories are supposed to bet picked up as tags so I don't duplicate them.