The F-word is here to haunt Google again since a survey published by Fortune stated that 56 percent of Android developers found that the Android fragmentation was a meaningful but huge problem.
Baird research survey which was picked up by Fortune suggests that developers expressed concerns over Android OS fragmentation, app store fragmentation and number of junk apps in Android ecosystem. Baird research surveyed 250 developers.
Fragmentation has been Android's Achilles heel since Google launched its first Android device G1 in conjunction with HTC. Since then Google has released multiple versions of Android (1.5, 1.6, 2.0, 2.1, 2.2, 2.3, 2.3.3, 3.0) with the latest being Android 3.0 or Honeycomb for tablets.
Artstechnica defines platform fragmentation as the proliferation of diverging variants-a situation in which many custom versions of the software platform emerge and coexist with the original. Platform fragmentation can weaken interoperability because applications that are built for one variant might not work on others.
The pace at which Android has been growing has resulted in multiple Android versions and multiple devices in the market. This proliferation has caused developers to call Android a mess compared to Apple's unified iOS experience for developers and users.
However, Android fragmentation has different implications for end-users, developers and manufacturers. Key issues arising out of Android fragmentation are:
Since there are multiple Android devices with varied features, not every application written for Android can run on every single Android device. VisionMobile explains that Android provides forward compatibility -- applications written for older Android versions like 1.6 can run on Android 2.1 without any modifications. But Android does not provide backward integration and its applications developed for new versions do not run on older version of Android. Thus, applications have to be devised in a manner that an app can take into account the lack of certain hardware and software components in older Android phones.
Google addresses this problem by providing APIs that allow developers to do run-time query of device details to distinguish between different models. However, the onus to tweak the same app for various models still falls on the developer.
PC Magazine reported that Google expanded its Fragments API which was earlier available only with Android 3.0 or Honeycomb. Fragments API allows applications running older versions of Android can tap into Fragments to create apps that work on larger screen devices like tablets.
The key cause of Android fragmentation is product differentiation. Android has given original equipment manufacturers (OEM) the flexibility to differentiate their devices by making their own changes to the device, thus, causing compatibility issues. OEMs like HTC and Motorola have their own UIs like HTC Sense and Motoblur running on top of Android. Carriers also jump into the game by adding their tit-bits to differentiate their services resulting in further fragmentation.
Bloomberg reported that over the past few months Google has tightened control over Android and has been demanding that OEM and carriers be abide by non-fragmentation clauses. Also Google will not widely release its Honeycomb's source code, making it difficult for non-partner OEMs like Dell from laying hands on the Android 3.0 OS.
A major grouse among developers is also the fragmentation of apps distribution via Android Market. Recently, Amazon announced the opening of its Appstore for Android apps. Similarly, carriers like Verizon run their own Android apps store. This poses problems for developers as they have to list their apps in various apps stores. Also developers complain that Android market does not offer significant visibility to apps and there are many junk apps in Android market.
For end users using multiple UIs means there is no agreed standard, thus, making migration to other Android devices complex. Also users of older versions of Android like Android 1.6 have limited choice of apps as developers focus their attention on newer Android releases. The choice with users is to buy a new device rather than merely get a software update.
Google deals with the above stated issue with its Android Compatibility. Dan Morrill, Open Source & Compatibility Program Manager at Google, speaking about fragmentation in Android Developers blog said: 'Fragmentation' is a bogeyman, a red herring, a story you tell to frighten junior developers. Yawn.
He cited Android compatibility clauses which deal with the issue from OEM and developers perspective. For OEMs Android Compatibility elicits clauses which make sure that Android devices are compatible with each other. The clauses define the parameters of selection for a device to be listed as an Android device. It means checking devices are bugs-free; devices have a critical minimum of hardware like a certain megapixel camera which apps expect and making use that customization done by OEMs actually works.
For developers Android Compatibility means one needs to decide what features your app requires and list them in the AndroidManifest.xml, the program which ensures that only compatible devices have access to Android Market and that the app is only visible to those devices where it will run correctly, by filtering your app from devices which don't have the features you listed.
While Google is attempting to fix these loopholes that allow for fragmentation, Google is also unable rein the pace of Android's growth. Thus, Google has to walk a thin line, where it has to keep its customers using older version satisfied with constant updates, while not sacrificing the pace of its platform development.