The Android Fragmentation Myth

The intarwebs is abuzz with discussions about Android fragmentation. The buzz has become so huge, that Google representatives felt obligated to step in and talk about how Android fragmentation isn’t as bad as it sounds.

I, for one, am sick of you pansies whimpering about how hard Android makes your life. Stop for a moment and think, if you can.

First of all, this thing you call “fragmentation” isn’t entirely clear. Reto at the Radioactive Yak provided a nice summary of different possible meanings:

  • Fragmentation is launching apps that only run on the new OS release when the previous one barely had a 6 month lifecycle.
  • Fragmentation is allowing licensees to ship hardware that isn’t powerful enough to run your OS and makes web apps crawl
  • Fragmentation is changing the browser location API in between 1.6 and 2.0
  • Fragmentation is not including basic APIs for things like Bluetooth OBEX so we have to hit the hardware. OBEX is a basic, fundamental part of Bluetooth. Not complying with the standards == fragmentation
  • Fragmentation is pretending most Android users are on 2.1+ when there are still phones being sold on 1.5 and 1.6 with no upgrade
  • Fragmentation is letting your licensees choose whether to have browser chrome or fullscreen browsing

So in other words, fragmentation is having to deal with the fact that you’re not controlling what OS versions your app’s users run on the hardware they choose, a choice you also can’t control.

Oh boo-hoo. Welcome to the real world.

Unless you happen to be Dictator^WSteve Jobs, that’s the reality you have to live with, regardless for what platform you develop for. To give a few examples:

  • There’s tons of OS versions, whether you’re targetting Windows, OS X or Linux. And they behave differently depending on whether or not certain patches or additional packages have been installed.
  • On the Wii, you need to deal with different screen resolutions and different peripherals.
  • On the XBOX 360, the bewildering array of peripherals extends to the question of whether or not there’s a hard disk attached to the device.
  • Even on the tightly controlled iPhone, APIs change their behaviour from one version to the next. It’s rare, but all the more destructive because iPhone devs don’t really expect this sort of thing.

I’m not going to continue that list, do it yourself.

So when you leave your ivory tower^W^Wbasement, be prepared. The world out there is just a tad harsher than you might expect.

As for Android specifically, it actually deals with all those things pretty well. It tries — to an extent — to minimize your effort to declaring what features/OS versions your app needs, rather than writing code that deals with all the myriad of possible combinations. Wouldn’t it be nice if other platforms were that progressive…?

Reblog this post [with Zemanta]

  • eremit

    … and that’s the bottom line, ’cause unwesen said so! great post, and so true!

    • unwesen

      I’m just sick of the discussion. If they all had different opinions from my own, but shut the fuck up about them, I’d already be happy… :P