Hacker News new | ask | show | jobs
by prof_hobart 5182 days ago
It's far from ideal, but it's a long way from the Android fragmentation (can't comment on Windows Phone, never been involved in dev for that).

With Android, there could be any one of dozens of resolutions (iOS has two basic resolutions, with a relatively simple 2x multiplier version of each of those), you could have a keyboard or not, you could be a device with a resistive screen with no multi-touch (or even no touchscreen at all), your OS version may dictate whether you can install on the SD card or not - or have one of many other significant differences - and the device may not be able to upgrade to a more up to date OS version, etc etc.

When we launched our app recently, we tested it on 3 different iOS versions (a 3GS, a 4S and an iPad 2), and about 20 different Android ones. I can't remember a single major issues that appeared on only one model of iOS device - and I can't think of any that have appeared in the wild either. On the other hand, we had dozens of "only occurs on Android device X with OS version Y".

3 comments

You're right that there is a big difference between them for now.

We're currently seeing around one new iPhone and one new iPad coming out of Apple each year, though. Don't forget iPod Touch, by the way. Sometimes they come with new features not available to older devices. They get released with three different storage capacities, and only some of your users will have 3G/4G on their iPads. The point is that in a year or two this is going to be a worse situation even for iOS devices. It's reasonable to assume that Android fragmentation will also get worse.

Where does that leave us? Well, I think Android is taking an interesting approach. A couple of the things in the Android SDK that help deal with fragmentation: - Standard UI components (eg. Action Bar for actions/navigation, Fragments for generic slices of UI, Layouts for providing guidance on how Fragments are to be arranged on different devices and screen orientations) - They provide a support library that can be bundled with apps using features from newer OS versions so that the new features also work on devices running older versions.

I agree it will get worse, but I don't yet see anything that suggests iOS is going to get close to the fragmentation that Android already suffers with.

Things like storage capacity and network availability are challenges, it's true. But they are things that can affect any device (you can fill up a 64GB device, and you can be in an area with no network), so they aren't really fragmentation issues unless your app requires huge storage or depends on a specific network type being available. Android by its very nature is always going to have a far wider variation than iOS. This is not necessarily a bad thing (there's more choice and more cutting edge options in Android), but it does create a fragmentation challenge of a totally different scale to iOS.

I'm curious - How many of those "only occurs on Android device X with OS version Y" issues were actually problems with the device X / OS Y combination versus how many were actual bugs that (for whatever reason) were only showing up in that particular case?

According to the ZipLine CEO here:

http://thenextweb.com/google/2012/04/02/zipline-ceo-stop-whi...

most of the issues they saw along those lines were general problems that happened to be manifesting in a particular situation. I'm curious about whether or not that experience is typical or, for instance, if ZipLine saw that because they were working on a framework first and a specific game second.

There was certainly a fair amount of the latter - couple of examples off the top of my head were things like layout on one screen sometimes being screwed up on a phone with a tiny display, or unexpected character entry because someone was using a device with a physical keyboard that sent keys that the used couldn't have entered with the on-screen keyboard. There were also a few caused by different OS versions (I seem to remember one that had something to do with either different encryption or storage behaviour on one old handset - not sure of the detail, I wasn't the developer, but it wasn't saving encrypted data on one specific device).

However even if it is a bug, bugs do happen and if it's a bug that only shows up on one out of 20 OS/handset/network combinations (if you're lucky enough to have that one specific combination in your test labs) is going to be one that's going to be a lot harder to spot than one that either occurs on all devices or not at all.

I'll absolutely agree that bugs that only show up on particular device/OS/network/etc combinations are harder to detect, diagnose and fix. But when those bugs are generally applicable (and the particular combination is just surfacing the underlying issue) I'd say it is better to be thankful they came up instead of frustrated by fragmentation.

After all, when it is a general bug that just happens to be masked most of the time, it is a buried bomb just waiting to explode when the surrounding context changes. In my opinion, detecting and defusing more of these issues sooner rather than later is a good thing.

Personally, I'm reminded me of the issues I run into when writing cross-platform code (or code that needs to work with multiple versions of tools and libraries). The upfront effort to multiple environments (or the effort required to add the new environment) is usually significant, but I'd say the improvement in code/software quality is an often unrecognized benefit (over and above the reason you're supporting the new environment in the fist place).

With Android, you usually provide 3-4 different sizes of PNG/JPEG etc. It's the same on iOS.
That solves a tiny percentage of the issues on Android, whereas it resolves the majority on iOS. That's the difference.