Across the world, right now, Android developers are weeping.
The state of Android OS and the many, many devices that run it has been a problem for some time now. Unfortunately, rather than gradually improving, it's drastically getting worse. This article will be my attempt to bring some attention to a problem that exists in mobile development. Something that is, and will continue to, affect our industry.
In a disclaimer spirit, let me first clearly state that I do own an Android phone, the Galaxy Nexus.
Carrier overlays, or just 'overlays', are basically changes to the Android Operating system itself, made by brands such as Samsung, Motorola and HTC. It's an attempt to differentiate themselves from other Android carriers. They bring with them new functionality, (in some cases removed functionality), and vanity changes such as overall look and feel tweaks.
You can read more about common Android Overlays here.
This is fundamentally a very bad idea. When Google releases new versions of Android OS, the manufacturers of the overlays then have to sit down, assess, and create a new release of the overlay that's compatible with the new 'base' OS. This is a time-consuming process, which make Android phones with overlays a whole lot slower at upgrading to newer versions of Android.
This leads to OS Fragmentation, or 'major differences between devices', which is a huge issue for developers.
Apple don't quite have this problem. They are the complete masters of their own eco-system (for good and bad, I might add). When it becomes time for a new cycle in the iDevice product line, they create deliberate leaps in functionality that require the new, much shinier device, and the Apple customer-base is infamously likely to upgrade. And fast.
Comparing the operating system versions over time (Android / Apple) and it becomes abundantly clear that the fragmentation created by overlays have horrific consequences for the Android platform.
Developing for a fragmented platform
So why does fragmentation really matter?
It ultimately boils down to app development. See, for people outside the immediate dev-bubble, this might sound strange, but supporting multiple versions of an operating system in the same app can be (read: is) tricky.
Usually with things like this, backwards compatibility is the problem. You build something in version 10, and it's not supported on 9. But when 11 comes, it still works. With Android, this is not the case. You got an issue of both backwards AND forward compatibility. Every iteration of Android OS collectively cause issues on a LOT of apps on the marketplace.
Apple, comparatively, handles this fairly well. Forward compatibility is still a concern, but it's a completely sensical process. You're not looking at any major rewrites, just 'tweaks'.
Where this affects end-users is when someone downloads an app to their HTC phone, and it just crashes. Why? Maybe because their device is running an incompatible version of Android. Maybe because the device capabilities aren't good enough. In most cases, users won't know.
This has ultimately added to the perception that Android devices are, and I quote Rovio; 'too complex'.
The financials. Reality meets revenue
So, as outlined above, there are practical issues. There are also some quite staggering financial issues. Even though it might not be immediately apparent living in Australia, Android devices vastly outnumber iDevices. And trends are skyrocketing in the same way. The affordability and competitive element (any manufacturer can make an Android phone) mean that Android devices ultimately will always be the cheaper option, and by definition that will make them more popular globally.
So that would theoretically mean revenue from Android apps should be comparable to Apple apps right?
In fact, the numbers are so heavily biased towards Apple that it's almost a bit hard to believe. Out of the revenue generated in 2011 by all apps, based off market research performed by Distimo, the actual state of affairs is something like this:
I can't help but feel defeated when I see that. If you add iPad and iPhone together and compare it against the Android platform, it paints a tragic picture.
pluggd wrote a very informative article about why this is, called 'The real challenges in Android monitization'. Well worth a read.
The impact of all this
So, put yourself in the shoes of an independent developer here. You're faced with hard facts that Android development is excruciatingly hard from a version and device variance point of view. Next to that, you have figures implying the profitability of Android apps are vastly inferior to Apple apps. What do you do?
Most likely, you'll develop an Apple app.
And that, ladies and gentlemen, is the perpetual behaviour that's happening right now. More apps get done on iPhone first, revenue generated gets more biased, and there's no end in sight.
For agencies and brands, this has different implications. Big brands in mobile space can't afford to not be represented in Android space, because of the huge influx of Android devices and popularity. So in that space it comes down to more a cost versus coverage discussion.
.. but I digress. Moving forward.
Hopefully everyone agrees that monopoly is always a bad thing.
Google really challenged the iDevice ecosystem, and by relying on Java as a development language they automatically got the support from millions of Java developers. It's all positive, don't get me wrong.
But it's reached a very dangerous territory now where Android developers are getting frustrated, and particularly the indie developers (who are arguably the most important to keep a platform alive). Google are faced with a very real problem here, one that they consistently seem to disregard.
Let's be honest. We want Android to flourish. No one wants Apple to completely dominate, because monopoly leads to 'we can do whatever we want' decisions.
However, this elephant-android in the room has been ignored for way too long, and the lack of action is becoming quite scary. The perceived 'lack of direction' has been created BY Google, but ironically the only way moving forward is not from Google boardrooms, but from outside influences.
Listen to your developers. Take a hint from Microsoft's Steve Ballmer. (Maybe in a less 'insane' way). Developers make or break a platform, and keeping them happy is a fundamental part of success. Fragmentation is a problem, and working with the community to address this is absolutely crucial.
In closing, there are a lot of resources about this online, and obviously not everyone is going to agree with me. For the sake of impartiality, here are a few articles that look at the issue from different angles;
The Guardian on 'How Google has lost control of Android', 'A developer's take on fragmentation' from The Android Authority. Mashable writes about 'The pro's and con's of fragmentation'. And TNZ through Zipline's slightly more direct 'Stop whining about Android fragmentation and do some damn QA'.
As always, thanks for reading. Until next time: Up up and away!