Android vs iPhone development decisions

Release early, release often (sometimes abbreviated RERO) is a software development philosophy that emphasizes the importance of early and frequent releases in creating a tight feedback loop between developers and users.

— Wikipedia

To begin let me say that I’m both a web developer and a mobile application developer and I LOVE the “release early, release often” philosophy for web development. RERO allows me to make quick updates and improvements and add great new features for all my users. RERO is great. It’s awesome. It works and all the developers and users using the application are happy.

On the other hand, I loath RERO when it comes to SDK’s. It’s just a flawed and utterly terrible idea when there’s no clear and very accessible upgrade path for end users. As a web developer, I would not be happy if Microsoft decided to release IE9, IE10 and IE11 in the span of a year. My workload would more than triple, my user base would fragment and I’d be endlessly adding kludges for each new version. Unfortunately this is what’s starting to happen with the Android SDK and, as a mobile developer, I’m starting to get worried.

Android OS

To understand how RERO can harm adoption let’s take a look at the public Android SDK release schedule:

  • API Level 2, Android 1.1 — February 2009
  • API Level 3, Android 1.5 — April 2009
  • API Level 4, Android 1.6 — September 2009
  • API Level 5, Android 2.0 — October 2009
    • API Level 6, Android 2.01 — December 2009
  • API Level 7, Android 2.1 — January 2009
  • API Level 8, Android 2.2 — May 2009

Wow. In the past fifteen months (a little over a year) there have been seven public releases of different versions of the Android SDK. That doesn’t include carrier or manufacturer revisions with different user interfaces. It’s not that I’m not happy with the advancements of the SDK. They’re all wonderful and obviously the Android team is working really hard but there’s a problem. If we take a look at Google’s published Platform Versions stats and we can see where developers have a tough decision:

Source

More than 50% of the Android install base is still using version 1.6 or less. As a developer what should I do? If I choose to take advantage of the latest and greatest SDK I get less than half of the devices! But still, the bigger problem is there is no clear and easy upgrade path for those bottom 50% to get the newer OS version. Neither of my Google supplied development phones (which are only a year old) can be upgraded without a lot of illicit hacking and deep developer knowledge.

The Android OS is in deep trouble until there’s an easy way to upgrade the OS on every device that runs it.

iPhone OS

Now contrast this situation with iPhone OS. Apple has been lambasted by developers for their tight control and strict NDA rules regarding beta releases but in comparison to the situation with Android isn’t it better? The NDA period allows the SDK to be flushed out, before it is “publicly” available so that there is one complete well oiled version that all developers can target across a large set of devices.

The public iPhone SDK release timeline is also much longer:

  • SDK 1.0 - June 2007 (not public)
  • SDK 2.0 - July 2008
  • SDK 3.0 - June 2009
    • SDK 3.1 - September 2009
      • SDK 3.1.2 - October 2009
      • SDK 3.1.3 - February 2010
  • SDK 3.2 - April 2010

Major iPhone releases are spaced a year apart (with a few minor releases in-between) allowing developers to actually develop and release an app before the SDK changes.

The iPhone has another big advantage and it solves the problem of distribution as I alluded to earlier. iPhone users use iTunes to sync their devices and add content. The process of syncing the device also checks for updates and allows all iPhone OS devices (iPhones, iPod Touches, iPads) to download the latests version of the OS. As a result the March 2010 iPhone Platform Versions stats look very developer friendly:

Source

That’s only 5% of users who have NOT upgraded to at least 3.0 and 86% who are using one of the latest two (as of March) 3.1 minor versions. How great is that? Not only does 3.1 contain great features, I can actually use them and hit 86% of my users right away.

The Result

Recent trends are showing that Android OS based devices are passing Apple’s iPhone OS devices to be the No. 2 smartphone operating system in the U.S.—After RIM’s Blackberry OS:

  • RIM’s BlackBerry OS at 36 percent;
  • Android at 28 percent;
  • Apple at 21 percent.

source

I say as a developer I don’t care. The number of devices per OS is a great marketing number for Google and Apple to fight over but as a developer—who wants to get the most out of the SDK—I care about the version of the OS on the devices. If I want to use the latest and greatest SDK’s I’ll take Apple’s 80% of 21% over Google’s 30% of 28%.