Device Fragmentation Across Platforms

Andrew Ebling, author of iBlueSky emailed me regarding the charts I published last week. He suggested one metric that he thought would be interesting to consider would be the relative difficulty of addressing device fragmentation.

fragmentationchart_1.gif

This chart is trying to say a lot of things and generalises a lot so it needs some explanation. On the horizontal scale, 0= best, 10=worst. When people talk about fragmentation they often don’t qualify the type of fragmentation they are talking about. I have tried to sub-divide fragmentation into…

  • Device variety – the number of different models of device.
  • Functional variability– differing functionality across a same OS/runtime version due to bugs and OEMs (or even phones from same OEM) implementing things differently.
  • OS Version variability – differing functionality across successive OS versions or runtime versions (this is normal and to some extent expected).
  • Runtime variability – for runtimes, the variability in functionality caused by being able to have more than one runtime on a given device.

I have assessed Symbian as fairly highly fragmented because of changes between S60 2nd and S60 3rd. Most of my customers insist on writing for both versions. This is because there are still a lot of S60 2nd phones being used, especially in emerging markets. Hence, my previous plea to consider older platforms when developing tools. If you can stick to S60 3rd then OS version variability and extra code due to fragmentation is much reduced.

The case of Windows Mobile is interesting in that fragmentation differs depending on what development approach (win32, MFC or .NET) you take. The problem is that if you choose the easier routes (MFC and .NET) you end up with problems of not knowing you will have the correct version of runtime on the device. My experience is that if you code for the lowest common denominator (win32) then you can get away with the most amount of code that will run on all devices.

The iPhone and Android platforms are also interesting in that they have yet to release significant variants. The ease with which developers can maintain compatibility may yet be deciding factor for long term success of these platforms.

As previously, the values on this chart are highly subjective and are based on my personal views and experience.