Thursday, April 24, 2008

Java to open source and the story of software licenses

Sun Microsystem is currently removing the last hurdles in the run towards freeing its famous Java platform.

The story reminds me of the days when I first used Linux. Discovering and experiencing with free, open source software is great. However, one thing that bugged me was that none of the Linux distributions has bundled Sun's Java Runtime Environment. Instead, there was a weird pre-installed Java that took a while to learn how to get rid of.  Only later did I find out it is because of the license incompatible between Linux and Java. Early 2006, Sun announced that they have picked GLP license for Java once the source is open.  This move makes it possible for the next releases of some Linux distributions to automatically bundle Java Runtime Environment. For developers, it saves a few clicks, few commands and a bit of bandwidth for downloading JRE. For normal users (addressed to Ubuntu users :)), it means no need to hack your Firefox to run Java applets (even as "yesterday" as it sounds).

The news gets me to find out what exactly the license issue was at the first place. Here, I write down my notes on my "finding" of open-source software, GPL license, BSD license (all thanks go to Wikipedia, whose license is also GPL-compatible):

1. Open source software vs free software: the former means you (the user) have access to the the source codes of the software. The later firstly include the source code to be open. It further defines licenses regarding distribution of the software.  It is at this point that the free-software community divides: copycenter and copyleft. 

2. Copyleft or GPL vs Copycenter or BSD:
The General Public License (GPL) is labelled copyleft, as its terms and conditions go opposite way of the proprietary, copyright license.  The most important requirement of GPL license (besides being free of charge) is that: if A is GPL licensed, and derivatives of  A must be licensed by licenses that are not more restrictive than GPL. For example, you download a GPL licensed software A written by a person P (the copyleft holder), together with its source code. You modify A to have a new software B. You can keep B for yourself. But if you decide to distribute B, it must be GPL licensed, i.e. people who download B must be able to get the source code and makes changes,  freely.  If you do not comply, P can sue you for copyleft violation

GPL seems to take all the rights off the person who wrote the software. The Berkeley Software Distribution (BSD) licenses sits in the middle of the two extremes: copyright and copyleft. It is therefore labeled copycenter. The main difference to GPL, regarding distribution is: any derivatives of your software can be distributed by any other licenses. An example: I wrote a software A and distributed it under BSD license. You get the software, modify and turn it into B. Now you can distribute B in any way you like, especially you can turn it into proprietary software and make people pay for it, and I won't get a dime. This difference make BSD even freer than GPL, for GPL enforces the derivative to be distributed under GPL as well. 

3. Now go back to the Java licensing. Linux distributions are GPL'ed, and it requires that all software bundled in it are GPL'ed. Sun's JRE license it not GPL compatible, it has several restrictions about distribution of derivatives. Consequently, to have Java, we used to have to download it from the Sun webpage and agree with all the terms and conditions that we never bother to read. 

After all, one thing is still on my mind though. mPlayer is a great media player in Linux, and it's GPL licensed. Why none of the Linux distributions I know of did not have it bundled into their distribution? Why make users go through the painful process of downloading (then installing) it off the Web ? Until then, have a beautiful and predictable (weather-wise) day.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home