

Android's Overblown Fragmentation Problem Revisited - sendhilp
http://nickbradbury.com/2014/03/28/androids-overblown-fragmentation-problem-revisited/

======
swanson
I've found that the much more annoying and difficult to deal with
fragmentation bugs are carrier specific. You will find things like Samsung has
changed how you launch the default browser from your app or HTC doesn't follow
the spec for getting an image from the camera. These are the kind of bugs that
drive me crazy.

My current project runs a test suite (as well as some light adhoc testing) on
6-7 devices (across screen densities and carriers) and that seems to catch
most of the issues without spending $20k on a device lab. (We use the
excellent Spoon library by Square:
[http://square.github.io/spoon/](http://square.github.io/spoon/))

Screen sizes are not an issue for anyone that's shipped a non-toy app. API
levels are not so bad - though you will find yourself using the Support
Libraries even in cases when they shouldn't be needed.

BTW: Android provides a weekly report of OS/screen sizes etc that access the
Play Store:
[http://developer.android.com/about/dashboards/index.html](http://developer.android.com/about/dashboards/index.html)
Use this (not a random blog post) to make informed decisions for your clients
on your minSdkVersion.

Now if you want to talk about a real headache for Android developers, let's
talk about Fragments - not fragmentation :)

------
andmarios
Many comments here can be summed to “I am frustrated because Android is
fragmented and I may not be able to target all one+ billion android devices if
I code for a week”.

No problem here though, if you think 1+ billion users don't deserve a few dev
hours, you may as well code for another platform. Same goes if you think
targeting anything less that 1+ billion users is problematic.

------
guelo
As far as OS version fragmentation, iOS 6 and Android 2.x are both running on
approximately 20% of their respective ecosystems. But for some reason iOS
developers are more ruthless in cutting off older devices. I recently
convinced a very insistent company to drop Android 2.x support after I pointed
out that they had already dropped iOS 6 support without giving it a second
thought.

~~~
melling
So, now you support one version on each platform?

~~~
guelo
One major version with several minor versions. iOS 7.0 and 7.1, and Android
4.0 through 4.4.

------
aaronbrethorst
_I still maintain that fragmentation is less of an issue than is commonly
believed...I think the biggest problem is that unless your app is relatively
new, you probably have to continue supporting Android 2.3. Making sure your
app works on that ugly, buggy OS is a massive pain._

I gripe about having to support an OS that Apple shipped in Q3 2012. Semi-
mandatory Android 2.3 support _is_ a fragmentation problem, especially when
you mix in all the crazy shit some handset makers and carriers have done to
'improve' Android.

See, for instance, [http://techcrunch.com/2012/06/02/android-qa-testing-
quality-...](http://techcrunch.com/2012/06/02/android-qa-testing-quality-
assurance/)

~~~
SomeCallMeTim
>Semi-mandatory Android 2.3 support is a fragmentation problem

Only for spoiled iOS developers.

I used to develop for Windows, starting in pre-1995. Want to talk about
fragmentation? With dozens of video cards, each with their own custom APIs for
doing anything that standard VGA couldn't handle, dozens of sound cards with
varying levels of support for the de facto standard(s), memory configurations
from 128k through multiple megabytes, BIOS variations, and even CPU bugs in
AMD or other non-Intel chips...and then tons of software that might be running
on top of your app (drivers and such)? THAT was fragmentation.

Windows 95 and later (specifically after DirectX was introduced) reduced THOSE
problems significantly, but new ones surfaced, anti-virus and firewall
packages being the worst, though some video cards still have bugs that break
things randomly.

You think having to support 2.3 qualifies as a problem? JUST having to support
2.3 is a _dream_ compared to what we used to have to deal with. The
compatibility libraries -- especially the latest versions -- do a great job of
making apps work everywhere. And if you're using OpenGL, you have even fewer
compatibility issues to worry about.

Get off my lawn. ;)

~~~
gress
Spoiled by having lower costs and so being able to devote more resources to
the product for their customers?

~~~
gress
Isn't that simply a logical consequence of the GP comment? Presumably the
downvotes indicate a dislike of the state of affairs.

------
skrowl
The people who point out "90% of Apple iPhone users are on the latest OS
version! Android sucks because not everyone is on the latest OS!" don't
realize (or care) that Apple just bundles up a bunch of userland components
and calls it an OS update. Nearly everything but the kernel is auto-updated to
the latest version on all Android devices, even if they're several OS versions
behind.

The discussion should be around "What is it that people without the latest
hardware / OS version can't do?" not "What number does your phone say under OS
version?"

~~~
barumrho
_Nearly everything but the kernel is auto-updated to the latest version on all
Android devices, even if they 're several OS versions behind._

This benefits users, but not developers. Developers still need to code and
test against old API levels.

~~~
nopayne
This is only partially true. Google has started distributing some APIs
automatic updates as well via Google Play Services.

[http://developer.android.com/google/play-
services/index.html](http://developer.android.com/google/play-
services/index.html)

These features are made available on older releases of Android.

------
nebstrebor
Around our shop (we have several PhoneGap projects) we frequently refer to
Android browser as the IE of mobile. (and we're referring to IE6-8). Its crazy
how many really key parts of HTML & CSS don't work on various versions of
Android browser that are still very much alive and well, including some that
worked on 2.3 and stopped working on 4.0 or 4.1. We basically have to turn our
apps into static pages for anything < Android 4.2.

~~~
underwater
For me it's Mobile Safari. Everyone on the platform is forced to use it and
it's many, many horrible bugs.

------
TrainedMonkey
I think a subtle problem with the android fragmentation is that it is not
going to get any better. As time goes on there will be more devices running
more android versions.

While Google's cheap handset initiative embodied in Nexus 5 will ameliorate
problem a bit by giving people incentive to upgrade, it is not nearly enough.
I would like to see Google do more to address growing complexity of
fragmentation.

~~~
pjmlp
We manage fragmentation between computer systems since the dawn of computing.

I really don't get why some people make a huge fuss about it on Android.

~~~
TrainedMonkey
I do not dispute that. I agree that it is a manageable situation. What I was
pointing out is sheer scale of it. Given enough effort it is certainly
possible to make any app to work on all android platforms. However, there are
millions of apps in the play store and it is not possible to make them all to
work on every device. I just think Google should be actively working to make
that task easier on developers. For example getting cloud emulators or even
physical devices available to developers for testing their apps against with
automated framework.

~~~
pjmlp
How is that any different to make it work on the hardware configurations of
all PCs ?

~~~
FigBug
It's not. Except Windows has 95% of the market and the Mac had 5% of the
market. So even though it's easier and cheaper to support a Mac app, the
market is so much smaller it's still not really worth it.

Compare to mobile where iOS market place was leading, it didn't make a lot of
sense to spend more effort on the smaller market.

Now the Android market is about equal, you are still spending more effort to
make the same money.

~~~
pjmlp
> Except Windows has 95% of the market and the Mac had 5% of the market.

Except you are forgetting, screen resolution, processor speed, graphics card,
sound card, co-processor, printer type, scanner type, microphone, webcam,
harddisk, network card, modem, ...

~~~
mgkimsal
Way back in the day it was pretty common for people to swap out pieces of a
system (not too much today except for gamers).

Your system needs a bigger screen? Get a bigger monitor and/or graphics card.
Need a faster modem? Buy one. Need a camera? Add it.

Go upgrade the graphics chip in your Android 2.3 handset. Oh wait...

~~~
pjmlp
That doesn't have anything to do with the complaint about Android's
fragmentation.

~~~
mgkimsal
you're pointing out 'fragmentation' in the windows market because of all the
varying hardware, and it seemed you were saying it was equivalent to the
android world. it's not, because you generally could change hardware on a
windows system, but not on an android device.

~~~
pjmlp
Quite the contrary.

I am pointing out that fragmentation in the COMPUTER HARDWARE and SOFTWARE is
normal and exists since computers are among us. Windows market is a tiny spot
of the COMPUTER HARDWARE and SOFTWARE around the world.

Any good developer learns to deal with it instead of writing posts whining
about it.

Plus iOS which is oversold as not being fragmented has different set of API
support depending on iOS/handset/tablet pair set.

~~~
mgkimsal
But... it wasn't ('a tiny spot') at the time. And good developers didn't 'deal
with it' so much as people simply upgraded their hardware - computer stores
routinely upgraded people's modems, graphics cards, sound cards, monitors,
etc. Of course, some software would run with lower quality hardware, or try to
run without certain features, but people mostly upgraded components (or entire
systems) to be able to run newer software. We do that today somewhat - buying
new systems - but no one reasonably tries to upgrade the CPU in their android
smartphone - they just get a new one.

We're either talking past each other or have a vastly different sense of the
issue we're talking about (or both).

~~~
pjmlp
> We're either talking past each other or have a vastly different sense of the
> issue we're talking about (or both).

My point is that developers always had zero control over the hardware/software
configuration of the systems being targeted, it has nothing to do with the
ability to upgrade.

Lets say one is coding an application for Amigas. There are 500, 600, 1000,
1200, .... series.

There is zero control over which type of monitor/TV and external devices the
respective users have attached to their systems.

There is no concept of device drivers as of today systems, most need to be
provided by the application writers themselves.

Again, zero to do with upgrade capability rather with the diversity of the
installed base.

------
wzsddtc
If you have used Android's Camera APIs, you would know how bad the
fragmentation is. Had to fix various framerate/preview size issues on many
Samsung S3/S2 variants because Samsung have their own private camera
parameters when you don't use the default MediaRecorder and just try to
process the frames yourself. (I work on recording for Vine)

------
notastartup
I still haven't popped my mobile development cherry because of how fragmented
the development experience is on a few levels. One, the pain of having to
develop twice for iOS and Android and Blackberry (if someone requests it).
Two, the pain that comes with fragmentation in each specific platform with
Android being the worst.

Because the app store is a race to the bottom, I don't want to create an
Android app that works well only on the latest devices and have someone else
copy it and make it available for all other platforms. This fear is enough to
keep me from executing any ideas on the mobile platform.

I still focus on web applications and HTML5 because eventually everyone will
be on a phone powerful enough to use it.

~~~
SomeCallMeTim
Cross-platform development of games is trivial (C/C++ and OpenGL work on all
of them).

Cross-platform development with PhoneGap or similar is also trivial, and isn't
hard to make work on (almost) all devices.

~~~
notastartup
I have been looking at Intel XDK, I think it hits my pain points.

PhoneGap I'm not so sure about because people seem to be walking away from it
and writing native applications instead because they were frustrated by
performance. Now, I'm sure there's success story.

