Shackled But Free

Java going Free is a big deal. Whether it turns out to be a big deal for the Java community is yet to be seen but 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.

With regards to Sun, I’m honestly having a hard time figuring out how they pulled this off. To put things into perspective, I’ve had the privilege of placing various software projects under Free licenses and I’ve wanted to go GPL with all of them. Each of these projects were much smaller in scope and influence than Java. The number of projects I’m involved with that are GPL licensed: zero.

Licensing GPL is hard.

The classpath extension is in play and would seem to bring the effect of the license closer to that of the LGPL but still. I know a lot of developers, not to mention business people, that dislike the GPL intensely. I would have paid to lurk on Sun’s internal mailing lists while this was being discussed. I can only imagine the number of threads terminated by Godwin’s Law.

Speaking of prospective GPL detractors at Sun, is there no irony in the fact that the GPL was created in response to an action by The Father of Java himself, James Gosling?

What led Stallman to the creation of this copyleft license was his experience with James Gosling, creator of NeWs and the Java programming language, and UniPress, over Emacs. While Stallman created the first Emacs in 1975, Gosling wrote the first C-based Emacs (Gosling Emacs) running on Unix in 1982. Gosling [initally] allowed free distribution of the Gosling Emacs source code, which Stallman used in early 1985 in the first version (15.34) of GNU Emacs. Gosling later sold rights to Gosling Emacs to UniPress, and Gosling Emacs became UniPress Emacs. UniPress threatened Stallman to stop distributing the Gosling source code, and Stallman was forced to comply. He later replace these parts with his own code. (Emacs version 16.56). To prevent free code from being proprietarized in this manner in the future, Stallman invented the GPL.

Gosling has come out in support of GPL Java. I have no evidence of Gosling disparaging the GPL in the past but the whole situation had to be a little weird at best and could have been a WWW-III pissing match at worst.

All of this to say that Sun and Gosling, I think, have accomplished a really great thing here. I have a ton of respect for software authors that have the conviction to place their stuff under GPL and I don’t see any reason to make an exception for Sun. That’s coming from someone who is really not a huge Sun fan, and we won’t even get into Gosling. I’m still waiting on Stephen’s Q&A and it would be interesting to see the FSF weigh in on this but as of right now, Sun just earned a big chunk of credibility as far as I’m concerned.

UPDATE: Steve’s Q&A is up and excellent as usual and the whole friggin ceremony was blessed by Stallman himself so I guess the FSF is okay with the deal.

As for Linux and BSD, I think the impact of a Free Java is quite well known at this point. Partially because there are already Java implementations available under Free licenses and partially because it’s been explained over and over for the past five years. Here’s what I wrote almost exactly two years ago:

The main problem with Java not being open source, IMO, is not so much that the source isn’t available/modifiable (which also sucks) but that the package from Sun cannot be freely redistributed. This really hurts taintless GNU/Linux distributions like Fedora and Debian because they cannot provide a Java package with the core distro. If they cannot provide a Java package with the core distro, it is impossible to provide any packages that rely on Java (i.e. “software being created with Java”) as part of the core distro. Until very recently, this meant that writing an app in Java meant that app had no chance of being included with a Free GNU/Linux distribution. The open source software projects created with Java that Mark talks about are at a tremendous disadvantage to projects using C/C++, Perl, Python, Lisp, bash, and any other language with a free compiler that can be packed into a standard distribution.

There are obviously a bunch of philosophical problems addressed by going GPL but from a practical standpoint I still believe that the packaging issue is the big win for Java.

So all and all I suppose Java is no longer Free but Shackled but now Shackled but Free. I wonder what Tim’s second order of business might be?

The GPL is a, no doubt, huge and admirable step in the right direction for Sun and Java but from a development perspective, my position remains largely the same: We already have a VM.