

Android Fragmentation Visualized - sinak
http://opensignalmaps.com/reports/fragmentation.php?

======
luigi
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
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...](http://burnsmod.com/development/2012/05/01/Android-
Fragmentation-Hurts-Everyone/)

Your analogy does not make me sleep better at night.

~~~
mrb
Your blog post blames a bug on Android fragmentation, but it sounds like it
was your fault. You were not calling
Environment.getExternalStorageDirectory(), which is the portable way of
accessing the storage area where users saves file via USB mount.

~~~
gravitronic
That API call is not sufficient. Some devices have more than one external
storage device. For example some tablets have an internal storage point and
the ability to have a USB key.

The function you are talking about only returns a single directory and my
users want to use both if available.

~~~
fidotron
Yeah, and Motorola have their own etc.

It really isn't a big deal. Use reflection to find what works at runtime, and
live with it. That's the price of the flexibility which makes the whole thing
attractive in the first place.

The big problem is trying to cover all bases from the start: you won't. Attack
it like an old school PC shareware dev, and respond to customer requests.

There are far larger problems with Android than this kind of thing. That
things on external storage basically bypass the security model is a much
bigger concern.

~~~
gravitronic
The brutal part is that generally customer requests are no better than "the
bug is shitty app" or just "buggggggg". Thats where a responsive strategy
sucks - reliable reports are few and far between.

------
btipling
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
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.

------
nextparadigms
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?

~~~
taligent
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.

~~~
king_jester
> 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.

Except that won't work because what vendors do is modify core system
components. Network stacks, audio/video codecs, system themes, etc. are all
things changed by carriers and manufacturers for a variety of reasons.

There are two core reasons why Android OS updates are slow to roll out:

1) there is no profit motive to upgrade phones that have already passed their
prime retail lifespan

2) modifications made my carriers/manufacturers are not simple and often have
dramatic consequences for how the phone and apps on the phone behave

For companies like Microsoft, there is a profit motive to updating released
software and selling larger OS upgrades at a price. For Linux users, the onus
to upgrade comes from the users themselves, much like how there are those that
choose to install custom ROMs on Android to get those advanced features.

Regardless, the fact that you can create an Android app that runs on so many
hardware configurations is extraordinary. The downside to the popularity is
that its likely your app won't run on every hardware configuration, so the
question is how will Google mitigate that problem?

------
jcromartie
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
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.

~~~
jcromartie
Yeah, I'm not up to speed on Android. But, so, that only accounts for 3% of
the users. It still means only %5 are on ICS, and the rest are basically on
2.3.

So the process for developing a new iOS app today is:

    
    
        1. Download latest SDK
        2. Develop for iOS 5.1
    

For Android, it seems to necessarily be:

    
    
        1. Download latest SDK
        2. Develop for Android 2.3

~~~
ajross
Pretty much, yes. New features in ICS need to be viewed as optional and probed
if you're going to use them. Though to be fair there really aren't that many
you'd really want -- ICS focused more on the core apps and user experience
than it did on extending the platform APIs.

Also, my memory is that something like 20-30% of iOS users weren't on 5 yet.
Is that wrong?

~~~
jcromartie
About 80% of users are on iOS 5.0+, so, 20% are < 5.0. But the 20% that are <
5.0 are not the ones that will be downloading and installing fancy new apps.
If they were big app consumers, they would update the OS.

~~~
gurkendoktor
The iPhone 3G is stuck on iOS 4.2.1. When I still had my 3G, I happily bought
apps if they still ran.

We also had quite some support requests for a three digit dollar app (!)
because customers never bothered to update their iPad, the OS versions were
all over the place.

------
andyjohnson0
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
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.

~~~
andyjohnson0
As a consumer I agree with you. As a developer, any frustration I have with
the frag... ah _diversity_ of Android is more than offset by the greater
potential that it offers me.

------
billjings
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
yeah very true, we'll try and throw one up to show that a little more clearly

~~~
glogla
I too would be thankful for that. Sometimes, simple histogram is the best way
to show something. And while you're at it, I think that cumulative version
chart would be interesting for readers as well.

Even now, lot of carriers are pushing cheap phones with Android 2.2 or even
2.1 and while for better known devices this can be fixed with CyanogenMod, the
state of Android versions is still bad.

------
tdpeterson
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
I think this is a major move in the right direction:

[http://www.theverge.com/2012/5/15/3022682/google-direct-
sale...](http://www.theverge.com/2012/5/15/3022682/google-direct-sales-
multiple-device-OEMs)

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
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...](http://www.theverge.com/2012/5/15/3022682/google-direct-sales-
multiple-device-OEMs)

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..."

------
jjguy
Also: Michael DeGusta's chart from Oct 2011

[http://theunderstatement.com/post/11982112928/android-
orphan...](http://theunderstatement.com/post/11982112928/android-orphans-
visualizing-a-sad-history-of-support)

------
Stokestack
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
"Fragmentation allows users to take their pick from thousands of devices."

This person doesn't understand WTF fragmentation is.

