Google’s smartphone code is often described as ‘open’ or ‘free’ – but when examined by the Free Software Foundation, it starts to look like something different.
To what extent does Android respect the freedom of its users? For a computer user that values freedom, that is the most important question to ask about any software system.
In the free/libre software movement, we develop software that respects users’ freedom, so we and you can escape from software that doesn’t. By contrast, the idea of “open source” focuses on how to develop code; it is a different current of thought whose principal value is code quality rather than freedom. Thus, the concern here is not whether Android is “open”, but whether it allows users to be free.
Android is an operating system primarily for mobile phones, which consists of Linux (Torvalds’s kernel), some libraries, a Java platform and some applications. Linux
aside, the software of Android versions 1 and 2 was mostly developed by Google; Google released it under the Apache 2.0 license, which is a lax free software license without copyleft.
The version of Linux included in Android is not entirely free software, since it contains non-free “binary blobs” (just like Torvalds’ version of Linux), some of which are really used in some Android devices. Android platforms use other non-free firmware, too, and non-free libraries. Aside from those, the source code of Android versions 1 and 2, as released by Google, is free software – but this code is insufficient to run the device. Some of the applications that generally come with Android are non-free, too.
Android is very different from the GNU/Linux operating system because it contains very little of GNU. Indeed, just about the only component in common between Android and GNU/Linux is Linux, the kernel. People who erroneously think “Linux” refers to the entire GNU/Linux combination get tied in knots by these facts, and make paradoxical statements such as “Android contains Linux, but it isn’t Linux”. If we avoid starting from the confusion, the situation is simple: Android contains Linux, but not GNU; thus, Android and GNU/Linux are mostly different.
(Within Android, Linux the kernel remains a separate program, with its source code under GNU GPL version 2. To combine Linux with code under the Apache 2.0 license would be copyright infringement, since GPL version 2 and Apache 2.0 are incompatible. Rumours that Google has somehow converted Linux to the Apache license are erroneous; Google has no power to change the licence on the code of Linux, and did not try. If the authors of Linux allowed its use under GPL version 3, then that code could be combined with Apache-licensed code, and the combination could be released under GPL version 3. But Linux has not been released that way.)
Google has complied with the requirements of the GNU General Public License for Linux, but the Apache license on the rest of Android does not require source release. Google has said it will never publish the source code of Android 3.0 (aside from Linux), even though executables have been released to the public. Android 3.1 source code is also being withheld. Thus, Android 3, apart from Linux, is non-free software, pure and simple.
Google said it withheld the 3.0 source code because it was buggy, and that people should wait for the next release. That may be good advice for people who simply want to run the Android system, but the users should be the ones to decide this.