Android Deny Fragmentation Problems
Android engineering team member Dan Morrill has posted a blog dismissing the accusations of fragmentation that have dogged the Android platform – according to Morrill – from day one, quite literally.
“Before the close of business on the same day we announced Android (4:46pm to be precise), I saw the first article about Android “fragmentation,” he writes. To him, the main reason this accusation has stuck, is because no-one ever defined what exactly fragmentation was. Morrill lists several examples he has encountered, which range from too many mobile operating systems, to “locked down” devices. However, he has found a common factor to all these definitions: they do not impact on whether an app can run or not.
“Because it means everything, it actually means nothing, so the term is useless,” he summarises. He also states that, while devices without the latest software might have problems running the latest Android apps, Android is “100% forward compatible.” This means that if an app works on an older version of the Android platform, it should also run on all the newer version too. Developers have to make the decision whether to embrace all the newest Android features, or target older versions of the Android software, and be exposed to a wider audience.
However, Morrill does admit that ensuring Android devices can run all apps written with the Android SDK, is a challenge, as different handsets may omit hardware that an app relies on, alter the Android APIs, or simply let a few bugs slip in. All of these factors can result in an Android app not running properly on an Android device.
Google have taken steps to rectify this problem, and maintain compatibility across Android devices. These measures include only allowing compatible apps into the Android Market and launching the Android compatibility program. This program consists of the Android source code, the Compatibility Definition Document (CDD), and the Compatibility Test Suite. The CDD lays down a blueprint of what is expected of Android devices. For example, under the terms of the CDD, developers are not allowed to alter the official Android APIs. It is expected that the CDD will evolve to reflect the ever-changing world of mobile development but, according to Morill, Google also intends to reflect these changes in the Android APIs and the Android Market, to help ensure continued compatibility.
Meanwhile, the Android compatibility program's Compatibility Test Suite consists of more than 20,000 test cases for identifying and rectifying bugs.
But, how bad is the problem? Last month, Google released a report revealing the percentage of different versions of Android, currently installed on handsets. The report showed a roughly even split between Android 1.5 (34.1%) Android 1.6 (28.0%) and Android 2.1 (37.2%) This prompted Ray Walters to comment “with this kind of fragmentation it is almost as bad as developing for the web with the many different browsers out there.”
Walters does have a point: fragmentation is a problem for both Android app developers, and Google themselves who, in taking steps to limit fragmentation, have acknowledged that fragmentation is a potential problem for the Android platform. But, by comparing the problems of different versions of Android, to the compatibility problems posed by the many different browsers out there, Walters is drawing attention to the fact that fragmentation isn't just Android's problem. Perhaps, it's just part of modern development, whether it be for the web or for the mobile. Maybe fragmentation is just something we're all going to have to get used to.