Android and the threat of fragmentation
[2009 might be the year of Android.. Google claims around 20 devices will be in the market by the end of this year. It would give a long-awaited boost to the proliferation of Android, but not necessarily a boost for developers. Guest blogger Gabor Torok looks at what the appearance of Android variants could mean in terms of fragmentation.]
HTC Dream aka G1 was the first Android device offered by T-Mobile. It took quite a bit of time for the next Android-based mobile phone, HTC Magic, to appear and be available first in Europe by Vodafone, with Asia and North-America (MyTouch 3G or G2 from T-Mobile) to follow in H2 2009. Oddly enough, the third and last device to date will also be manufactured by HTC: it’s called Hero and unlike the previous two it is not Google-branded and can be purchased unlocked. Even if the number of models powered by this platform is relatively low, it’s worth discussing how developers may be affected by the differences between these variants.
There are lots of on-line reviews comparing the two officially available handsets, Dream and Magic – visit HTC’s web site, for example, to see for yourself. The hardware specs of these devices are very similar (though Magic has more memory and no physical keyboard) leaving the software as the main differentiator. The Magic is based on Android v1.5 (codename Cupcake) and includes such features as on-screen keyboard, Home screen widgets, Live folders, video recording, etc. These handy software features are available for owners of older devices, too, such as G1 or the Android Developer Phone 1 (ADP1 in short). Whilst the firmware update must be performed manually in case of ADP1, T-Mobile takes care of upgrading the firmware of existing devices themselves.
What does this mean for developers?
Android developers haven’t had to worry about differences between platform versions and various handsets thus far. It’s simply because T-Mobile G1 had been left alone for a very long period and it was enough to write applications for that single device only. This has changed with the introduction of Magic and will be complicated further with the other upcoming models.
First of all and most importantly, existing applications originally written for the first Android handset will run on new devices without any modifications, i.e. they’re binary forward compatible. At least in theory, since there are signs and reported difficulties indicating that some applications need to be re-built and build environments re-configured for a successful deployment with the new SDK. In any case, Google is trying to keep source compatibility between releases, too, however, one should not expect 100% accuracy in their attempt (see Android 1.5 Version Notes for removed APIs, for example).
Obviously, backward compatibility is a different question: special care must be taken in an application to handle the lack of some hardware/software components in an older handset. Thanks to the fact that Magic is from the same manufacturer as Dream (HTC), one should not be surprised about forward compatibility. Nevertheless, the announced 18 new handsets for this year will surely make it more challenging to write such applications that handle the differences in handsets’ characteristics properly.
Fortunately, the SDK already provides APIs that enable run-time query of device particulars, so API-wise it should not be a issue for applications to distinguish between different models and act accordingly. Without this support it would be nearly impossible to write a single program and design it to run on multiple models – however, even with this support it will put an extra burden on developers’ shoulders they will have to deal with. It would be great, too, if look-and-feel guidelines were available as well, and not just Google engineers’ guidance on how “your program should look and behave similarly to built-in system applications“.
A useful addition to the Android SDK (which contains multiple platforms in one package) is the ability to fine-tune the target platform that one would like to build applications for. Developers can create an Android Virtual Device (or AVD in short), where the most important characteristics of a device can be specified, such as the availability of camera/physical keyboard/etc., screen dimension, choosing the system image emulation runs on, etc. The introduction of AVDs gives developers the freedom of using a single SDK for multi-platform development (read: multiple versions of the same platform, Android).
End-users and the impact to UX
There’s not too much to mention about the user experience on HTC Dream and Magic – the UX is pretty similar across the devices. Hero is different, though: HTC Sense UI provides a different user experience that is a departure not just from the Android UX, but from HTC devices themselves whatever platform they’re powered by (e.g. Windows Mobile, Android). A logical question arises: can older & non-HTC Android devices be updated with this framework? The answer is NO: due to licensing issues, “Google branded” devices (both G1 and Magic) are not allowed to be upgraded. This will surely result in fragmentation not only in software development, but in user experience, too.
Network operators, app stores and firmware updates
Both T-Mobile and Vodafone rely on the same central distribution channel, Android Market (AM). Returning the favour, Google-hosted AM takes carriers’ T&Cs into account when determining which applications can be submitted to each ‘market’. For this reason, some applications doing tethering, VoIP, etc. simply cannot be sold on Android Market – hence their developers need to go and find other markets. In other words, fragmentation exists at the distribution-level.
As already mentioned, HTC Sense UI is not permitted on Google-branded devices. Consequently, network operators selling “with Google” and non-Google-branded handsets alike must be cautious which firmware can go to which phone so as to satisfy all legal restrictions. In Hero’s case, for example, the update process is two-level: UI layers (i.e. Sense) are updated by HTC, whereas the rest by Google. The situation can get more complicated as the update hierarchy grows in depth.
If we can believe in rumours, 2009 is the year when a massive number of Android-powered devices will hit the market. Big numbers and diversity, however, will not make it easy to develop for this platform and maintain software updated on existing devices. Fragmentation has inevitably come to Android.
Looking forward to your comments,
[Gabor works as a mobile software engineer and has been in the industry since 2000. You can read more about his thoughts about mobility at mobile-thoughts.blogspot.com]
Bright thinker looking for bright readers? Join us at the VisionMobile blog, the stage for mobile industry thinkers.