Remember the days when the mere thought of developing an application for Android was met with endless howls of derision and warnings of Android's fragmentation issues? It wasn't that long ago, and to some extent, that view still permeates the thoughts of people who haven't taken a close look at Android recently.
A lot has changed in the two years since Google finally brought together its phone-based 2.3 Gingerbread series of releases with its 3.x Honeycomb series to create a unified series of 4.x releases that have fallen under the Ice Cream Sandwich, Jelly Bean, and KitKat monikers.
Looking back at January 2012, the Android landscape was horribly fragmented — there was a very good reason why the word "fragmentation" was shouted from great heights whenever Android was mentioned, because it was fragmented — and having to deal with the various compatibility issues was not the easiest task in the world.
While it was tempting, at the same time, to cut off the existing Android ecosystem and focus purely on Ice Cream Sandwich and above, no developer looking to garner a large user base would make their app 4.x exclusive.
Ten months later, in October 2012, the picture looked no rosier. Android 4.1 Jelly Bean had arrived in July that year, and 4.2 was about to appear, but the previous fragmentation was still to be found, and from the outside, all that had happened was that the usage percentages of the various fragmented Android releases had shifted around. Gingerbread remained stubbornly fixed as the majority Android release, as many Android aficionados waited for the 2010 release to disappear.
Fast forward six months to April this year, with Gingerbread devices continuing to be phased out, and, more importantly, handset vendors and carriers finally getting around to pushing Ice Cream Sandwich and Jelly Bean across their device portfolios, the 2.3 release of Android sat just below 40 percent. Decisively, though, Ice Cream Sandwich and Jelly Bean collectively totalled more than Gingerbread, and for the first time commanded a majority of Android devices able to connect to Google's Play Store. It helped that Google decided to change its methodology for how it counted in that month.
Looking at the Android distribution usage data from last week, Android's latest release, 4.4 KitKat, has entered at 1.1 percent, and Gingerbread can only claim a stake of 24 percent. Ice Cream Sandwich is beginning to taper off, and Jelly Bean is responsible for running on half of all Android devices.
Taking each of the individual 4.x releases as separate is to read the statistics the wrong way, though.
The last great API shakeup to occur in Android was the unifying Ice Cream Sandwich release. Since that time, much of the work on Android that Google has undertaken has been focused on improving the response times and performance of the user interface, as well as cramming Android into a smaller memory footprint.
This has allowed Android developers, by and large, to be able to target any device from running on Ice Cream Sandwich and above with a minimum of pain.
The days of carting around compatibility libraries and making interface tweaks based on whether the device has 2.x or 4.x are largely behind us, and the idea of Android version fragmentation, for the time being, is able to be put to one side.
Nothing crystallises this more than the recent upgrade of Android that I experienced on my Nexus 7 device. Many of the features that had been touted as KitKat features — translucent status bars, increased Google Now integration, and smart dialler features — are in fact features of the launcher app that Google has bundled with the Nexus 5, and are not baked into the standard launcher that arrives with the open-source version of Android.
Show me a Nexus 7 device running either Jelly Bean 4.3 or KitKat 4.4, and without going into the device's About page or looking for some identifiable apps, I'd be hard pressed to pick exactly which version of Android the device is running.
While the sheer unremarkableness of KitKat may make it appear as though Android is treading water and failing to make improvements, this is not the case at all — it's simply that the model for feature delivery has changed from Google's perspective.
In the dark years of fragmentation, not only was Google fighting to replace its own versions of Android, it also had to fight against the tardiness of vendors and carriers in pushing out updates to devices that were fully capable of running newer operating systems, but were often left behind, as they were not the current flagship generations that buyers are pushed towards.
The solution to the problem was to decouple the feature additions of core apps from the updating of the underlying operating system. It arrived in the form of Google Play Services, and ever since its first introduction in 2012, Android updates have become a less and less eventful affair.
It's a clever way to skirt around the delays of updating Android as handset manufacturers port and apply their skins and customisations to each successive release from Google — as the manufacturers are perfectly entitled to do, but it does little to help the users, and in the end takes away some of the appeal of Android.
The monolithic update to Android is now consigned to history, and in its place is a cycle of continuous app updates that have diminished the importance of the version number of the system underneath.
What remains of an Android release nowadays is a process more akin to a kernel package update of a Linux system than an entirely new version of an Android system. So much of the Android's expected functionality is now wrapped up in Google's core app collection that the search giant is being accused of using Play Services to take Android away from its open-source roots.
And while that assertion is entirely correct, and thankfully open-source Android alternatives in the form of CyanogenMod, Jolla, and Replicant do exist, the lamentable fact remains that the regular smartphone user does not care as much about software freedom as they care about getting the latest and greatest in functionality, and Google Play Services does its duty to do just that. Similarly for app developers, having a target that's far more consistent and easier to work with is of greater benefit than ideological purity — otherwise, app development on iOS and Windows Phone would be non-existent.
The higher purpose of Play Services is to allow Google to update its APIs across multiple versions of Android, and to do so without giving any other organisation the opportunity to detract and delay such an update. Instead of impatiently waiting for a core OS update, like a user of any other mobile operating system is inclined to be, a modern Android user is far more likely to be waiting for a core app update to be pushed out to them.
The end result is that Google has begun to beat back the fragmentation issue thanks to its use of Play Services, and this has turned the updating of Android itself into an increasingly boring translation.
A couple more releases in the KitKat vein, and the cry of fragmentation from detractors may be a thing of the past.
At least until Google decides to release Android 5.0.