Sunday, June 6, 2010

On 'On Android Compatibility'

[I'm going to talk about Android a bit in this post. You should know that I'm Android's Open-Source and Compatibility Program Manager, so this is near and dear to my heart. But remember that this is still my personal blog, and thus my personal opinion. I'm not necessarily speaking for Google here. This post describes some of my personal perspectives on the mobile industry.]

On Monday we posted a blog I wrote about Android's approach to compatibility over on the official Android blog.

The results were interesting. Tom Gibara made the great point that in exchange for handling device diversity you get a much larger audience in return. Engadget has presented both sides of this topic, including the good and the bad. Although my personal favorite example of the negative point of view is Harry McCracken's somewhat histrionic (IMO) post.

A Name for the Ailment
The gist of the main criticism is that there are multiple versions of Android available at the same time. What I think has been missed is that I never said this was a non-issue; I just said that calling it "fragmentation" is too vague to be helpful (and then moved on, since Monday's official blog post wasn't about this.) Regardless, I actually liked the word Mr. McCracken used to describe this -- "versionitis" -- because it's a pretty evocative but descriptive term.

So, what about versionitis? It's certainly true that there are several Android versions extant at the moment, but I believe this isn't a big deal. For one thing, the risk of user confusion is extremely overblown; you've really got to be cynical if you think the buying public is somehow too stupid to comprehend the concept of last year's model, as applied to mobiles.

From a developer's point of view it's admittedly a bit trickier, though. You can do without features from later versions and rely on Android's forward compatibility to target the largest possible audience; or you can make a flashy cutting edge app for the latest version and wait for audience size to catch up. Although sometimes you don't even have to choose, because with a little extra work you can make an app that will run on old versions AND take advantage of new features if they are available. Nobody likes extra work, but at least as Tom Gibara pointed out, you're getting something in return.

But all that said, it comes down to choice: consumers and developers have to make some decisions, and the argument is that this all treads dangerously close to a tyranny of choice. Personally, I don't think it's nearly that bad, but of course that's just my opinion, and I respect that some people don't agree. And anyway, in an ideal world we'd like to see all devices running the latest version of Android -- it's not as if we are somehow opposed to the idea.

Wherein We Invoke a Business Cliche
But the main reason why this issue just isn't that big a deal is because we're right in the middle of a sea change that will wash this all away.

Rewind to about 5 years ago. This is recent enough you had feature phones and smartphones mostly as we do today, but long enough ago that it was before the mobile revolution really got underway. Back then as today, it was practically unheard of for a feature phone to ever get a software update. As for smartphones, it wasn't unheard of to get an update, but it was pretty uncommon (at least in the consumer space.)

Why? The reason was that the smartphone platform vendors controlled the software. It was exceedingly difficult for OEMs to differentiate on software because they had little control over the software. It was difficult for them to differentiate on features because they could only ship features supported by the OS they were using. But it was still a fiercely competitive market and they still innovated as hard as they could.

So they innovated on the only dimension they had control over: hardware and industrial design. The inevitable result was that as soon as an OEM released one phone, it was immediately on to the next. The follow-on to a successful device was another device. "Version 2.0" wasn't an upgrade, it was a replacement. This is how we ended up with 16 different RAZR models (if I counted correctly), each with different hardware. It was easier for OEMs to rev hardware than software, because they had little control over the software.

Think about that. Easier to rev hardware than software! This flies in the face of everything we've learned from the personal computer. It's almost like the cell phone world ran counter to the laws of nature, so as soon as someone offered the OEMs the chance to control their own software destiny they jumped at the chance. And that's exactly what Android as an open platform is doing.

And the Point Is...?
So what does this have to do with versionitis? Simply this: it takes time to rebuild a manufacturing process.

When all you do is rev hardware, you get pretty good at it. You optimize around it. You make being good at it a competitive strength. The OEMs are transitioning to a more PC-like world where they control their own software destiny, but to do this they need to update their procedures and tools.

This takes time, and today we're right in the middle of it. Device manufacturers want your brand loyalty. They also know they aren't going to get it unless their users have a good experience, and they know that users are expecting that the new $500 tiny computer they just bought comes with a year or two of support. OEMs know this, they are hardly dumb.

The updates are coming. You can see it already, with devices like the Samsung Moment and HTC Hero (for Sprint) getting 2.1, and commitments to upgrade other models. Section 12 in the Compatibility Definition Document even requires that compatible Android devices be upgradeable, which at least sets the stage. Device manufacturers are getting better and better at doing these updates -- and I mean, it's not like they are going to get slower at it.

That's why it just doesn't make sense to me to worry much about this versionitis thing. It's certainly true that today some people aren't getting the updates they want, but that will change over time. And while it may be poor consolation when your buddy's got a later Android version than you, your current phone isn't just going to stop working. And of course the reality is that to the vast majority of the millions of regular-Joe Android users, this isn't even an issue.

So for some people it's painful today, but really they're just impatient for the future to arrive. We have to take the long view, though -- and as far as I can see, the view is pretty good.


Milind Rao said...

I don't think that Harry McCracken's post is "histrionic" in the least. I agree with Harry completely and I think the biggest problem here is that Google downplays this, knowing they can't figure out how to fix this, or worse, actually believes that this is not a problem. If Andy Rubin, you and others in Google seriously don't believe this is a problem, then this is the same hubris that afflicted Google while launching the Nexus One and refusing to have a phone support. The tone deafness of Google in understanding that people who had plonked down $500 on a device expect to talk to someone to get problems resolved is astounding. They don't expect to wait for days between official denials, official acknowledgment of problem and official unilateral closing of issue as fixed.

While there is no denying that some devices can't be upgraded indefinitely (although I'm running the G1 on a 2.1 modded ROM), there are many things that the OHA and especially Google can insist on. If it's a Google experience phone or whatever it is that allows vendors to add the Market app on the phone, then the phone can't ship with a version earlier than the latest version. For at least 18 months after a device is launched, they have to be upgraded to the current version in a minimum of 2-3 months of a new release. Otherwise, you are ejected from the OHA etc.

I was appalled to hear Larry Page blame apps for battery drain. If I have to turn off half the features to use a phone, why buy a smart phone? If we are going to tout a multi-tasking OS (as we should), then how can the OS not have tools to manage background apps and services?

It's okay to expect a tweaker to look at usage statistics and partial wake usages. But to expect main stream users to do that is ludicrous! This needs to be a easy to understand app that's built into the OS that shows a list of apps that can potentially be causing battery drain by not letting the phone sleep and allow you to suspend/uninstall the apps.

A bang up device like the EVO is getting slammed for battery drain while on standby. Should the reviewers and users all be Android experts? Or should the OS have tools that can help them figure out which app is likely causing the battery drain? If every one in Google shares Larry Page's assessment, there is no hope.

Thomas said...

Nobody, except some tech geeks, cares about all that.

People just want to use their gadgets (including downloading apps) without being disturbed in whatever they're up to.

It's up to us geeks/providers to assure that our internas disappear to the end user and that we provide a consistent, straightforward, content only route to go.

I really don't like the other, proprietary, approach, but at least it works (so far)

krishna kumar said...

Your points might have had some validity if you mentioned the iPhone or Apple even once. All that you talked about started with it. We owe it to them even if google feels its 1984 all over again. Also, it wasnt them who snooped on my wifi, was it?

Your entry purports that suddenly one morning everything changed. Hard to take someone seriously who is in so much denial.

All the best.

James Moore said...

I think Dan's substantially right: you solve this problem by moving forward very quickly.

Right now the hardware manufacturers aren't very good at what they're doing. But to expect them to suddenly become geniuses at keeping up-to-date with software revisions just isn't realistic.

Yes, slam them hard for not providing updates. They'll learn. But Android wins by moving forward far faster than Apple can move. You don't move forward quickly by putting in restrictions on what people can and can't do - you just innovate enough to leave the problems in the dust.

freitasm said...

It may be true for feature phones, but in the smartphone world, until recently dominated by Microsoft, RIM and Palm this was a different case.

Let's take Microsoft for example. Windows Mobile was pretty much the same, regardless of which OEM released the device. The main differentiators were hardware (for a while) and then UI (and even so only superficial changes).

However, built deep into the OS there was a feature called Windows Update. This has been there since Windows Mobile 5.

However, Microsoft's customers weren't the OEM, neither the end users. No. Their customers was - and still are - the mobile operators.

A few years back, a 20MB OTA update would be something the operators would never let in their networks.

Also the fear that a remote update could circumvent or break some of their so loved walled gardens or pre-loaded "value added" apps caused them to put breaks on this idea.

For example take DST updates. For years Microsoft made DST updates available for Windows Mobile users. Distribution method? Go to a website (hard to find by all means), download the file to a PC, install to a smartphone, reboot.

The other way would be using the existing Windows Mobile Update feature.

Yes, a never used but existing feature that would allow users to update OTA. Just like we do now.

Reality is some of the "solutions" existed for some time, but operators blocked them from going live.

Apple's role in all this is changing the way things work. Android is doing a good job in this front. Symbian does a bit but still needs tethering. I am afraid Microsoft is going to lose it.

What Google started doing but didn't delivery completely was a way for customers to break free from mobile operators in this front.

The Google Phone store was a great idea, but Google decision to scale back and use it as a "marketing tool" only will just throw customers back in the dark ages.

Not everyone wants a mobile operator-branded device. Bring us vanilla options, like the Google Nexus was.

Dan Morrill said...

@Milind It depends on your time horizon. I agree that today some users have a problem with getting the latest updates; but I disagree that this represents a long-term problem. James Moore's comments (as well as Andy Rubin's) also explain this pretty well, so I guess we'll have to agree to disagree. :) Re: battery, Android has had battery life reporting tools since 1.6. When your battery runs low and you get the "plug in your charger" dialog, you should have a button to display battery usage by apps. If an app is indeed draining the battery, it is easy for a user to know. Of course it could well be that the discoverability of this feature could be improved, but it's actually been around for a while, and users certainly don't need to look at usage statistics or wakelocks.

@Krishna - That's complete nonsense, the entire point of my post is that this is a sea change, which is the exact opposite of something happening overnight. Please troll elsewhere. If you want to assign credit for the change, I would 100% agree with freitasm who noted that Microsoft had all this, but carriers and OEMs didn't have the motivation to use it. Apple was only one of several players who got things going.

@freitasm - Yes, spot-on. My point wasn't so much that it wasn't possible as that it simply didn't happen in practice, for exactly the reasons you note. I didn't mean to imply that Android was the sole cause, just that Android came about at the right time to fill a need that others were recognizing as well.

Levy said...

Nice post! Thank you

John L. Cheng said...

The good new is that Google has shown Android is a great OS, and that Google can make software that is a strong competitor to Apple's.

The bad news is if the consumers who bought Android phones did not get the support they expect, they will quickly lost faith and never buy another Android device again. 2 years of regular updates is the minimum amount of support consumers expect.

If phone makers and Google want to succeed, a commitment to provide upgrades and support to consumers is a must. A leaked document from T-mobile mentioned the line "No phones left behind". If T-mobile keep their word, then consumers will have an alternative to Apple that they can count on. One can only hope that companies like HTC and Motorla will do the same.

On Google's part - today's hardware makers will need a lot of help to make OS updates roll out faster. I hope the people at Google recognize that, and for the time being, is really going out of the way to make OS upgrades faster and easier. For Android to succeed, it is important that consumers do not become disillusioned due to lack of long term support.

Anonymous said...

I'm wondering if there is any plan to stop OEMs from messing with the UI and making sure their custom apps are removable.

It would also be nice if these 3rd party customizations were forced onto the market place so there wasn't software feature segregation between devices.

If the OEMs want to charge for their software that's fine but the hardware is what should be setting phones apart from the competition.

Having different UI and software features is just segregating user experience between devices.

For example from a hardware perspective I really like the announced Samsung Galaxy S but when I look at all the extra software "features" and changes they have tagged on I no longer want the device.

I'm not completely competent on all 60+ devices running Android but so far the Nexus One is the only Android phone that would meet my needs in terms of software experience.

Don't get me wrong I think it's great OEMs are trying to improve on the UI and add features through bundling software but I really would prefer this was being done in a more modular way.

Like I wish the UI changes were done in a more X11 fashion where you choose your preferred Window Manager.

If I feel like using the HTC Sense UI today and the stock Google UI tomorrow on a Motorola Droid I should be able to do so.

Please correct me if anything I have said here is wrong but this is the perspective I get from the outside looking in.

I haven't been able to afford the $525 pricetag of the Nexus One (with AT&T frequencies) but someday I hope to get off this iPhone 3G and onto an Android phone.

Milind Rao said...

@Mr. Windle

Custom UIs are good and in fact HTC's Sense is very good. Rather than preventing vendors from using a custom UI, I'd say that they need to be encouraged.

However, what Google needs to do though is make custom UIs add-ons to the base UI (more like Workplace Shell on OS/2 than L&F in Swing which is mostly just skinning). Just like Android creates a sandbox for apps so apps can't access/kill other apps, UI customization framework needs to be core part of Android. When a new version comes along, Google needs to make it available for use on any Android device (that is capable of handling the resources). That will always get you to the reference UI. When manufacturers are ready to move their UI to the rev, you could install their version of the OS. That gives the users the choice to stay with the vendor's older OS or move to the new version and a few months later, go back to the vendor's OS again. After all, the reason most of us are using Android is "Choice".

I don't believe that fragmentation is a huge problem for developers. I have not had any problems moving my app from 1.5 to 2.1. It was a few hours of work at each version. I don't know anything about Games - maybe that takes some effort. In my view, fragmentation is very real for users who are stuck on old versions because they are dependent on the carrier or the phone manufacturer to release the new version (and both are more interested in selling newer phones).

This is one area where Apple has done a bang up job - right from the very first version of the iPhone. As far as I'm concerned, breaking the shackles of carriers has been the single biggest game changer of the iPhone. Google tried to do the same with the Nexus One, by selling it unlocked - but failed pretty miserably on that front.

grellanl said...

Dan, I think it's good that you've chosen to comment on this, because the biggest issue for most commenters I've read, has been that nobody seems to acknowledge the concerns people have, or indicate that there's a plan in place to tackle the issue and bring them up to speed.

Looking back, it's clear that from last summer on there was an amazing pace of change with each of the new 'hero' devices (pun intended) bringing with it a new version of the system, and a new vision for how things work. If we look at the execution of the vendors on catching up and rolling out updates since then, it's actually not been "that bad" in retrospect, but the wait for updates has been made seem interminable because of new devices in the market, leaving the early adopters feeling jealous, and left out in the cold.

Some of the stuff that confuses people is, how disjointed some of the planning seems to have been in the release of devices since then, and how a more "joined-up" approach would have suggested that there would be more pressure on vendors to use the latest stuff, to meet minimum device standards and so on (argh, still such limited internal storage) -- you do have the ultimate lever of the market and other branded apps to put pressure on vendors and insist on this kind of thing.

As far as this fragmentation we've seen being a problem though, I think you're pretty spot on - it's not a problem for application compatibility, save for the usual business of some of the newest stuff working only on the newest systems, which is always going to be the case. Other stuff that people are calling 'fragmentation' like the multiple different screen resolutions out there, and multiple device form factors (keyboard, touchscreen-only, etc), I think are in fact a great positive for the platform. Having many options out there, and developers that are used to the concept of dynamically scaling based on the features available, makes for a better path to improved features as things move along. A static platform leads to things like devs hardcoding a presumed standard resolution, or refusing to take advantage of additional resources.

It's great to see 2.x starting to roll out everywhere. If the vendors tendency to differentiate by adding custom GUIs and so on can be curtailed, and their efforts can instead invested in keeping their devices up-to-date *promptly* for a sensible minimum timescale, then we'll be in a good place.

Android said...

Yeah, we've found that there are hundreds of companies selling a few generic Android tablet pcs out of China that are branded as aPads, ePads, and so on.
You can download pretty much any popular app's apk file if you search for it on Google, and then install it onto your tablet.
About 50% don't work (and Google admits Froyo is not suited for the tablet "form factor").
Still, the 50% that do work are worth buying a cheap Android tablet for, and the real losers here are the consumers who must purchase expensive devices from Google's Open Handset friends and the app developers who rely on the Google market to make money and would benefit from a larger audience of users.

Why not let the market define what is required for specific apps?

DucDo said...

Hi Dan,
I got a message like:Failure [INSTALL_FAILED_OLDER_SDK]
when attempt to run cts 2.2 on 2.1 device and it leads all test cases to fail.
Since I guess cts and android platform on device should be corresponding, however from normal logical behavior: cts 2.2 will cover and extend from cts 2.1 so that's mean cts 2.2 could be properly run fine on device 2.1 ?

There is something else worked on that I don't catch on ? thank you very much !