OK, MG, I Take It Back
techcrunch.com
techcrunch.com
I've only dabbled with Android but the diversity of devices and versions seems to require the same lowest common denominator techniques I burned out on as a web programmer.
I'm not so sure, I think it'd be hard to argue that iOS 5 isn't far ahead of Cupcake (Android v1.5).
The iPhone 3GS was released 31 months a go. It can run the latest version of iOS and many iPhone 3GSes already do. In fact, 66% of all iPhones have the latest version of iOS installed [1].
Are there any Android phones from that time that have the latest version, Ice Cream Sandwich (v4.0), installed? How many even have Gingerbread (v2.3), which was released more than a year a go? In June of 2009, the most recent version of Android was Cupcake (v1.5); I'd wager that many Android phones have never been updated since.
[1] http://www.readwriteweb.com/mobile/2012/01/more-than-66-of-u...
If that is a valid comparison then perhaps building a library to abstract away the OS differences (like e.g. jQuery) is a big opportunity for someone. On the other hand maybe there are some features that are impossible to emulate on older platforms, or there are orthogonal features that can't be abstracted away.
The comparison is quite valid, in my opinion - in much the same way that modern web browsers exist which have fixed many of the irritating API issues and abstraction mistakes of their predecessors, new Android versions provide corrected abstractions and a cleaner API but are rarely available.
[0]: http://forum.xda-developers.com/showpost.php?p=9213433&p...
MAcOSx application developers also face fragmentation so do BB app developers WM developers, etc.
Targeting iOS 5 may be less wise. But even then, you will only be missing the customers who bought the cheaper 3G instead of the 3GS (about 2 and 1/2 years ago), or customers with 3 year old phones. Or people who haven't upgraded their OS, which will probably be more significant.
With Android, you can target 2.2 (SDK released 20 May 2010), 2.3 (SDK released 6 December 2010), or 3.0 (SDK released 22 February 2011). And you won't find many customers with an early 2010 phone who've been able to update to 2.3, and few with a late 2010 phone who've updated to 3.0, the 2011 OS. Seriously, WTF?
We might look back at this as time when Google made advances in the OS, but not a time when developers reached a large market. Kind of like the iPhone - iPhone 3G transition. Remember the hacks and jailbreaks then?
Makers of iOS apps can safely develop for iOS 4.2, since more than 97% of iOS devices have at least that version installed [1]. IOS 4.2 is little over a year old. Can a full time Android app maker afford to solely develop for Android 2.3 (which is also a year old)?
[1] http://www.marco.org/2011/11/30/more-ios-device-and-os-versi...
http://developer.android.com/resources/dashboard/platform-ve...
Android 2.1 came out on January 12, 2010 (2 years). Android 2.2 came out on May 20, 2010 (20 months).
This is fragmentation.
From the ~100 different mobile operating systems that are in use today, maybe 95 can be targeted by a single code base, because they are all compatible with a common platform: Android 2.1 Eclair.
You still have to consider the many different hardware configurations. But most of the work of porting your application from one system to another is gone.
iOS and Windows Phone are complete end user operating systems, which are both made for a very specific hardware configuration and user experience. Android is a cross platform foundation that you can use to build those kinds of operating systems on.
Is there a common application platform for both iOS and Windows Phone, and how often is it updated?
The answer is: Yes, the web is such a platform. And it usually takes many years until an update is universally installed on all systems.