Is Android an open source platform? Yes!
In the past few weeks (or even months, before anything was even open sourced) many opinions appeared on the internet, that the Android platform is
- not really open
- includes kill switch, which is evil
- has substantial limitations
- reserves functionality to built-in / closed applications
- it is just J2ME in a new dress
I can completely understand this frustration. However, contrary to these opinions, I don't think that there is anything wrong with Android in this regard. The problem is, like in most cases, communication.
Many people, who read the slogan open source platform were actually expecting an open source firmware for mobile phones. Of course, this is not what Google promised.
So the real question is: What is an open source platform?
In my generic definition a software platform consists of the following parts:
- a well documented, standardized programming interface and necessary tools to enable application development.
- a set of software and optionally hardware components that can be used by vendors to quickly develop products that conform to the documented interface of the platform. These are usually provided as a reference implementation.
The openness of a platform does not imply anything about the openness of the products built on the platform.
To find an appropriate example, we don't have to go far, just look around the GNU/Linux market.
The GNU/Linux platform is one of the most popular open source platforms. It contains a full set of development tools, complete GUI frameworks, desktop environments, productivity applications.
There are many vendors, who create products that are based on this platform, yet these products contain a fair number of proprietary components.
Q: Does the existence of such products affect the openness of the GNU/Linux platform?
Q: Can a product that is based on an open source platform impose restrictions on its users?
A: Sure. Just try to use an "Enterprise Linux" product with a custom kernel, and get support from the vendor at the same time.
Q: Is it possible to create a really open product based on an open source platform?
A: Of course! This is what non-commercial Linux distributors like Debian were doing for over a decade!
So now let us assess the properties of the Android platform:
- API and Tools:The SDK is available, which includes documentation, IDE integration, emulator, debugger and other development tools.
- Reference Implementation:The full source code is available at http://source.android.com, most components under the liberal BSD and Apache 2.0 licenses. Also, the kernel modifications are available under the GPL, as required.
Based on this it is fair to conclude that Android is really an open source platform. Of course, as stated above, how open the actual products will be, depends only on the product vendors.
Whether the features provided by the Android platform will be sufficient, is a completely different matter and only time will tell. Most limitations are also known to Google, and they will work on fixing them.
Also, the Android Open Source Project is accepting contributions from anyone, and the community is already very active, with the first new processor architecture (armv4t) being supported after just one week.
As a last resort, it is always possible to fork an open source platform, like Android, if Google does not accept crucial features. This forked platform will need to target hardware that was either designed or reverse engineered to accept customized firmware.
At this point it is fair to ask: Why is this Android platform a big deal? We had GNU/Linux on embedded devices for many years now!
While the above statement is true in some segments of the embedded market, like SOHO routers, until now there was no mainstream open source platform for mobile phones:
- Previous phones with Linux on the inside were not based on an open source platform.
- While OpenMoko introduced the first phones with an open source firmware, but they failed to create a real platform until now.
So Android, in my opinion, is really the first mainstream open source platform for mobile phones. Whether it will be a success (commercial or otherwise), is yet to be seen.
In future entries I will blog about topics like:
- What are the advantages / disadvantages of an open source platform for different parties (end users, application developers, device vendors)?
- Is it possible to develop completely open source mobile phones? Is it really necessary?
- Is Android harmful for OpenMoko? Will other "hackable" phone projects emerge targetting Android specifically?
- Does Android have a potential in markets other than mobile phones?
Thank you for reading, and I am looking forward to your comments.