July 06, 2008

Is Free Software really Free? (A case of Google Android and Java)

Update: Google has open sourced Android and I will take back what I said. If you still wish to read the post, you may do so.

A lot of people have asked me why anybody would want free software, because there is no support or commercial licensing usually. Let me define what free is supposed to mean: "The freedom given to a user to execute the program; to modify the source code, compile and execute the modified program; to be able to redistribute the modified source code and the modified program."

We are not here to discuss if everybody is giving you a false free software promise, or if being "good" is essential for our life, but only to discuss a particular false software promise by organizations like Sun and Google.

Let us take a classic example: the Java platform. While Sun has been (for years) trying to free Java, they still can't push in just enough to make it completely free. And when they did GPL their OpenJDK (which at the moment, is probably mostly unhindered except for the SNMP provider), Google decided that vendors should be given enough choice to "lock in" on their implementations, and based their DalvikVM off Apache Harmony.

Not that I don't respect Apache, but partially the reason they came up with their VM was because Sun wasn't really going to give away their Java without a fight from competitors. And when they sensed a threat, Sun were like, "we wanted to free Java for a long time. Freedom to the masses. Yay!". Nobody bought it. The real reason Sun didn't want to free Java was probably not because it wanted the community to fork, but because they wanted to keep it to themselves and all the monopoly that came with it.

Now it is Google's turn. While Google says it is part of an "Open Handset Alliance", it hasn't made the specification for the DEX format and source code for the DEX compiler open yet. And the vendors wouldn't be expected to reveal it, either. Google doesn't want to go the Sun way of JavaME either, although as of now, "PhoneMe" is supposedly a free implementation. So what does Google do here? "Lock in" Android applications from being accessed by everybody.

Is Google really going open with Android? I don't think so.

So when openness is a question, where do we expect to find the freedom we discussed above? And how do users expect to run applications in a closed platform locked in by vendors who claim to be "open"? The answers are: "nowhere" and "there is no way".

One suggestion for users is that they should protest against these platforms and say: "Hey, we aren't going to buy your mobiles unless you tell us everything about it. Are you living up to your open promise or was it just false marketing on your side?"