=============================
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?
.. _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