Menu

The reasons that Android phones are either slow to get system updates, or fail to get them entirely are pretty clear. The process of getting an update ready to push to a handset is decidedly non-trivial:

Google creates, tests and releases a system update.

Handset manufacturers take the system update and apply their vendo-specific tweaks to it (MotoBlur, HTC Sense, etc.), then test it on their various devices.

Carriers then test the update, certify it, and push it out to the handsets.

Mix in the fact that the average Android handset manufacturer seems to release 5-10 devices over a 12-24 month period and you can start to imagine the logistics involved in this process. We can clearly see an ecosystem that simply cannot properly provide long-term support for system updates to Android handsets (as it currently exists). It’s not due to malice, it’s just not practical.

I’ve been using a Droid 2 (R2-D2) with Android 2.2.x (Froyo) for about 5 months now1. The R2-D2 part is of particular note here, because while I have an Android device that is one of the most widely adopted handsets, it also means I have a different system OS than the stock Droid 2. While the stock Droid 2 received a system update last fall, the Droid 2 (R2-D2) has not received any updates since it was released.

So What? Or perhaps better phrased, why does this matter?

Geeks like to have the latest and greatest. We want the new, the better, the shiny. I certainly fall into that camp. However, I don’t really feel like I’m missing anything by not having Android 2.3 (Gingerbread). My 2.2 device does the things I need it to do, apps work, it’s stable… I actually don’t have any particular desire to upgrade to 2.3. Consumers are not terribly hurt (currently) by not being able to update their Android OS.

And that is the crux of the problem.

The lack of OS updates to active devices is creating a huge burden on the Android app ecosystem.

Developers have to support too many OS versions and devices. The testing matrix involved in supporting multiple OS versions, multiple vendor-specific extensions, multiple hardware configurations (differences in physical screen size and resolution, with or without a hardware keyboard, BlackBerry style keyboard vs. slide-out landscape keyboard, etc.). How to you optimize for user experience across that many variants? How do you effectively test your apps across them all?

This burden is heavy on the entire ecosystem. As it increases, it hinders the ecosystem’s ability to move forward until it eventually grinds to a halt. Stuck, unable to move under it’s own bloat. That is when it becomes a problem for consumers.

Smartphones in the post iPhone era are still in their infancy. This is a time in their evolution where they need to be nimble, able to quickly change and adapt, to constantly improve. The fragmentation of the Android platform is becoming a devastating impediment to that progress.

I experienced this on a small scale with my WordPress plugins and themes. Trying to maintain backwards compatibility was too much effort. It was taking longer to thoroughly test the new versions on various WP versions than it was to code, package and release them. It was hampering my ability to release. I eventually gave up backward compatibility as a feature and now test them exclusively on the latest release of WordPress as a matter of policy.

In stark contrast to the problems Android is seeing, Apple is cruising along nicely. They continue to push forward with their OS features and developer tools while fully supporting the last 2-3 hardware devices at the same time. Their 3rd party developers need only to buy one new device a year and the developer community is constantly keeping an eye out for when they can drop support for older OS versions. The result of this is twofold. Developers are able to invest their time building features and less on OS version and device testing, and the smaller device testing matrix means that both Apple upgrades and 3rd party apps are better tested on all of the iOS devices.

It’s clear to me which of these options is more attractive as a developer. If things go on as they are, it will become clear to consumers as well. The problem? I like choice. Though I plan to make the move to an iPhone 5 this summer, I don’t want my hardware options to be perpetually limited to Apple’s whims. I want Android to be competitive with iOS, but the current state of core OS + vendor extensions + carrier testing + developer burden won’t be able keep up. Something’s gotta give.

With a brief interruption to go back to a BlackBerry. This didn’t take due to battery life issues on the BlackBerry with OS 6. [back]

This makes me wonder if we (consumers and developers) would have been better off if Google got into the mobile device market with both feet. Instead of injecting another layer of indirection (traditional mobile device vendors), just take the Apple route and make your own line of devices.

It’s interesting to think of this in context of Apple and Google’s business model too. As long as the in-app ads display OK on older versions of the Android OS, Google isn’t really hurt in that capacity by folks carrying around phones they can’t upgrade. Conversely, Apple is making it’s residual money via app purchases and they want devs to have great tools and consumers to have the ability to use the latest and greatest.

If this was true only for major android versions, it would indeed be a long-term problem.
However, many android handsets don’t even get security updates and simple bugfixes in time. It can take months until a minor release hits my phone. So I chose to root it – but that sure shouldn’t be neccessary…

I see where you’re coming from here. I don’t think anyone is expecting developers to test their applications on ever combination of hardware/software out there.

Look at Windows updates. Moreover, look at Linux updates. These both work very well in pushing out changes to the userbase where the hardware is even more varied. Applications are developed, and thrive, in this heterogeneous environment – and have done so for years on end.

How is this really any different? Sure, different factors come into play (like input viability for onscreen vs physical keyboards), but at the end of the day these are pocket computers built on the solid foundation of Linux. Looking at it from that point of view, new OS updates are like distribution updates (and hence should be handled with care – and we see that they are), and applications may break upon an OS update and need to be fixed, but again this is not earthshaking news.

And sometimes there may even be changes that are “mutually exclusive” – you can’t make a single fix to make it work on two platforms. In that case, you need to create and maintain two branches of the software (cue screaming here); either that, or drop stop developing the product for old OS versions (most likely outcome).

Again, this isn’t anything we haven’t seen before. There are Windows 95 machines out there that the latest and greatest version of Software Package X doesn’t work on, while it’s progenitors did.

Your gripe is that Apple is easier: there is one OS, one Hardware, one Way. You develop and test there, and you know it Works. On Android, you develop and test and it works on some and not on others. And you need to find out why and fix it. Much like any other bug in your software.

Fragmentation is a significant issue with the Android platform, and I wouldn’t even blame it on the hardware variations as much as I would on the level of control that the providers exert on the devices they sell. Cellular providers either are incapable of, or refuse to adapt at the rate of change necessary to even maintain their already dismal satisfaction rates with consumers.

But don’t overlook the Google Experience hardware, which are developer focused devices which, as vanilla implementations, can be regularly updated with the latest and greatest flavor of Android. Examples of Google Experience devices include the Nexus One, the Nexus S, and – at least theoretically – Honeycomb tablets like the Xoom and Galaxy Tab 10.1.

This solution is far from perfect, obviously, because it dramatically restricts the hardware options to those who care about updated software. But relative to their competition – Apple – they won’t look that bad in that department.

Steve – unless I’m mistaken, there isn’t a Google Experience device I can purchase on Verizon. Regardless, the fact that the non-GE devices are so prolific mitigates the benefit of the GE devices. If a developer uses a GE device exclusively, they aren’t getting the same Android experience that the majority of their customers are. That often leads to bad edge cases.

There is not a Google Experience handset, although there is a tablet (Xoom).

Concur that devs are not getting the regular Android experience using the device, which is important if they’re developing for that platform. I thought we were talking strictly from a user POV, in which case the GE devices can be good options.

Either way, fragmentation is certainly a challenge for the ecosystem. What’s interesting is that the data we’re seeing doesn’t suggest it’s that much of a throttle. But we’ll see as it gets worse.

“Whatâ€™s interesting is that the data weâ€™re seeing doesnâ€™t suggest itâ€™s that much of a throttle.”

Agreed. And I’m not yet minding treating my Droid as a non-upgradable device. However there is a cost somewhere that has to be paid. Either devs can’t use the latest and greatest tools for compatibility reasons or apps will begin “breaking” on my device in the future.

I 100% agree. This is the main reason I don’t currently own an Android device – I want one that will be upgraded to 3.0 and beyond. NO device manufacturer that I could find was willing to promise updates. So I wait. But the reality is, this is a moving window and I’ll probably keep waiting, and enjoying my iPhone and iPad….

I don’t think Android is quite so bad. >85% is already Android 2.1+ and updates don’t come out as often anymore, the platform is becoming stable.

Software-wise google only introduces new features in new versions, everything is backwards compatible. So if you want to build an app, stick to the oldest API you want to support and it’ll work on newer devices just as well. This is IMO a big difference when compared to other software such as wordpress, desktop OS’es etc. Sure, the overall API doesn’t change but with Android even small parts will continue to behave the same way.

I’ve programmed an Android app that has Android 1.5 as a minimal requirement and I haven’t had to change a thing since building it to make it work on the latest versions.

The fragments API is (imo) such a compelling feature, without it your applications won’t run quite so good usability-wise on the tablets. But fortunately they brough out a static library for older Android versions to behave in the same way (http://android-devel[...]for-all.html).

Besides, in this scenario Apple isn’t really better, to release an iPhone-app for the iPad you’ll have to build iPad-specific stuff, whereas in Android you can have one app that runs on both.

All in all I think they’re running risks with such different versions but they’re handling it really well. I haven’t heard of much app compatibility problems other than apps that are targetted to a higher Android-version than your phone has, but that’s the developer’s choice.

I don’t get why everyone is always saying android fragmentation is a huge issue.

I am an android developer, my apps are used by pretty much every kind of phone out there and the only time I had to code something differently for a specific device/android version was when the manufacturer had not included a period on the numeric keypad. That was more of a location issue, than anything since in the country this device was located they used comma’s instead of periods to separate decimals and integers.

Android fragmentation is a big false hype, similar to the iPhone death grip. Sure, in theory there is an issue, but in practice it doesn’t matter in the least.

I am an android developer, my apps are used by pretty much every kind of phone out there and the only time I had to code something differently for a specific device/android version was when the manufacturer had not included a period on the numeric keypad.

I guess that not realizing that it’s a problem that you don’t live with the same hardware your customers are using is a totally different problem.

Android (linux) gives freedom to do whatever you want with it.
I’ve just upgraded my HTC desire with freshly cooked Redux 1.1.0.
I could also flash it with many more custom mods such as cyanogenmod, oxygen or even customize and compile it myself.

I currently own a LG Optimus GT540, and i bought an android phone to be able to download a large and diverse variety of apps, but am unable to do so as my phone is constantly on low memory. Many of my friends who own iphones or android devices with os 2.2 + say they simply move apps to sd when they download them. My phone still has 2.1 and am hardly unable to ever download the large variety of apps i hoped to be able to get. Will this problem ever be fixed , as not being able to download apps to me kills the whole point of an android phone

I have an HTC Hero & now an EVO 4G. I cannot connect either to a Bluetooth keyboard. Why would I want to? Well, to “power” email, blog and wordprocess, when convenient. *I’m a tech in a higher ed enviroment and would like to provide Bt keyboards in lab or communal settings so that students could use the keyboard via their Android devices.

I can easily connect my AWK to my first gen iPad and take notes as quickly as I can write (via email) and post them to my WordPress site.

I tried to upgrade my LG Optimus P970 software from Android 2.2 to a new version.After downloading the new software via LG pc suite, in the process of updating the OS it hanged midway .After unplugging the usb cable and inserting again to the pc to continue now the phone is not detected and the only thing appearing on the screen permanently is “SW Upgrage please wait while down loading”..who can help me go around this problem , I cant use my phone now. Please