Russ wrote a nice post a month or so back about the splintering of Android.

He's right, I think - we are starting to see fragmentation around Android. When new handsets or versions of the operating system launch, we find ourselves getting occasional small bug reports for our Guardian Anywhere product. Some of these bugs have been down to our not doing things in a standards-based fashion; some are down to differences in handsets (the Tattoo, for instance, has a much smaller screen than most other devices); and some... some we can't quite get to the bottom of.

And of course, it's not just the handset. In an application-rich world, every user has a different combination of apps, and Android's architecture allows them to run many apps at the same time - all of which might interact with one another, leading to difficult-to-reproduce edge cases. I'm also expecting to see issues caused by handset customisation (which operators are doing a great deal of - the T-Mobile Pulse is a nice example of this, and it's still early days)

So there is fragmentation in Android; but I was pleased last year to see Google quietly move from the naive line that "fragmentation won't happen, because it's not in the industry's interest" to "we'll introduce conformance tests for OEMs to avoid fragmentation". This seems to be paying off, so far - in that moving Android applications to new devices, even those with new screen sizes, is orders-of-magnitude less painful than moving between J2ME handsets from different manufacturers. That said, developers still need to do some work to provide graceful degradation.

Apple have done a fantastic job of presenting the iPhone as a single platform. There however, the reality is slightly different: 3 generations of hardware, 26 operating system releases (last time I counted), and a platform which in some incarnations has (or doesn't have) GPS, a loudspeaker, a microphone, or even a SIM card and therefore connectivity. Apple have done a great job of upgrading operating system versions to keep its installed base current, but even there there's some lag. The problem is at least finite, Apple being a closed ecosystem for hardware; and the lack of background apps helps developers avoid issues caused by interactions between applications.

So where does this leave us?

  • Fragmentation isn't going away. Not until OEMs stop innovating and differentiating their products;
  • Even wunderkinds of the tech industries like Apple and Google can't solve the problem for us. Even their kit - whether it be strictly controlled or lovingly curated - suffers from the issue, whatever you might hear to the contrary;
  • As an industry we're getting better at dealing with it: platform vendors are taking more care, developers are evolving techniques and technology to cope;
  • For those of us taking mobile products to market, testing across a range of devices is going to be something we continue to do as a matter of course - and we'll still be learning more than we ever wanted to know about weird handset bugs and software versions;

Many thanks to James Hugdroid, who proof-read, sanity-checked, and contributed to this post.

Update: Google have published a really nice analysis of deployed Android versions, implying that developers should be targeting 3 versions of the Android operating system.