top | item 3978304

Android Fragmentation Visualized

168 points| sinak | 14 years ago |opensignalmaps.com | reply

84 comments

order
[+] luigi|14 years ago|reply
It seems to me that the best way to think of Android is to compare it to the world of Linux distros. (I believe Dan Benjamin of 5by5 pointed this out on one of his podcasts.) Yes, there's Linux, but there's no one Linux. There's Android, but there's no one Android.

So while Android is technically an operating system, it's really an open platform on which to build mobile devices on top of. So the Android device I buy is that vendor's take on the hardware and the software. Google has its own take, as does Amazon, as does Samsung.

When viewed in that frame, it's not so frustrating or confusing, or even an actual problem. Fragmentation can be viewed as a natural consequence of the open Android ecosystem.

[+] gravitronic|14 years ago|reply
Spoken like someone who isn't an Android developer.

Take your analogy to the next step. Someone opens an online store that sells binary-only copies of applications targeted to just "Linux".. you would call them crazy, no? That's what the Google Market is. Or the Amazon Market, samsung apps, nook store, ...

I wrote a blog post to help you understand the pragmatic issues faced by an Android developer trying to write decent software.

http://burnsmod.com/development/2012/05/01/Android-Fragmenta...

Your analogy does not make me sleep better at night.

[+] klodolph|14 years ago|reply
So because it's a "natural consequence" it's not an actual problem? Sorry.

Distribution on Linux can be a similar nightmare. Try downloading a source package to find that it requires version 2.3 of LibExample, and you have version 2.2, but the developers didn't know they needed 2.3 and the configure script doesn't detect the discrepancy, so you get some cryptic compilation error halfway through. Binary distribution on Linux is possible, the Xonotic folks did it, but it's a lot of work. Android development is more forgiving since the API as a whole is versioned, but portable programming is still more work.

Diversity of hardware and software isn't an inherent boon, it's just something that brings its own benefits and drawbacks.

[+] sciurus|14 years ago|reply
The alternative isn't for all these devices of different sizes and capabilities not to exist. The alternative is for them all the be running even more disparate, vendor-specific operating systems. We should be thankful for the degree of unification Android's success has brought.
[+] gjulianm|14 years ago|reply
But there is a huge difference. First, that desktop OS are ready for differences in hardware. As a developer, you usually don't care about screen size, or processor, or memory.

With Android, you have to. Some devices will not be capable to run your app, in some others your app will not even fit the screen... And, of course, because of different drivers, hardware and OS versions your app will not absolutely work on some phones because of some weird error. It's nowhere near Linux development.

I don't know if fragmentation is good or bad for the users, but for developers it's an infinite source of headaches. From my experience (I develop a Twitter client for WP7), even with a system with much less fragmentation than Android, every phone has unique features which can make your app crash for no reason, and you can only wait to be randomly corrected or get that specific model and debugging the app.

[+] Steko|14 years ago|reply
"When viewed in that frame, it's not so frustrating or confusing, or even an actual problem"

Androids main competition allows developers to reach a similar sized user base which targeting a tiny fraction of devices. When it comes time to decide which platform to support or which to support first the answer becomes moot.

If that is "not ... even an actual problem" under the frame of reference you're talking about... all that tells us is that that frame of reference is probably bad. Which sounds about right given that neither is desktop linux a great consumer success story nor are linux distro's held hostage by a third party.

Imagine if you had to wait for Time Warner's permission to update linux, oh I think that would be bad...

[+] sshrin|14 years ago|reply
One difference between different linux distros and android is that, in the former case, end users recognize that software written for another distro may not work on their specific OS. In the latter case, however, end users (especially ones that aren't technical) think that they have the same OS (when in reality they all own phones with different levels of API support / compatibility) and are upset when a specific app does not work as expected on their device.
[+] rapind|14 years ago|reply
It actually reminds me of the Personal Computer when I was growing up. There was Apple (a bit of a mushroom very few people had) and IBM (your dad's business computer), plus a whole bunch of IBM clones (even Samsung made one). All of the clones ran the same OS (or version thereof).

Obviously there are some huge differences, but it still feels very familiar to me. I don't think it'll play out the same though, given the quality and popularity of the Apple product this time around.

As much as I do appreciate Apple products, I'm glad they lost the PC revolution. I can't believe we'd have been better off building software for that closed system.

[+] nextparadigms|14 years ago|reply
It's close to that, but not quite. Android is a bit more centralized, so apps are pretty much guaranteed to work on all versions of Android, while on Linux you need different packages for different distros and so on.

But I do think Google could do a lot more to centralize and standardize the platform and the app ecosystem.

[+] taligent|14 years ago|reply
The difference is Linux has its act together. Android doesn't.

Right now I can SSH into a vastly different array of hardware and update a roughly equivalent set of packages to get for example the latest rendering engine or security fixes. This is not possible at all on Android which is a joke. And I will never understand how people such as yourself can defend it.

Fragmentation is a huge issue for Android and it is only going to get worse unless Google does something about it.

[+] rorrr|14 years ago|reply
I think a better analogy is a web browser. There are many versions, many resolutions, but they all roughly support the same API, while modern browsers have more features.
[+] moron|14 years ago|reply
Correct, Android is more of a meta-platform, a platform for building platforms, than a single platform itself.
[+] btipling|14 years ago|reply
I love my Android phone and I love developing for it but I sort of think that sometimes we have a little bit of Stockholm syndrome when I hear another Android developer say "fragmentation is great!." It really isn't, especially not with the differences between 2.3 and 3+, but I like being able to put my own apps on my phone without paying $99 a year, so I like my phone quite a bit.
[+] ajross|14 years ago|reply
I'd tend to agree. But at the same time I do get sick of all the articles like this one harping on "fragmentation" instead of actual porting issues. That's the clue that tells me the linked article was written by Apple fans with an axe to grind.

If people viewed this as an important problem worth solving, we'd see articles about how to do aspect-independent UIs, or apps that cleanly upgrade to gestures in Gingerbread+. Or cute workarounds for rendering bugs on the SGX vs. Mali vs. Tegra.

But we don't see any of that, because quite frankly most people don't care. Outside of stuff that directly faces hardware APIs, Android apps port quite well in the real world.

Contrast, for example, the web development world. There, platform compatibility issues have been a huge problem for years, spawned a bunch of frameworks to abstract the differences, and inspired sites like caniuse.com. The clear lack of these in the Android world is, I argue, an existence proof that "fragmentation" is a red herring.

[+] romeodelight|14 years ago|reply
I think for Asian developers, specially in China, fragmentation is a HUGE problem. There are literally hundreds of variations of cheap Android phones out there with different screen sizes, OS versions, etc. We replace our phones regularly here in the US and have access to the latest phones from Samsung, etc. but that is not the case in most parts of Asia.
[+] nextparadigms|14 years ago|reply
So what can Google do to reduce the problem? Release only one major version of Android every year? Every 3 years like Windows? Release a private "beta" version for most manufacturers (not just one like now) so that they all have devices with the new OS on the official launch day?

Develop better abstraction layers for hardware? Force manufacturers to use only a few resolutions like 480x320, 800x480 and 1280x720 (retina) for phones, and only 1280x800 and 2560x1600 (retina) for tablets?

What can Google do so that Android still supports many different devices from different manufacturers, but the fragmentation issue is dramatically minimized?

[+] cek|14 years ago|reply
There is nothing Google can do about it. The cat is out of the bag, so to speak. Everything they try will simply make the problem worse.

- Release new versions faster? Nope. More fragmentation.

- Pressure MOs/OEMs to only ship latest versions? Nope. Just pisses them off and makes them more inclined to fork.

- Reduce flexiblilty (better abstraction layers for hardware) ala WP7? Nope. MOs/OEMs care most about flexibility which got them on Android to begin with. They'll just fork.

- Do something really innovative. Maybe, but it would have to be mind-blowingly-differentiated. Can't find any proof points of Google doing that in the past, so have to assume it won't happen in the future.

Android is alive and well. It is an extremely healthy ecosystem. But it is no longer Google's ecosystem. And it will continue to fragment no matter what Google tries.

FWIW, I wrote about this in depth earlier this year in a post titled "Fragmentation is not the End of Android" here:

http://ceklog.kindel.com/2012/01/14/fragmentation-is-not-the...

[+] inoop|14 years ago|reply
Do what Sun did for Java, create a really extensive test suite and make sure no device gets the Google stamp of approval unless it passes.
[+] taligent|14 years ago|reply
They really need to structure the OS so that the core components can be updated independent of the vendor ones. Then just ship updates regardless of what vendors do.

People act like Google is somehow unique here. Microsoft and Linux support a vastly more complex array of hardware configurations and still manages to support a diverse ecosystem above the core OS.

[+] huggyface|14 years ago|reply
So what can Google do to reduce the problem?

What problem? The linked article could as easily have been called "The Diversity of Android". That title would have been more honest, if less likely to get linked.

[+] jcromartie|14 years ago|reply
I did some research this morning, since I might be doing some Android work soon. As of May 1 2012, about 5% are on any version of the latest major release: Ice Cream Sandwich. About 3% are on the previous major version: Honeycomb. The rest, a whopping 92%, are still two or more major versions behind.

By developing against the latest major version, you are going to reach 5% of Android users. Compare that to iOS, where developing for the latest major version (5.0+) means reaching maybe 80% of users.

[+] ajross|14 years ago|reply
You're mixing things up, so I'd suggest going back to do more research. Honeycomb was tablet-only, it was never released for handsets. That's like complaining that only 7% (or whatever) of iOS users can run iPad apps, it's meaningless.

ICS uptake, however, has been ploddingly slow. It's finally breaking through now as the vendors clear out their holiday inventory and start pushing new models.

[+] juliano_q|14 years ago|reply
Honeycomb was not the previous major version. It was a version released only for tablets. The previous major version for mobile/tablets was Gingerbread (2.3).
[+] nextparadigms|14 years ago|reply
You could also say that you get 6-12 months to develop for the new version once it's launched, without the users crying foul for not getting it early.
[+] andyjohnson0|14 years ago|reply
There seems to be a tendency to use 'fragmentation' to imply something vaguely negative - a kind of problematic deviation from the norm. I Prefer to think of it as diversity.
[+] dagw|14 years ago|reply
I think it depends on your perspective on things. As a consumer I love the diversity of the Android landscape. As a developer I dislike the fragmentation of the Android landscape.
[+] nodata|14 years ago|reply
yes, or "choice".

Having lots of different screen sizes is never "fragmentation". Having different versions of Android? Maybe.

[+] billjings|14 years ago|reply
Could you guys get a simple histogram of the model data up? The 2d visualization is clever, but it does not tell me what I need to know: does the distribution have a long tail or not? It sort of looks like it does, but the visualization obscures the truth and prevents comparison with similar datasets.
[+] sinak|14 years ago|reply
yeah very true, we'll try and throw one up to show that a little more clearly
[+] tdpeterson|14 years ago|reply
I love information like this, and I think the OpenSignalMaps opinion is healthy. Basically, it's cool to have an install base this diverse and dynamic. Maybe this is because I come from a traditional desktop dev background where diverse HW and SW environments were just part of the game.

I recently co-created an automated web-service that tests apps on real devices, and of the thousands of tests we've run, the majority of the failures and errors are more general software development issues. Errors caused by assumptions about the presence of other apps or network connectivity or the inability to handle certain transitions like screen orientation are much more common than device-specific problems like CPU type. It does happen, for sure, but not nearly as often, and free services like ours seek to mitigate these errors altogether.

[+] nextparadigms|14 years ago|reply
I think this is a major move in the right direction:

http://www.theverge.com/2012/5/15/3022682/google-direct-sale...

It should bring a lot more stock devices into the market. Manufacturers will be able to upgrade their devices faster, and if Google is smart, they will stick with 1 major release per year rather than 2, and this way manufacturers will have to upgrade their devices only twice in 2 years, rather than 4 times. And we won't have this problem of being "2 versions behind".

[+] Steko|14 years ago|reply
Good news everyone:

"Google to sell flagship Nexus devices with multiple partners this fall, reports WSJ"

http://www.theverge.com/2012/5/15/3022682/google-direct-sale...

linking verge because, paywall.

Apparently google read my comment below, made a major business decision and leaked that to the WSJ all in the last hour.

Me ITT:

"Well they could keep their major vendors in the loop instead of just dumping the new code on them after each nexus launch..."

[+] Stokestack|14 years ago|reply
Disappointing post. I was expecting a graph of the dozens (or more) versions of "Android" running around on devices that are being sold today.

I'm tired of seeing "Android" cited as a single OS in all kinds of statistics, when in fact it's a pile of proprietarily hacked OSes with a common heritage.

[+] Stokestack|14 years ago|reply
"Fragmentation allows users to take their pick from thousands of devices."

This person doesn't understand WTF fragmentation is.