Fragmentation. You’ll often hear people say this is a major problem with Google’s Android platform; there are many devices running multiple different versions of the mobile operating system, leading to fragmentation. Dan Morrill, Android’s open source and compatibility program manager, addresses this issue in a blog post, and details what Google is doing to fight it. The gist: it’s a non-issue – according to Google, that is.
The first problem with the concept of fragmentation noted by Morrill is that there really isn’t an acceptable definition, and thus, everybody uses their own. “Because it means everything, it actually means nothing, so the term is useless,” Morrill argues, “Stories on ‘fragmentation’ are dramatic and they drive traffic to pundits’ blogs, but they have little to do with reality. ‘Fragmentation’ is a bogeyman, a red herring, a story you tell to frighten junior developers. Yawn.”
Of course, there are still issues that might cause an application to not run properly. Three issues can cause programs to run sub-optimally: missing hardware components (e.g., an application expects a camera, but none is found), added or altered APIs (by the manufacturer), or plain old bugs. It’s Morrill’s job to minimise the problems that might arise from these.
Thee are two things things Google is doing here. First, they restrict access to the Android Market as well as the Android name to compatible devices only. Second, there’s the Android Compatibility Program, which in turn consists of three core elements: the Android source code, the Compatibility Definition Document, and the Compatibility Test Suite.
The first core element is pretty much a given: all Android devices run the same core source code, which “goes a long way toward making sure those devices all work the same way”. Obviously, this doesn’t mean jack if devices lack certain hardware components or have altered APIs. That’s where the Compatibility Definition Document comes into play.
“The CDD defines in gory detail exactly what is expected of Android devices,” Morrill explains, “It clearly states, for example, that devices may not omit most components, and that the official Android APIs may not be altered. In a nutshell, the CDD exists to remove ambiguities around what’s required of an Android device.”
To address bugs that may cause applications to behave oddly, the Compatibility Test Suite was created. “The CTS is a collection of more than 20.000 test cases that check Android device implementations for known issues,” Morrill details, “Device makers run the CTS on their devices throughout the development process, and use it to identify and fix bugs early. This helps ensure that the builds they finally ship are as bug-free as possible.” Of course, both the CDD as well as the CTS are continuously tweaked to address newly discovered problems.
Of course, this is all nice and dandy, but it doesn’t do anything to address the problem I think most of us think about when we talk about fragmentation: the multiple different versions of Android currently being shipped. Device makers and carriers are remarkably incapable, and this total lack of competence is only highlighted by Android. Every Android device – including the G1 – can run Froyo, Android 2.2, the latest version. Sadly, device makers and carriers block the upgrade process with their immense incompetence.
Here’s where Morrill gets a little short on words. While he does make the case that Android is fully 100% forward compatible (i.e., applications written for older versions work on newer versions too), it doesn’t solve the problem of application developers targeting the latest and greatest releases, leaving users locked into older versions frustrated.
Sadly, this is an issue Google can’t really address. I can’t highlight enough just how incompetent many device makers and carriers are, leading to devices shipped today that still run Android 1.5 or 1.6. I hope Google manages to force device makers and carriers to be more responsive when it comes to updates, but since especially carriers bear a remarkable resemblance to other utterly incompetent industries like big content, I’m afraid we still have a long way to go.
Luckily though, it seems as though the rapid release cycle will settle down soon. “Our product cycle is now, basically twice a year, and it will probably end up being once a year when things start settling down, because a platform that’s moving – it’s hard for developers to keep up,” says Android boss Andy Rubin.
In any case, I still haven’t ever used an Android device. I’ve seen all the desktop has to offer when it comes to operating systems and software – I want to use Android, webOS, BlackBerry OS! Hey Google, here’s a suggestion: why don’t you sponsor the guys and girls who are porting Android to the iPhone? I wouldn’t hesitate for one second to dual-boot my 3GS between iPhone OS and Android.
And webOS. And Windows Phone 7. And Haiku.