Compared to Apples “one size fits all” iOS, Googles Android comes in a myriad of different guises. By choosing to partner with different firms they have ceded absolute control over how their operating system will look to those how manufacture phones. I’ll leave it to others to debate the relative advantages and disadvantages of this approach, but the result is that my current phone ships with a customised version of Android. If the customisations were only skin deep then they would be easily removable, but the effort put into the Sense interface by HTC means it has its fingers in all of the pies. If this meant my phone worked better I wouldn’t mind, but I find the changes to be obstructive and unwelcome.
One of the features that makes Android stand out from iOS is that new releases and updates can be delivered Over The Air (OTA) thus allowing the mobile devices to remain mobile and untethered from computers – freedom their iOS cousins can only dream of. The theory is great and when a new update is available the process works exactly as advertised, but the updates need to be created by the phone manufacturer to ensure that all their proprietary drivers and software is compatible. Linux kernel modules need to be rebuilt when the kernel changes and changes in Android itself must be incorporated. This all takes time and effort which means that older or less popular phones tend not to receive updates while current models wait months after the official release.
Android has an open source relative, the Android Open Source Project (AOSP) which appears to be a slightly backdated copy of code used for actual releases. The project pages give instructions to download the source and even build your own version, but after waiting for the large download (2.6 Gb) to complete and following the instructions you’ll likely feel a little let down for unless you have the most recent Google phone you won’t really be able to do much with the results of your endeavours. (With a slightly older Google phone you can extract the binary files you need, but only for the release you have installed on your phone.)
I find it hard to fathom the purpose behind the existence of the AOSP, as it currently exists, is. Releasing the amount of source they have is amazing. The efforts of
Jean-Baptiste Queru in updating the source and making available the source of each version within days of the official release are incredible and he deserves a lot of praise. One of the main beneficiaries of his travails has been the community that has grown up to supply custom versions of Android for virtually every device released. Using a mixture of cunning and determination people have found ways of extracting the proprietary files and merging them with custom built kernels and builds of AOSP to deliver new versions of Android to old and new devices. Given that these projects are based on AOSP, employ the same methodology as AOSP and do their development in an open source style (usually using forked versions of the AOSP source form github), why are their efforts not being incorporated into AOSP? The source trees of these projects contain various fixes and improvements that have been contributed by a large number of people keen to improve their phones. Surely such contributions would be better directed to the AOSP?
I started looking at AOSP as it appeared to offer a way of installing a version of Android on my phone that wasn’t infected by the Sense UI. After spending much of the last decade involved in sections of the open source world, I have a lot of respect the effort it takes to keep projects going and look for opportunities to contribute to those projects I use – an approach that isn’t dissimilar to many people I know. AOSP doesn’t encourage such activity because of the way it’s setup, which probably explains why there the community that exists providing custom versions is so large and seemingly uninvolved in the AOSP itself.
While I might keep an eye on AOSP, I think that directing my effort towards a custom project will be far more rewarding. Maybe they will create the Android I want?