
Android Fragmentation Visualized - muratmutlu
http://opensignal.com/reports/fragmentation-2013/
======
FooBarWidget
I'm not an Android app developer, but can someone explain to me what the big
deal is? I've been developing Windows desktop software, Linux desktop software
and Unix server software for years. The hardware diversity on all those 3
platforms is _huge_. Heck, if you're developing web apps, it's like every user
uses a different machine. I've never seen anybody claiming that Windows is
fragmented. So what's so special about Android that people put the
"fragmented" label on it, and why is that a big deal?

~~~
enraged_camel
You don't hear people claim that Windows is fragmented because everyone has
become used to it, so much so that it seems like such a normal thing. When you
develop for Windows, worrying about which version of .NET Framework might be
installed on the user's machine or whether or not a certain feature of the OS
might be turned on or whether their drivers might be outdated is a normal
course of events.

The iOS development philosophy is that developers should not have to worry
about any of this, and their apps should just _work_. I mean, when was the
last time you tried to install an app on iOS and it gave you an error message
about such and such prerequisite missing, or you installed it and the user
experience was broken because the phone had an older version of the OS or a
wacky manufacturer UI?

~~~
JVIDEL
I find that devs have a far harder time dealing with apple's policies and fees
than with android's fragmentation. One particular case is one startup where
all the people involved use iphones but they moved to android to launch their
app because they couldn't afford the complications of doing it for iphone,
which was originally their plan.

I can find a way through a code problem, but when it comes to bureaucracy
sometimes there is no alternative, or they shut it down the moment you find
it.

~~~
threeseed
Apple's fees are $99/year which is hardly prohibitive.

And I doubt you would see any difference between Apple's bureaucracy and
Google's. Anytime you try and embarrass the company, try and take money away
from them or be anti-user then of course you will have problems.

~~~
bloodorange
I don't remember having to 'hope' that Google accepts an app through a human
review before allowing it on their store.

I like neither Apple nor Google but I believe we shouldn't overlook facts that
clearly differentiate one from the other.

------
shimfish
A lot of people here seem to be asking "so what?"

In my small experience, the "so what" is that, for example, just today I get
an email saying that feature X of my app doesn't work on tablet Y.

So now what? Do I go and buy that tablet to see what the problem is? Hardly
worth it for the money I make from Android.

This sucks for developers for obvious reasons and it sucks for consumers as
it's pot luck whether an app will work for you, especially if it's not one of
the top 5 devices.

I've read it's terrible for 3D programmers as often devices just flat out lie
about the GL capabilities they support.

Exhibit A: Apportable's android device library
[https://twitter.com/chinmaygarde/status/349809877176156160/p...](https://twitter.com/chinmaygarde/status/349809877176156160/photo/1)

~~~
Groxx
While Apportable is a very nice example, they're also doing something rather
crazy - "cross compiling" apps into a wildly different set of hardware,
software, and OS targets. And trying to be efficient about it, for graphics
performance.

That isn't simple _anywhere_. I'd call it flat out _amazing_ that they have
apparently mostly succeeded, and a massive testament to the level of
consistency that _does_ exist.

~~~
threeseed
Cupboards like that are very normal.

The last three places I've worked at had similar cupboards in order to support
the array of Android devices. And they were just run of the mill web
companies. The problem really isn't Android but everyone's screwed up
implementation of it.

~~~
Groxx
From everything I've seen, that's still an exceptionally large cupboard. High-
performance uses (games) have big cabinets because, yeah, that's where
fragmentation can be extremely damaging. The fragmentation there is real, and
can be very painful, and I totally agree that it sucks.

But in "run of the mill web companies"? Where I work, we have ~6, but 99%+ of
the time we just use our Nexus 4s because 99.9%+ of the time it "just works"
everywhere, especially if you stick to an older API / support library and know
the quirks. We support 2.2+, have a few 3.0+ and 4.2+ features, and it has
been terrifically easy to handle our range - much easier than iOS. The other
devices are to see how using the app feels on different sizes / performance
classes. Getting that feel is important, but it just requires a couple "token"
devices.

------
bookwormAT
Anyone complaining about Android fragmentation should ask themselves if they
would prefer if every device would go the "Apple way" and make their very own
operating systems for their device. Would this really solve fragmentation?

Here is how I see the "Fragmentation issue": My customers are using one of
maybe 800 or so different devices, with maybe 100 different software systems
powering them. That number was about the same before and after Android came
about.

Now if I want to write a program for all my customers, I need to theoretically
write at least a hundred different applications. That sucks. But today, thanks
to Android, like 95 of the available operating systems are based on the same
development kit, Android, and so instead of writing 95 different applications,
I make one and then adapt a little if necessary.

Android is a defragmentation platform. What we call "Android fragmentation"
just means that the defragmentation works 90%, not 100%. People can use
Android to build lot's of different operating systems, which are either very
similar or very different that what is available in the Android open source
project. But because it's all based on the same code base and runs against the
same compatibility test suite, a developer like me can target many devices and
many operating systems with a single code base. That's awesome.

iOS and Windows are fragmenting the market for me. They are not compatible
with Android, so I have to write a separate application for these systems.
Often from scratch.

A few notes to further explain this position:

"operating system" is a very generic expression. For most people today an
operating system is the software that is installed on the device minus
applications that the user installed himself.

E.g. the app store, itunes, Location Services, the User Interface and the push
notifications system are considered features of the iOS operating system. But
on Android based devices there are independent from the Android system. You
can make your app run Holo no matter what Android version is installed on your
customer's device.

When speaking in iOS terms, you can say that 90% of all Android devices get
updated once per months or so, when another update for Gmail, Google Voice
Search or GCM arrived.

You do not need to depend on Google if don't want to make your software
compatible with Android. There is no dependency from Google in Android, all
their influence comes from the fact that they own the most popular third party
app suite that every OEM wants to license on their device. If and OEM wants to
go their own way, like Amazon, Google has no way to stop them.

~~~
weland
> Anyone complaining about Android fragmentation should ask themselves if they
> would prefer if every device would go the "Apple way" and make their very
> own operating systems for their device. Would this really solve
> fragmentation?

I, for instance, would prefer that the industry adopt six or eight standard
screen sizes and stick the fuck with them. Google is in a position where it
can mandate that, actually.

There are many excuses one can make in Google's favour, but this does not take
away the fact that their development environment is very poor, _primarily_ due
to fragmentation (and then there's development tools and documentation, but
those have been traditionally been a stumbling point).

Also, it's intelectually rude to try to rest your arguments on words for which
you construct your own meaning. That's what salespeople do and it's a marginal
improvement (in technique, not in correctness) of the straw man sophism.

> "operating system" is a very generic expression. For most people today an
> operating system is the software that is installed on the device minus
> applications that the user installed himself.

"Operating system" is a very clear expression that means exactly one thing.

Fragmentation can mean more things, and this article claims one of them.
People who want to write software for the iOS operating system have a small
set of screen sizes and resolutions to target. People who want to write
software for the Android operating system have a fuckload of incompatible
APIs, screen sizes and resolutions to target, _which is exactly what
fragmentation means_. This is especially problematic for small apps: if you
need 3 weeks to write the core of your application, and 1 day to tweak each
combination of obscure resolution and screen size, strange device, hardware
configuration range _and_ API version you can easily end up doubling your
development time.

Also, if you actually try your hand at writing an application with a decent
UI, you'll find that the "a little" you want to tweak it is "a lot". In my
experience, if you try to target a full set of platforms, ranging from small
phones to full HD tablets, you actually end up designing 3 UIs from scratch
(unless you want at least two of them to feel like someone stretched or
compressed the other one to fit a screen it wasn't designed to). This includes
entire sections of the UI logic (e.g. redesigning navigation flow), and while
there are tools to help you with it (such as Fragments), it doesn't take away
the pain.

~~~
bane
> "Operating system" is a very clear expression that means exactly one thing.

That's not correct at all. An "Operating System" can mean many things and
there's tremendous debate in the OS and Systems community over the definition.

~~~
weland
Being part of the "OS and Systems" community, I think I'd know :-).

There are a lot of debates about whether X or Y should be a function of the
operating system, but that doesn't justify OP's position. Applications that
come with the operating system are not part of the operating system, you know,
on account of them being separate applications. Unless I missed the debate on
whether grep and emacs are essential parts of Linux or not.

The questions you quote are much like the heap paradox, but that doesn't make
the concept of operating system so flexible that you can bend it to mean
anything. Also, let's be honest here -- quite a few of those questions are
there only because at some point in history, fanboys of one platform wanted to
rest their fanboyism on some sort of technical grounds, which is how we ended
up with fundamentalist-like questions of the "should the OS provide a GUI"
sort.

~~~
bane
You _should_ know then!

Here's GNU's definition of a Unix-like, "A Unix-like operating system is a
software collection of applications, libraries, and developer tools, plus a
program to allocate resources and talk to the hardware, known as a kernel."
This is a very heavy idea of an OS and grep and emacs sound like "developer
tools" and "applications". Most OS people involved in unix-like OSs would be
aghast if you didn't at least include some basic userspace applications like
cat and ls.

GNU isn't specific about what needs to be in the collection of things to
constitute a unix-like OS, but it looks like that agrees in most respects to
bookwormAT, "'operating system' is a very generic expression. For most people
today an operating system is the software that is installed on the device
minus applications that the user installed himself."

GNU's concept is miles different from very light concepts of an embedded OS's
like Femto OS which near as I can tell is pretty much just a kernel and some
libraries.

WP on the other hand says, "An operating system (OS) is a collection of
software that manages computer hardware resources and provides common services
for computer programs." So strictly speaking, by this definition an OS doesn't
even need to provide disk access like the old DOSs!

Although of course it later contradicts itself and says "Access to data stored
on disks is a central feature of all operating systems." which anybody
involved in the OS community knows is not a central feature of "all" operating
systems. I've used OSs where useful file system access was provided via
userspace applications (a la FUSE).

Palantir takes the position that an OS doesn't need to be interacting or
managing the hardware stuff, just providing the ability to run different
hosted applications is enough, making things like web browsers operating
systems ([http://www.palantir.com/2009/11/palantir-like-an-
operating-s...](http://www.palantir.com/2009/11/palantir-like-an-operating-
system-for-data-analysis/))

bookwormATs position is that not only are OSs heavy things, but that "Android"
is not just an OS, but a meta-OS description of what an Android OS should be
(just like XML is a meta-language for describing XML compatible file formats).

So if GNU's definition is correct (and lots of people subscribe to GNU's
position), bookwormATs position, "'operating system' is a very generic
expression. For most people today an operating system is the software that is
installed on the device minus applications that the user installed himself."
is correct.

------
morsch
I think the report could benefit from dropping the lowest 1/5/10% of devices
by market share. As can readily be seen from the first diagram, Android has a
long tail of obscure devices. Dropping that would make many of the other
graphs more readable and more insightful. I guess it'd also be interesting to
exclude devices by other characteristics, e.g. exclude all <4.0 devices
because maybe you don't want to support them anyway.

I was first puzzled and am now intrigued by their choice to use physical
screen size as a basis for that diagram, as opposed to screen resolution. Very
appropriate in our resolution-independent times. Of course either way you do
it, Android is going to have more variation than Apple. That diagram is also
kind of difficult to read; what shade of blue corresponds to what market
share?

Finally, it's awesome of them to share the source data! Maybe I'll actually
get around to implementing my suggestions.

~~~
jakub_g
> I guess it'd also be interesting to exclude devices by other
> characteristics, e.g. exclude all <4.0 devices because maybe you don't want
> to support them anyway.

Android 2.3 has around 40% of the Android market. I doubt many players can do
it. Some companies still want IE7 or IE6 support.

~~~
jordanthoms
Depends on what countries you are targeting. In the US, 2.3 is more like 15%.

~~~
clarky07
15% is still a lot. do you want to take a 15% pay cut?

~~~
tadfisher
Not so simple -- if it means you are better able to support your market,
features are faster to develop, etc, there may be a net benefit. Hell, if
dropping Gingerbread support raises your average review from 4 to 5 stars, you
might be in the black.

------
DominikR
The fact that the screen sizes and dpi are fragmented is in my opinion a
feature and not a bug or problem.

Actually, Android UI design (if you follow the guidelines) is comparable to
responsive web design, and that isn't surprising, considering that Google is a
web centric company.

You have layout XML files (HTML), seperate XML files for styles (CSS) and then
your code that manipulates the layouts dynamically. And most of the time you
work with relative positioning of UI elements (like you do on webpages)
instead of absolute positioning. Even Androids Intent mechanism is based on
the idea of web links. (but here you link to another "page" of your app, or
other apps) Also, Android apps behave like web pages with stacks of Activities
(comparable to pages), and a dedicated back button to browse back.

Yes, it would be easier if you had only one screen size and therefore could
design everything statically, but with so many different screen sizes on
current iOS devices (3 sizes for different iPhone revisions, at least 3 for
iPad and I don't know how many for iPods) I don't think it's a painless
process there either, and I expect that Apple will introduce changes in the
future.

Also, you probably will never have pixel perfect design on Android that works
across every device (it was never intended to do that), but you don't have
that on the web either, and no one's complaining here that the web ecosystem
will collapse because of that.

------
troymc
Imagine a similar article about vegetable fragmentation. They all have the
same operating system (DNA, ribosomes, cells, etc.) but gosh, look at that
horrible, awful variety! And all the different manufacturers! What a disaster.

~~~
Recoil42
Or the web, even. All those users! So many browsers! So many screen sizes!
It's so _fragmented_!

Why does everyone only ever complain about Android?

~~~
kumarm
[Why does everyone only ever complain about Android?]

Only Press Complains. I haven't met a serious Android Developer who complained
that fragmentation is in top 5 of their problems. I say this as some one who
run Android Game/App Development company.

~~~
kaoD
> I haven't met a serious Android Developer who complained that
> fragmentation...

Yeah, but you'll meet lots of iOS/WP developers who complain about Android
fragmentation :P

~~~
andybak
So the question is - is it Stockholm syndrome on the part of Android
developers or do iOS developers just think it's a bigger issues than it is in
reality? That's the core of the debate, right there.

------
hristov
This is pretty remarkable but it is to be expected. The world is large and
diverse, and if there is going to be an OS that satisfies the mobile computing
needs of the entire world, it is going to have to run on many different
devices.

Apple, the poster boy for non-fragmentation, is consistently losing market
share. They are now starting to realize that their only chance of continued
growth depends on releasing more devices with different screen sizes and
different price points. (Gasp -- more fragmentation).

It is up to Google to try to make programming across different devices as easy
as possible. I am not sure how successful they are in this, I am not an
android programmer. But fragmentation is not a choice or the result of a
strategic error by Google. It is a fact of life when you are programming for
hundreds of millions of users.

Think of it this way, if Google had chosen to go the Apple way and only used
Android on their own Nexus devices, would there be more or less fragmentation?
There would certainly be less fragmentation in Android, but there would be
much more in mobile devices in general. Because Samsung, HTC, Sony and every
other Android manufacturer would come up with their own wacky OS.

~~~
JuDue
1\. By all reports Google is shying away from Android.

2\. Apple losing market share to hoards of cheap spam-ware phones? I'm sure
Google isn't as excited about this as you think.

~~~
notimetorelax
Could you substantiate any of the claims? I'm surprised to hear that Google is
shying away from Android or that they don't want Android to be used on as many
devices as possible.

~~~
hristov
They are not shying away. I listen to Google earnings reports, and they are as
gung ho about Android as ever. I did not reply to the grand parent, because I
did not want to go off on a tangent.

------
dannyr
People are forgetting the state of mobile OS ecosystem before Android came
along.

Samsung, Sony, Motorola were using Java ME but you cannot build just one app
that works for all manufacturers.

If Android doesn't exists, we'll have 1 OS for each manufacturer because Apple
would not share their OS with others.

I'll take a fragmented Android ecosystem over a fragmented mobile OS ecosystem
any day.

I develop Android apps for a living. For a lot of devices (e.g. HTC One, Nexus
4, S3), there is very little differences in code, if at all.

Highlighting different versions is also misleading. Not much difference in the
APIs between 4.0 and 4.3

~~~
protomyth
> If Android doesn't exists, we'll have 1 OS for each manufacturer because
> Apple would not share their OS with others.

I'm sure Microsoft would have been more than eager to take up the slack, or
perhaps Palm would have pivoted that way.

I cannot remember what the update cycle was like on Microsoft phones. Perhaps
the OS version would have still been an issue. I do seem to remember some
upgrade blocks on the 7 version.

~~~
rsynnott
> I cannot remember what the update cycle was like on Microsoft phones.

For Windows Mobile? In almost all cases, they never got upgrades at all. The
iPhone was pretty unusual in its day as a non-computer consumer electronics
device that got substantial software changes after release.

------
Zikes
When personal computers were just coming into the mainstream, particularly
when GPUs were just coming about, there was a similar fragmentation issue.
OpenGL sought to resolve this with a crap-ton of manufacturer bits and a
difficult to use API, but DirectX came along and (for the most part) solved
that.

Nowadays we hardly think twice about the fact that there are millions of
combinations of monitor and GPU brands and models and configurations. Has
anyone ever thought to do a similar comparison of desktop and laptop
"fragmentation"?

~~~
mtgx
Google's main goal for Android should be to achieve something similar for
Android, like it was achieved for Windows. I think it's doable, but it
requires some technical expertise (the easy part), and a lot of _will_ to do
it, to convince other OEM's to get on board and support the standardization of
hardware and software (the really hard part).

I'm also not sure Google wants to do that so badly. I think they're pretty
content and comfortable with how Android is working right now, generally
speaking.

------
fenesiistvan
Who cares? Google make a good job maintaining API compatibility. The tools are
also (mostly) the same from the very beginning (while with iOS you actually
have to learn and adapt much more with each version change) ...but otherwise
the graphs looks fine :)

~~~
venomsnake
But for various reasons (also known as carriers) google does crap job of
pushing updates. The moment google wrestles back control from them and begins
pushing updates chrome style we will live in a better world.

Otherwise we will be in situations like a friend was cursing me yesterday
about how I dare have android 4.2 (and wait for 4.3 rom) on my unlocked 2010
device and he is stuck on his HTC with 4.1 and no signs of incoming upgrade
soon.

~~~
Zikes
They've definitely still got some kinks to work out on their update pushing.
I've got a Nexus 4 and a Nexus 7 and despite my checking for updates several
times a day neither of them have received 4.3.

I understand the necessity of the "rolling update" model in general, however
in the case of Nexus machines it should not be necessary. At any rate, I
should be able to opt out of the rolling update model and put myself at the
front of the line without having to manually flash a factory image.

~~~
nly
Just side load it. You can download the official OTA ZIP which won't factory
reset the device. You don't need any 3rd party mods for this because the ZIP
is signed by Google.

[http://www.droid-life.com/2013/07/25/android-4-3-update/](http://www.droid-
life.com/2013/07/25/android-4-3-update/)

------
dspillett
The screen size diagram misses an important extra complication: the same pixel
counts and screen sizes do not always match up. In this room right now there
are ~7" devices with resolutions of 800x<whatever> (where "what-ever" varies
depending on aspect ratio), 1024x? and 1280x?. When the G2 Nexus 7 turns up
there will be at least one at 1920x? too. Similarly resolutions of 1280x? can
be found on devices with physical screen sizes from 4.3" to 10.2".

Of course for many apps, if written properly, this simply doesn't matter - but
if you try cram too much on-screen assuming 1280x800 means a 7" device your
app may be difficult to use on 4" one.

Most of the people you see complaining about Android fragmentation are people
that are avoiding Android because they are scared of it (rather than having
tried to deal with it) or people who would prefer you to buy an iOS device
that their app is already available for instead of an Android one that drops
you out of their target market until such time as they port to Android.

~~~
sjmulder
Like you say, for a well built app the pixel density does not matter because
you design in dp.

> if you try cram too much on-screen assuming 1280x800 means a 7" device your
> app may be difficult to use on 4" one.

For the reason above, this just doesn’t follow. A 7" device would be about
600dp wide (in portrait), while a 4" phone would be about 320dp, regardless of
pixel density. That’s not too different from iOS – the original iPad and the
iPhone 5 have a similar number of pixels.

------
eagsalazar2
All these graphs are BS except the one about OS fragmentation. Devices and
screen sizes are not "fragmentation" any more than people viewing their
browsers on different screens or resizing windows represents fragmentation.
That is just the reality of a viewport that potentially has many sizes. It is
a FEATURE. Is it harder for developers?? Of course, but blaming it on
fragmentation is a cop out.

The OS thing is real and really worse than what is depicted because depending
on the APIs you are using even OEM specific tweaks introduce additional
variables.

------
cromwellian
Web Fragmentation Visualized :)
[https://plus.google.com/110412141990454266397/posts/1j8be9w3...](https://plus.google.com/110412141990454266397/posts/1j8be9w3oLa)

------
xpose2000
Of course there is going to be many devices and many sizes. That's the whole
point of android.

The most important trend to notice is that Android operating system breakdowns
are getting better.

4.x accounts for 60%~ market share. 2.3.x accounts for 34%.

Those are good signs.

------
valgaze
If you peek into the dataset (fragmentation_model_July_2013), these are some
of the first few entries:

    
    
      DIGMA iDs10 3G 
      !QU SMILE advance 
      \002\"" 
      (MC605CH) 
      *#? (^?^)=? 
      001DL  
      001HT 
      003Z 
      007HW 
      009Z 
      06_v89_hjy1 
      06_v89_jbla768_asx
    

How on earth is a firm supposed to make sense of nonsense like that to inform
their device targeting?

------
mkr-hn
> _11,868 Distinct Android devices seen this year_

> _47.5% - Samsung 's share of those devices._

It seems implausible that Samsung has made 5,934 distinct Android devices.

~~~
RivieraKid
Yes, the data is inaccurate, some of those devices are in fact ROMs (ROM is
basically a custom Android build).

~~~
dntrkv
And a custom ROM should be treated as a different device.

~~~
CJefferson
In that case we should also have iOS 6, 6.0.1, 6.0.2, 6.1, 6.1.1, 6.1.2,
6.1.3, 6.1.4. Suddenly there are a lot more versions of iOS.

Also many of those ROMs might only run on a dozen devices, trimming the long
tail, remove say any ROM used by < 100 people, might be a good idea.

------
alayne
In my experience, the UX expectations on mobile are higher than for desktop
apps. It's hard to get the UI to be tight/efficient/performant/attractive
across such diverse devices and operating systems with Android. It's not
insurmountable, it's just something that works against you in producing a good
app.

------
AUmrysh
It appears that the source data download at the bottom of the page is broken,
it gives an XML file with two fields saying AccessDenied.

edit: it's working now

This is some great information to think about concerning Android
fragmentation, and how, perhaps, it's not actually a bad thing.

------
madlynormal
The promise of Android was to be free and open. Did you not expect
fragmentation?

------
muyuu
Why do HTC, HTC Europe and HTC Asia form distinct categories? Put together I
think it would be pretty high. Also, Motorola (which has the exact same colour
as Huawei and is next to it) and Moto.

Great diagrams anyway.

------
mmanfrin
Observations: in the bottom right quadrant of devices, one can find the
iPhone5 is a device with an Android installbase. Also, it seems silly to
degroup carrier-branded phones in the branding section (A 'Verizon S3' is not
listed under Samsung).

------
dorfsmay
I don't remember to ever read an article about DOS or Windows or Linux
fragmentation...

In other news, "DOS vs. VMS fragmentation", Only 5% of PC are manufactured by
IBM, Digital manages to capture 100% of the VMS market!

------
DangerousPie
As a word of warning, the visualizations on this site managed to lock up
Firefox on my MBP to the point where the only thing I could do was force power
off the whole laptop and reboot.

~~~
scholia
Worked perfectly in Firefox 22 on Windows 7....

~~~
threedaymonk
Desktop fragmentation!

------
fooyc
Anyone did a visualization of browser window size fragmentation ? I'm
wondering how the web can even work with all this fragmentation.

------
thechut
Looks like open signal has become part of Apple's PR arm. I will be
uninstalling iOpenSignal...

------
anuraj
Android is Samsung - more than Google. With its market power Samsung can now
dictate terms.

------
soapinmouth
only 5% of pc users are on windows 8% and 25% are still on xp = dead platform
obviously too fragmented to develop for.

Linux is even more "fragmented" than windows why would people even use it with
all that scary fragmentation!

------
primelens
Can I just say that D3 and its underlying concept is just beautiful.

~~~
ricardonunez
Was my first thought. A beautiful showcase to D3 capabilities. Really well
done.

