============================= Is Android “free software”? ============================= :CreationDate: 2009-09-17 10:59:01 :Id: SW/is-android-free :tags: - software - rant A couple of months ago, I bought a `Samsung Galaxy (I7500) phone`_; it runs a version of the Android_ environment. I'm reasonably happy with it: it works as a phone, it allows me to stay connected when I'm not at home, and developing applications for it does not seem too hard. I have a big gripe, though: I can't touch the OS. No, I don't mean "I don't have ``root`` access": I know how to get it, and I even pretty much agree with the whole «make it as hard as possible for users (or malicious software) to brick the phone». What I mean is this: I have the (purported) `source code of the Android system`_, from the Linux kernel up to the various applications. But I can't do anything useful with it: I don't have the "corresponding source", to use GPLv3_ terminology. There is no way for me to rebuild the exact same system image that is running on my phone. The FSF_ says that the `Apache license version 2.0`_ is a "`free software license, compatible with version 3 of the GPL`_", but it's apparently possible to release a set of programs under it, and have the resulting collection not meet the `free software definition`_: I can't actually run the program! OK, I can run it on the emulator. I say that's not good enough. Samsung has given me a binary copy of their Android version. According to the license, they are in no obligation to give me the source code. How can I call this "free software"? As an aside, the reason I started this rant is this: there are a few features that I would like to change (e.g. add support for OpenVPN_ to the nexus_ program; add the ability to change input language for each input box, independently from the system locale). Since I can't actually benefit from those changes (I can't build a new Samsung image with my modifications, and use it), and I don't have any assurance as to when they will arrive on my phone (assuming they are accepted in the Android platform), why should I even attempt to make them? .. _`Samsung Galaxy (I7500) phone`: .. _Android: http://www.android.com/ .. _`source code of the Android system`: http://source.android.com/ .. _GPLv3: http://www.fsf.org/licensing/licenses/gpl.html .. _FSF: http://www.fsf.org/ .. _`Apache license version 2.0`: http://www.apache.org/licenses/LICENSE-2.0 .. _`free software license, compatible with version 3 of the GPL`: http://www.fsf.org/licensing/licenses/#apache2 .. _`free software definition`: http://www.fsf.org/licensing/essays/free-sw.html .. _OpenVPN: http://www.openvpn.net/ .. _nexus: http://android.git.kernel.org/?p=platform/system/core.git;a=tree;f=nexus;h=5ac2cb9f0cee2394fa2d070d3df309090e222828;hb=refs/heads/donut