28 Mar 2012

An Analysis of Android Fragmentation

Android Fragmentation

Lately, there have been a spurt of reports and surveys detailing the concern the developer community has about Android fragmentation. But is fragmentation as big of a problem as it's made out to be? Let's take a look.

When we talk about fragmentation, we're essentially looking at two variants - hardware fragmentation and software fragmentation. Hardware fragmentation is used to describe the fact at any given point in time, devices based on the same software platform are running on different types of hardware - processors, GPUs, screen sizes, etc. Now, this should be less of a worry for any developer as it is inevitable if you want to target the majority of the market. Apple's ecosystem has minimal hardware fragmentation (although it has increased with the retina & non-retina display devices, and could become even worse if the screen size pattern is changed), however, every other software platform, ranging from Windows to Android would face a level of hardware fragmentation, as vendors target the market at large. Even if Windows Phone or Windows 8 / RT manage to take off in any meaningful way, this would be a problem. As an industry matures, hardware vendors tend to consolidate their position (as in the case of Intel) and the problem takes care of itself.

So let's take a look at the elephant in the room, which is software fragmentation. Software fragmentation is used to describe the fact that, at any given point in time, devices running on a software platform are running on different versions of the operating system. In the case of Android, competitors have long harped on that this wastes the developers' time, as they focus resources on making apps compatible with every available version of Android. These version differences are driven by two factors - (1) Customizing every new android version for manufacturer specific hardware & UI customizations and (2) Customizing this manufacturer updated build to incorporate carrier customizations.

Having understood this, what does Android fragmentation look like?

Note: Data is from the preceding two week period, so all dates have been moved back by 7 days to reflect the mid-point of the date range.

Most reactions would be something along these lines:
This is so messy! Why can't manufacturers & carriers roll out updates faster? This looks like a really big problem.
The problem is it's really difficult to draw conclusions of any sort directly from raw data. So what can we do to make our life easier? Chris Sauve posted his analysis of Android fragmentation, based on a formula which he crafted which seems to show an interesting pattern. The problem is, custom made formulas tend to be subjective. Let's see what we come up with, if we run some common statistical measures on Android's historical version distribution data (from the chart above).

Nature of Android Fragmentation

Since, we're essentially going to be analyzing the distribution of android versions across various devices; we need to look at properties of that distribution and how it's been changing over time. One important statistical property we need to look at is Kurtosis, which is a measure of dispersion of a data set - Higher the kurtosis, higher is the number of active Android versions, and hence, higher the fragmentation.

So what does Android fragmentation really look like?

Note: Value of Chris Sauve's Formula for the adjusted date of 27-Feb-12 was not available

Well, that's much better, isn't it? Kurtosis seems to have smoothed out Chris Sauve's formula, by incorporating the entire data set at any given point. Even with all the manufacturer and carrier noise, this essentially shows that Android fragmentation is not a problem that's getting worse. In fact, fragmentation is getting more and more cyclical as Google is moving to an annual release cycle for Android. This chart shows that fragmentation peaks a few months after the release of a new Android version and falls to a low just before the next release. This very similar to what happened with previous Windows releases, except that in the PC market a newly released version took years to overtake the previous version.

Aside from the annoyance this causes to enthusiasts, this fragmentation cycle actually has considerable benefits for developers. Since, currently it takes about 6 months for a new Android version to start making inroads into the market, which is midway through the current release cycle. Developers can use this time to optimize their apps for the new version. This actually avoids problems like app crashes after updates as we've seen on iOS. Of course, early adopters still face this issue, but luckily, thanks to the "fragmentation" of the Android ecosystem, the larger market does not.

The recent surge in reports focusing on Android fragmentation can be attributed to the fact that we are currently at the peak of the fragmentation cycle.  Android 4.0 Ice Cream Sandwich (ICS) has been the most awaited version of Android from the developers' perspective because of the unification of the smartphone & tablet platforms. Therefore, there is a vocal minority of developers, who are disappointed with the fact that ICS still has very low market penetration. Once the cycle moves ahead with ICS going mainstream, quite a few of the dissenting developers will be back in the fold, before the cycle starts again.

Concentration of Android Versions

But what about app development? Don't developers still need to take into account all the earlier Android versions into consideration when designing an app? To analyze this, let's look at the Herfindahl Index or H-Index, which is a measure of concentration, usually applied to measure competition. As compared to Kurtosis, the H-Index places greater emphasis on larger data points.

The value of the H-Index varies from a minimum of 0 to a maximum of 1 and a higher value indicates a higher degree of concentration into a few Android versions. For example, the H-Index would show a maximum value of 1.0 for a single Android version across all devices, a value nearing 0.50 for two dominant Android versions, a value nearing 0.33 for three dominant Android versions, and so on.


Now, this is enlightening! This shows that just as fragmentation hits its highest (a larger spread of active versions), as indicated by Kurtosis, the majority of Android devices are still concentrated into two versions as indicated by the H-Index value nearing 0.50. Now, as the new Android version reaches higher market penetration, it increases the number of high use Android versions, and the H-Index goes down to a value of 0.30-0.40. After this, the new version, replaces the oldest major active version in the release cycle, and hence the H-Index follows the same cyclical pattern. 

Now, this means that at any given point in time, developers only need to focus on incorporating the last two Android versions, apart from the latest Android version or upcoming release. 

Conclusion - As ICS updates reach flagship handsets, and new ICS handsets and tablets are released to the market over the next couple of months, ICS would start replacing Gingerbread and FroYo. Due to this, the fragmentation level should reach another low, before the release of Android 5.0 Jelly Bean.

Developer interest tends to peak and wane based on their individual capacities and experiences. But, at the end of the day, as developers begin to understand these patterns, fragmentation will not deter those looking to target the majority of the market.

10 comments:

  1. That was an interesting read.

    ReplyDelete
  2. Really great article- most approachable to those less mathematically inclined while not sacrificing any insights or information. A difficult task executed beautifully!

    ReplyDelete
  3. sameer_singh172 April 2012 at 16:39

    Really appreciate the compliment! Thank you.

    ReplyDelete
  4. Well done!  I tire of the vocal few who complain about Android fragmentation.  This is business as usual for anyone that has developed Windows software for more than a few years.

    ReplyDelete
  5. Very well done. I'm Chris Sauve, who you reference a number of times. I certainly didn't think my measure of fragmentation was the be-all and end-all of measurements, and I prefer yours for its statistical usefulness. 

    I do disagree with your conclusion though. The fact that developers "need only" target two prior Android releases AND the next release is humorous. That's a ton of overhead, especially when there is hardware and ecosystem fragmentation on top of the software fragmentation. Looking at this data in a vacuum is a poor choice because developers have a choice on where to put the majority of their efforts. The same analysis on iOS (which I have done some of the work on here: http://pxldot.com/post/18754186750/ios-ebb-and-flow) would likely reveal why many developers are choosing to ignore Android (i.e., absolute fragmentation not as important as relative fragmentation among competing OS's).

    Also, the main thrust of my original Android article was that the cycle time for new versions reaching the majority of the user base is increasing with each successive version. iOS, on the other hand, is doing so at an increasing pace. That gives developers and users a good reason to avoid the platform if they want a device that is at the cutting edge for as long as possible.

    ReplyDelete
  6. sameer_singh175 April 2012 at 04:59

    Hey Chris, great to hear from you. Love your work.

    The point of my post was not to state that Android is easier to develop for that iOS. Rather, it was to show that Android fragmentation is not as big of an issue as some assume and that this sort of fragmentation always has and always will be prevalent on any non-proprietary software platform.

    Android definitely is more effort, but larger developers choose to focus on it because you can simply reach a far larger audience. For smaller developers, iOS is the easier choice, but as they build scale, they look to expand to Android as well. Google's trying to turn the tables by unifying the development for smartphones & tablets, but we likely won't see the effects of that until tablet penetration reaches an inflexion point.

    That last point is something I don't entirely agree with. I agree with the fact that the initial diffusion of new Android versions has slowed, but this is because manufacturers have figured out that if updates are delayed by a few months, a lot of early adopters will simply buy new devices, especially at carrier subsidised rates. The adoption rates climb up very quickly once new devices are launched as manufacturers tend to roll out updates at the same time. For example, Gingerbread and ICS were launched almost exactly a year apart, and ICS penetration is 2.9% currently. Gingerbread penetration, exactly one year ago, was...... 2.5%. So it's really just the same cycle repeating itself. Gingerbread overtook FroYo only in Oct '11 and I expect the same pattern with ICS this year.

    Developers should be most concerned with aggregate data, as you are building for the larger market. As I've stated in my analysis, the one benefit this offers is that developers have more time to optimize their apps for new OS versions, which leads to fewer app crashes.

    I'm very curious about the iOS analysis as well, especially how the data would respond to these measures!

    ReplyDelete
  7. Agree to disagree, I suppose. When indexing the versions to their start date it's clear that successive versions are diffusing more slowly, even once the inflection point is hit. In theory longer lead time would allow developers to optimize, but the huge number of hardware configurations most definitely leads to way more crashes on Android phones (many phones can't even run a given app). Finally, the idea that a developer needs to target the larger market is patently wrong. If I give you the option for a million users paying them nothing and a thousand users paying $2, a developer will make the same choice every time.

    ReplyDelete
  8. sameer_singh175 April 2012 at 13:18

    Again, I agree that hardware fragmentation is a problem, but it is a problem any non-proprietary operating system would face. 

    And I absolutely agree that Android is lacking on the monetization front. I didn't mention that because our discussion was focused on fragmentation. But again, this is an issue that affects smaller developers more than larger ones. With in-app advertising, the economics come out in Android's favor if your app is used multiple times a day by millions of users. That's a recurring revenue stream that can't be replicated by app purchases. 
    However, for smaller developers', in-app advertising isn't nearly enough to even meet the cost of building the app. The good part is that Google seems to have finally recognized this, and the move towards merging all paid content offerings with the android market, into the play store, is aimed at meeting this gap.

    When users start to buy content from a store, be it books, music or movies, and apps are available from the same store, you're effectively reducing the stigma of pruchasing an app. Logically, it makes sense, but whether it will have a real-world impact remains to be seen.

    ReplyDelete
  9. Thanks. Makes me wonder how MS would handle fragmentation in their current phone OS.

    ReplyDelete
  10. I think that's a problem they've decided of focus on once they reach it. Fragmentation would only matter once they achieve some scale, and that's their biggest challenge right now.

    ReplyDelete