One of the biggest arguments I’ve heard against developing anything for the Android platform is the problem of fragmentation. Now it’s no secret that Android is the promiscuous smartphone operating system, letting anyone and everyone have their way with it, but that has led to an ecosystem that is made up of numerous devices that all have varying amounts of capabilities. Worse still the features of the Android OS itself aren’t very standard either with only a minority of users running the latest software at any point in time and the rest never making a true majority. Google has been doing a lot to combat this but unfortunately the unified nature of the iOS platform is hard to deny, especially when you look at the raw numbers from Google themselves.
Android developer’s lives have been made somewhat easier by the fact that they can add in lists of required features and lock out devices that don’t have them however that also limits your potential market so many developers aren’t too stringent with their requirements. Indeed those settings are also user controllable as well which can allow users you explicitly wanted to disallow being able to access your application (ala ChainFire3D to emulate NVIDIA Tegra devices). This might not be an issue for most of the basic apps out there but for things like games and applications that require certain performance characterisitcs it can be a real headache for developers to work with, let alone the sub-par user experience that comes as a result of it.
This isn’t made any easier by handset manufacturers and telecommunications providers dragging their feet every time an upgrade comes along. Even though I’ve always bought unlocked and unbranded phones the time between Google releasing an update and me receiving them has been on the order of months, sometimes coming so late that I’ve upgraded to a new phone before they’ve come out. This is why the Nexus range of phones directly from Google is so appealing, you’re guaranteed those updates immediately and without any of the cruft that your manufacturer of choice might cram in. Of course then there was that whole issue with supply but that’s another story.
For what it’s worth Google does seem to be aware of this and has tried to make inroads to solving it in the past. None of these have been particularly successful but their latest attempt, called Google Play Services, might just be the first step in the right direction to eliminating at least one aspect of Android fragmentation. Essentially instead of most new feature releases coming through Android updates like they have done in the past Google will instead deliver them via the new service. It’s done completely outside the Play store, heck it even has its own update mechanism (which isn’t visible to the end user), and is essentially Google’s solution to eliminate the feet dragging that carriers and handset manufacturers are renown for.
On the surface it sounds pretty great as pretty much every Android device is capable of running this which means that many features that just aren’t available to older versions can be made available via Google Play Services. This will also help developers immensely as they’ll be able to code against those APIs knowing that it’ll be widely available. I’m a little worried about its clandestine nature however with its silent, non-interactive updating process which seems like a potential attack vector but smarter people than me are working on it so I’ll hold off on bashing them until there’s a proven exploit.
Of course the one fragmentation problem this doesn’t solve is the one that comes from the varying hardware that the Android operating system runs on. Feature levels, performance characteristics and even screen resolution and aspect ratio are things that can’t be solved in software and will still pose a challenge to developers looking to create a consistent experience. It’s the lesser of the two problems, granted, but this is the price that Android has to pay for its wide market domination. Short of pulling a Microsoft and imposing design restrictions on manufacturers I don’t think there’s much that Google can do about this and, honestly, I don’t think they have any intentions to.
How this will translate into the real world remains to be seen however as whilst the idea is good the implementation will determine just how far this goes to solving Android’s fragmentation issue. Personally I think it will work well although not nearly as well as controlling the entire ecosystem, but that freedom is exactly what allowed Android to get to where it is today. Google isn’t showing any signs of losing that crown yet either so this really is all about improving the end user experience.
For the past year I was somewhat of an anomaly amongst my tech friends because I choose to get an iPhone 3GS instead of one of the Android handsets. The choice was simple at the time, I had an app that I wanted to develop for it and needed something to test on, but still I copped it sweet whenever I said something positive about the platform since I’d usually be the only one with an Apple product in the area. When it came time again to buy a new phone, as I get to do every year for next to nothing, I resisted for quite a while, until one of my friends put me onto the Samsung Galaxy S2¹. The tech specs simply overwhelmed my usual fiscal conservativeness and no less than a week later was I in possession of one and so began my experience with the Android platform.
The default UI that comes with all of Samsung’s Android handsets, called TouchWiz, feels uncannily similar to that of iOS. In fact it’s so familiar that Apple is suing Samsung because of it, but if you look at many other Android devices you’ll see that they share similar characteristics that Apple is claiming Samsung ripped off from them. For me personally though the Android UI wins out simply because of how customizable it is allowing me to craft an experience that’s tailored to my use. Widgets, basically small front ends to your running applications, are a big part of this enabling me to put things like a weather ticker on my front page. The active wallpapers are also pretty interesting too, if only to liven up the otherwise completely static UI.
What impresses me most about the Android platform is the breadth and depth of the applications and tweaks available for the system. My first few days with Android were spent just getting myself back up and running like I was on my iPhone, finding all the essential applications (Facebook, Twitter, Shazam, Battle.net Authenticator, etc) and comparing the experience to the iPhone. For the most part the experience on Android is almost identical, especially with applications that have large user bases, but some of them were decidedly sub-par. Now most would say that this is due to the fragmentation of the Android platform but the problems I saw didn’t stem from those kinds of issues, just a lack of effort on their part to polish the experience. This more often happened for applications that weren’t “Android born” as many of the native apps were leaps and bounds ahead of them in terms of quality.
The depth of integration that applications and tweaks can have with the Android platform is really where the platform shines. Skype, for example, can usurp your outgoing calls and route them through their network which could be a major boon if you’re lucky enough to have a generous data plan. It doesn’t stop with application integration either, there are numerous developers dedicated to making the Android platform itself better through custom kernels and ROMs. The extra functionality that I have unlocked with my phone by installing CF-Root kernel, one that allows me root access, are just phenomenal. I’ve yet to find myself wanting for any kind of functionality and rarely have I found myself needing to pay for it something, unless it was for convenience’s sake.
Android is definitely a technophile’s dream with the near limitless possibilities of an open platform laid out before you. However had you not bothered to do all the faffing about that I did you still wouldn’t be getting a sub-par experience, at least on handsets sporting the TouchWiz interface. Sure you might have to miss out on some of the useful apps (like Titanium Backup) but realistically many of the root enabled apps aren’t aimed at your everyday user. You still get all the benefits of the deep integration with the Android platform where a good 90% of the value will be for most users anyway.
Despite all of this gushing over Google’s mobile love child I still find it hard to recommend it as the platform for everyone. Sure for anyone with a slight technical bent it’s the platform to go for, especially if you’re comfortable modding your hardware, and sure it’s still quite usable for the majority who aren’t. However Apple’s platform does automate a lot of the rudimentary stuff for you (like backing up your handset when you sync it) which Android, as a platform, doesn’t currently do. Additionally thanks to the limited hardware platform you’re far less likely to encounter some unknown issue on iOS than you are on Android which, if you’re the IT support for the family like me, can make your life a whole lot easier.
Android really impressed me straight from the get go and continued to do so as I spent more time getting to know it and digging under the hood to unlock even more value from it. The ability to interact, modify or outright replace parts of the underlying Android platform is what makes it great and is the reason why it’s the number 1 smart phone platform to date. As a long time smart phone user I feel that Android is by far the best platform for both technophiles and regular users alike, giving you the usability you’ve come to expect from iOS with the tweakability that used to be reserved for only for Windows Mobile devices.
Now I just need to try out a Windows Phone 7 device and I’ll have done the mobile platform trifecta.
¹I’m reviewing the handset separately as since Android is available on hundreds of handsets it wouldn’t be fair to lump them together as I did with the iPhone. Plus the Galaxy S2 deserves its own review anyway and you’ll find out why hopefully this week 😉