The Android Wikipedia page is quite a read. I’m particularly taken with the research into how “open” it is (not really, compared to other projects) as I’ve never seen a commit log or discussion of patches for it.
Moreover, our findings suggest that Android would be successful regardless of whether it is an open source project or not, to the extent that the vast majority of developers working on the project (the platform itself) are actually Google employees.
The section on Linux is intriguing too. Linus Torvalds says that Android and Linux would come back to a common kernel but that presumes Google will open it’s development and “innovate” in the open. I’ll just leave this here to check back on in 5 years time..
Meanwhile, there’s the Replicant project, an effort to make a completely Free Software version of Android. They want to remove proprietary device drivers and discourage the use of Google Market. Their list of supported phones is limited but I was surprised to see the iPhone listed there!
I did wonder what the difference was between Replicant and CyanogenMod. Various posts I’ve read on the XDA forums have stated over and over again that the project was more interested in open source solutions rather than using proprietary software but this thread on LWN shines some light on the issue.
Found the official line:
“CyanogenMod does still include various hardware-specific code, which is also slowly being open-sourced anyway.”
So, they’re being realistic about their efforts. They’ll use proprietary software when necessary but they’ll work towards replacing that software. At the rate that handset hardware changes I applaud them for taking this pragmatic route. The only phone the Replicant project fully supports is the relatively ancient HTC Dream. Yes, open source drivers should be released by manufacturers but that won’t happen.
Android isn’t really that open in terms that an Open Source advocate would understand. The traditional public CSV or SVN repository and a daily changelog is nowhere to be seen. It’s definitely developed in a cathedral rather than a bazaar. Does it matter to the vast majority of its users? Probably not, but I for one am happy it is Open Source and the code is out there. Without the (admittedly late) release of source code it would be much more difficult to use other after-market firmwares on Android phones.
5 thoughts on “How open is Android?”
It would be nice to see it more committed to the open source end of things.
Android should be officially forked in two distinct directions. On one side you get the official Google release which may or may not be totally open. This release is the one that manufacturers must stick to, to get the Google logo on their phones as well as integrating the App Store, map, and search services, etc. Rules and guidelines must be adhered to, unifying the interface, eg, the position of home, search, menu and return buttons.
The other version of Android should be totally open and free to alter for any manufacturer to do as they will with it on their device.
The biggest problem facing Android at the moment is having no standard platform. Developers hate having to develop and test multiple versions in case a particular Android manufacturer flavor has a problem with their app. Users get no sense of unity when switching between makes of phones. They must also wait for their specific manufacturer to release an update before they can take advantage of any new developments in an Android release.
Iphone’s strength is the unity found in Apple’s iOS, both for developers and users. If Google want to take on the success of iPhone they may have to tighten up their platform even more.
About how Android is made, sure, most of the native-to-Android code was written by members of the Andrid Open Source Project (lead by Google) but they do have an issue tracker and they can eventually accept some patches from the community on the “official” Android code.
On the kernel thing, Android and OEMs have derivate versions of Linux which include drivers for the Android devices that can’t be included in the mainline linux tree as these are most of the time passthrough drivers : all the work is being done by a non-free user-space library. Mostly as Linux is GPLv2 : they have to release the modified versions of the kernel they made but won’t, to a large extent, let us know about how it really works. That’s the case in particular for 3D, where the Linux drivers are free but completely useless without the set of non-free user-space libraries and binaries.
The Replicant project (I’m one of the 2 developers of the project) only support a small number of devices, mostly because we are only 2 devs on the project, but note that the iPhone was just a thought, as there is a project called iDroid that aims to port Android on the iPhone devices. Currently, we do support: HTC Dream, HTC Magic and Google Nexus One. The Nexus S is being worked on to be supported by Replicant.
The concrete differences between CyanogenMod and Replicant are only hardware-related stuff : the user interface will be absolutely the same as we are based on CyanogenMod and use everything that’s free in CyanogenMod. Though, the binaries and libraries we use to deal with the hardware aren’t the same: CyanigenMod uses the OEM-distributed non-free ones while we use some free replacements when it’s possible. There are indeed some components for which we don’t have any working replacement, like for 3D. This is anyway very device-specific and if you want to know the concrete support for each phone, head to: http://trac.osuosl.org/trac/replicant/wiki/ReplicantStatus
Though, in most cases, Replicant is stable enough to be used daily.
The iPhone is listed on the page you linked to, but not as a supported device. It’s in the “Thoughts about other devices” section, which means it’s not presently supported for Replicant.