Monday, October 24, 2011

Android and Open Source (Updated)

(Updates below)

I read a lot of commentary about the Android operating system with a large subset of people convinced that Android isn't "free software" or "open source". Much of this is based on misconceptions. For those who want the executive overview, here's what I'm about to explain.
  • The core Android operating system is intended to be "free software" - that is, made up entirely of code you are free to modify and redistribute as you see fit.
  • Android is usually distributed with a suite of applications written by Google. These applications are proprietary. They do not make up Android proper, but most users consider them part of Android nonetheless. The most important of these proprietary apps is the Android Market.
  • Android is usually distributed with some modifications by the manufacturers of the devices that run it. Those modifications are, more often than not, proprietary. So while the core Android system might be free software, the version on your phone is probably not.
  • One version of Android is almost entirely proprietary. This version is "Honeycomb" and was the tablet peer of "Gingerbread", which was open source. (***UPDATE - see below***)
  • Google have made it clear the latest version of Android, Icecream Sandwich, will be free software. The source code for this operating system, they say, will be released once devices based upon the system are available.(***UPDATE - see below***)

Free Software and Open Source

I'm going to go off on a slight tangent here. There are two terms that are usually used to describe the same thing, "Free Software", and "Open Source". Advocates of the latter usually argue that the terms are equivalent, that all software that is free software is open source and vice versa.

The term "Free Software" is defined by a group called the Free Software Foundation, and essentially means software you are free to modify and redistribute. Sometimes there are some minor conditions applied to that freedom, such as a stipulation that anyone who receives code you've modified must be given the same rights to the modified version that you did.

The term "Open Source" is defined by a group called the Open Source Initiative, and essentially means software that anyone can contribute to. Emphasis is put, by the OSI, on the idea that nobody controls the process, anyone can pick up a copy of the software and share their contributions with everyone else. The reason that emphasis is there is because one of the goals of those promoting open source was to get businesses involved and supportive of the concept - promoting the idea that different businesses, even rival businesses, can work together on a piece of software for their mutual benefit.

In the case of Android, the term "Free Software" definitely fits, as Google has been at pains to ensure the basic rights associated with Free Software are given to end users. However, the term "Open Source" might not be as applicable as it is to, say, the Apache HTTPD web server, or the Linux kernel. Google makes the source code available under a set of free software licenses, but it doesn't encourage participation in development by non-Google entities. Third party development is, instead, limited to what are essentially friendly forks of the Android system.

Does that mean Android isn't "open source"? Open Source advocates would probably argue that it is, because third parties can still contribute, it's just they don't get much say in what one specific version of the system looks like. But it certainly means that the term "Free Software" is a less misleading description of the system.

Core Android and the AOSP

Android's core is Free Software, and a Google project manages this core under the title AOSP (Android Open Source Project.) The AOSP covers the entire Android system, and it's possible to build a device that's fully functional and extremely capable using just the AOSP code.

Thus far, every version of Android that is available on a device has been released under AOSP, with the exception of Honeycomb. Source for Icecream Sandwich, the very latest version of Android, is pending, and Google have announced it will be released just as soon as devices with the operating system become available. (***UPDATE - see below***)

The bulk of AOSP is licensed under one of two licenses. The Linux kernel is licensed under the GPL version 2, a popular "reciprocal" Free Software license. The rest of AOSP is generally licensed under the Apache license, a popular "permissive" license. Google could not choose an alternative license for Linux as they do not own the Linux kernel, but the rest of the system was licensed under the Apache license so that manufacturers can make proprietary modifications to core Android services if they choose to.

Google's Proprietary Add-ons

Virtually all phones running Android come with something called the "Android Market". It's not merely a useful tool, for most it's a critical tool required to obtain third party applications. While Android is open and allows apps to be "side loaded" - that is, directly copied onto the device and installed - many applications are simply unavailable that way, and the Market doesn't merely make applications available in an easy to install way, but it also does a fine job keeping track of updates.

Despite this, the Market is not actually part of Android. The Market is, strictly speaking, an optional app that most phone makers choose to install. And the Market is proprietary, you cannot obtain the source code for it, and you cannot redistribute it without permission.

Google has a number of reasons for wanting the Market to be proprietary. These are:
  • Many developers who want to distribute apps for Android want a secure channel to do so through, be it because their apps are proprietary too and they want users to pay money for them, or simply to ensure that if a user wants a copy of their app they get it through a trusted channel, and thus know the app is "real" and not a fake version.
  • Google wants to have some leverage over the manufacturers of devices that run Android, to ensure the devices they make can interoperate with one another. Google doesn't want developers unhappy because they find their apps do not work on many devices because of major differences between those devices and the standard Google model.
The CyanogenMod operating system is one third party version of Android that initially hit problems with the proprietary Market app. In this case, the CM people weren't doing anything outside of the Android "spirit", and Google and CM ultimately reached an understanding to ensure that CM users could install the Market app without too much trouble. But the episode lead to some misunderstanding, with many people assuming that Google had told CM that Android itself was not Free Software, when in fact the issue was simply with the Google proprietary apps for Android.

Many devices exist that do not include the Google suite installed, because they do not conform to Google's rules about how an Android device should behave. This includes the vast majority of non-phone devices (tablets, MP3 players, etc), with the exception of some Samsung tablets, and those tablets running Honeycomb. Usually such devices include an alternative to the Android Market, albeit usually one with fewer applications.

Your phone maker's proprietary add-ons

The version of Android that comes installed on your phone has usually been customized in many ways by the manufacturer before release. The majority of these customizations are proprietary. These customizations include:
  • Proprietary operating system extensions such as alternative keyboards (like Swype), or even low level services like UMA (T-Mobile's "Wifi calling")
  • Reskinned user interfaces (like HTC's "Sense")
  • Additional apps (like T-Mobile's "My Device")
All of these add up to a situation whereby you might consider Android itself to be free software, but the version on your phone is only partially free.

Honeycomb and Gingerbread

Honeycomb - versions 3.0-3.2 of Android - were kept proprietary for a variety of reasons. Google was quite open about this, and never suggested that other versions of Android would get the same treatment. (**UPDATE - see below**)

Despite the version numbers, Honeycomb is a "peer" of the Gingerbread (2.3-2.3.x) version of Android, not a more recent version. Prior to the release of Icecream Sandwich, I've heard some people complain that "Android isn't open source because the latest version is proprietary" - that simply isn't true, Honeycomb is not the latest version. Analysis of Gingerbread suggests that the two operating systems share some code not in their predecessor, 2.2.

Why did Google make the decision to close Honeycomb? Honeycomb's poor performance and clues left in Gingerbread have lead many to believe that Honeycomb itself is just not a particularly good operating system. Officially, Google has made it clear that Honeycomb is a one-off fork, and they don't want to see anyone basing real code upon it. And keeping Honeycomb proprietary also helped Google exert quite a bit of control over the first official "Google tablets", ensuring they were high quality, high performance devices.

Unlike Honeycomb, Icecream Sandwich is a single operating system that incorporates the functionality found in both tablet and phone editions of Android. ICM is, architecturally, where Google wants Android to go, and so they have less reason to want to limit its distribution. Likewise, Google has less reason to want to control what devices run ICM given that high quality tablets are now in circulation.

Icecream Sandwich

The latest announced version of Android is "Icecream Sandwich", also known as 4.0. ICM will be available on devices within a few weeks, and Google has made it categorically clear that once those devices are available, the AOSP version of ICM will be made available too. (**UPDATE - see below**)


As operating systems go, there's no reason to describe Android as anything other than "free software" or "open source". As a whole, it is at least as free as, say, Ubuntu. It is important however to remember that Google has a certain amount of control over future versions of the system, and one day Google could do to a version of Android what it did to Honeycomb. It's also important to remember that, like other operating systems, you'll probably end up having to use one or two proprietary apps to make full use of the system, and that your phone's manufacturer also has a lot of say in what exactly you end up with.


Since this article was written, Google has released an AOSP version of Icecream Sandwich. Additionally, the sources to Honeycomb have also been released under the same open source licences, but there's a catch: Google isn't indicating what revisions of each file were put into production.

So at this point, all versions of Android are technically open source and free software. It remains the case however that manufacturer's "improvements" to the operating system, and the Google suite of applications including Android Market, are proprietary.

No comments:

Post a Comment