One thing I always hear when reading about mobile development is fragmentation. Steve Jobs, who talks about Android so much because he isn’t worried about it, harps on it relentlessly. Just today I read, on an Android blog, the following quote:
In an iOS world, you only have to write code once and know it is optimized for every phone that’s been sold.
Bahahahahaha. Yeah right. I do iOS development, and let me tell you, fragmentation there is a huge problem. First off, there are different OSes on different devices. Here’s a chart of that:
Compare that to Android:
Pretty similar. Android in this case has the benefit of having fewer OSes in play.
Our newest app (not yet released) uses Gamecenter, which runs on iOS 4.1 or later only. Which means that when we move to the iPhone we’ll have to do two apps or simply be unavailable to half of the population. Even on the iPad, where we are developing now, it remains to be seen how many people will upgrade to 4.2.
If I make a website and buy ads for it on Google, I don’t have to filter my users out by operating system. If I buy ads for my iPhone app I’m doing it somewhere that will let me choose to show my ads only to people on 4.1 or better.
Then there’s the hardware. Good luck developing anything for any iPhone before the 3Gs. I can’t find how many of those are left on the market (thankfully probably not too many, at least in the US) but if you want to support them you’re going to be adding a decent amount of extra work. Same for the first couple generations of iPod Touch which, by the way, don’t get upgraded nearly as quickly as phones.
And then there’s the display. We’re making a universal binary of our game that we want to work on the iPad, the iPhone 3GS, and of course the iPhone 4. As a result we have to do a bunch of extra work to get things to display properly on both handsets.
There’s plenty of fragmentation on iOS. It might not be as bad as Android. It just depends on what you’re doing. For some apps it won’t matter much at all on either platform. For some it will be impossible to support all devices. For many it will fall somewhere in between.
The post on the Android blog I mentioned earlier was inspired by Angry Birds, which has had some performance issues on older Android devices. But a little Googling shows it has issues on even the iPhone 3G.
Mobile devices will always have fragmentation because they’re evolving so quickly. They are right where PCs were 10 years ago, where hardware is improving quickly, developers are finding new ways to take advantage of it, and as a result users are upgrading frequently.
Nowadays you buy a PC and it lasts forever. I have a laptop that’s about 4 years old and it still feels more than good enough. But I’ll upgrade my phone every year or so for as long as Sprint lets me.
As a developer fragmentation isn’t a deal-breaker, it’s just another line in your cost-benefit analysis. And odds are it isn’t nearly as important as unit sales (where Android is now crushing) or ability to monetize users (where iOS has a healthy lead, though I suspect Android will close the gap significantly with PayPal) or distribution (also in iOS’s favor at the moment for most apps, though not all).
In the end developers will go where they earn the most money, and betting on fragmentation to stop that from being your opponent’s platform you’re making a big mistake.