Over the last couple of months, I've been using two competing phones day-today; a Nexus S (Android) and an iPhone 4 (iOS). Whilst there are many differences and similarities, one of the things I want to talk about today is the different ways in which they deal with updates to the core operating system. System updates are a crucial part of the mobile experience - sometimes they offer major new features but they are usually minor updates to deal with bug fixes. So how do Apple and Google deliver their system updates?
The Android platform updates itself via an "over-the-air" system which appears to rely on individual carriers to push out system updates. Due to the large number of different devices, certain updates will only appear for certain phones and this fragments further by region and carrier. For example, Android 2.3.3 came out 2 days ago and only runs on the Nexus S at present - whilst a number of customers in the US have received the update, my Nexus S is still refusing to detect an update from 2.3.2 leaving me to conclude that it is waiting for my carrier to push it out. However, when an update does appear, the process is very slick. A notification appears to let you know you have an update including details of what this adds and the size (which for minor updates tends to be a couple of MB). One tap starts the download process and, once complete, the phone reboots and you're up and running. At no point do you need to plug into a computer or even connect to a wireless network. It's very impressive. However, the lack of cohesive strategy on when updates will appear and on what devices they will work on causes the whole process to be a bit of a disappointment, especially when you're waiting on a major bug fix or new feature.
The iOS update system is very different. Each update requires you to plug your iPhone into iTunes where an update will then download and sync to the phone. Each update includes the entire OS, rather than an incremental update, so is typically around 450MB (depending on device). This takes a long time to download but then takes about the same time again to install onto the device. The advantage to this process is that if something goes wrong you can restore from a backup immediately (whereas on an Android phone in the wild you'd be stuck without a phone). Also, when an update is available, it is generally available globally within 2 hours of release and there is a button you can press to check for updates manually. Apple also post a direct download link on their support boards so it is generally fairly easy to get an update regardless of your location or carrier. However, the lack of an over-the-air facility and the massive downloads are very tedious.
When you look at the two download mechanisms, one would expect that Android users would update their phones more frequently than iOS users, particularly as the update is delivered directly to the device. However, the lack of support for devices and the requirement for carriers to approve updates means that only 0.8% of all Android users are currently running OS 2.3, with 57.6% on 2.2, 31.4% on 2.1, and the rest on pre 2.* software. It is difficult to contrast fairly with iOS as Apple don't release breakdown usage stats, but by looking at the usage figures the major apps are publishing you can get an idea. The number of users running iOS 4.* is around 90% with over 50% on the latest build of iOS 4.2 - there are only 10% running the previous generation family of 3.x and these are most likely users on the original iPhone and iPod Touches that aren't able to upgrade to iOS 4.0
Android Figures accurate as of Feb 2nd, 2011 (from Wikipedia)
Android 2.3 (Gingerbread): 0.8%
Android 2.2 (Froyo): 57.6%
Android 2.0/2.1 (Eclair): 31.4%
Android 1.6 (Donut): 6.3%
Android 1.5 (Cupcake): 3.9%
iOS Figures based on "Bump" application as of Jan 14th, 2011 (from Quora)
iOS 4.2.1: 52.89 %
iOS 4.2: 0.09 %
iOS 4.1: 27.50 %
iOS 4.0.2: 3.36 %
iOS 4.0.1: 2.95 %
iOS 4.0: 2.94 %
iOS 3.2.2: 0.49 %
iOS 3.2.1: 0.07 %
iOS 3.2: 0.10 %
iOS 3.1.3: 6.43 %
iOS 3.1.2: 2.52 %
iOS 3.1.1: 0.10 %
iOS 3.1: 0.21 %
iOS 3.0.1: 0.10 %
iOS 3.0: 0.22 %
iOS 2.2.1: 0.02 %
iOS 2.2: 0.00 %
I'm still keenly waiting for my update to Android 2.2.3 as it adds, amongst other things, a new feature which enables the NFC chip in the Nexus S to write to tags as well as read from them (something that should have been there from the start in my opinion). However, until my carrier pushes it out, I have to wait whilst other developers on US carriers get a head start. This would be fine for the average user normally, but I fail to understand why Google aren't hosting a manual update? An over-the-air update is convenient, but if there is a major bug fix then you should be able to download the update manually and do a tethered sync at the same time that Google pushes the update live.
The iOS system seems more archaic in that the updates are massive and you need to manually update, but the way in which Apple publicise the updates seems to ensure that users are updating. Whilst the statistics above aren't wholly reliable, it shows a trend that users are aware of iOS updates and willing to plug in and upgrade. From my own anecdotal evidence, I've seen similar high numbers of upgrade take-up with many non-technical people in my family running the latest version of iOS without any help to do it.
The way that Apple has done this better is that they a) publicise a new release (going to android.com shows nothing about 2.3.3 aside from a blog post on the developer board directing you to download the SDK) and b) have a "check for updates" button that you can click when you hear that an update is available. The Nexus S has a "System Updates" section within "Settings" but this only shows updates you've already been told about rather than forcing an update check. From searching around the internet this afternoon looking for the update, I found a number of posts extolling the virtues of dialling *#*#2432546#*#* (which is *#*#checkin#*#*) which forces the device to do a checkin with your carrier and should push any updates that are waiting to you. This is not an update system for the casual user!
Furthermore, Apple have unified their product line so that a new iOS update is immediately able to run on the iPad, iPod Touch, iPhone, and now the Apple TV. There are certain devices which are excluded (e.g. the original iPhone and original iPod Touch) but these are well highlighted. With Android, I have no idea which phones can or can't update and if there are technical limitations for this (as with the iOS updates) or simply the carriers not being bothered. From some reports, it seems that the carriers are loathe to push out functional updates as they detract away from new products they are selling...
Overall, I think Apple needs to take some of the improvements in updating that Android has made such as pushing out incremental updates rather than forcing you to redownload the OS, and allowing you to update the OS without connecting to iTunes (even if this is only over Wi-Fi). However, the major problem with Android is that it is stitched up with mobile carriers, something the iPhone broke away from. When this extends to critical bug fixes, then it is the end user that suffers. Apple needs to take some cues from Android in terms of implementation, but Google needs to take back more "openness" from the carriers if they are to provide a sufficient update system.