Latest Tweets

 

An dr oi d

I’m diving back in now, but I’ve been too busy in the past 6 months to engage in any serious Android development; I’ve only been able to admire all of the exciting new developments - new apps, new handsets, new services and, of course, new platform releases.

Reading Dan Morrill’s post on android compatibility prompts me to share my personal irritability at the constant reports one can read about android ‘fragmentation’. This exercised me quite a bit during the build-up to the iPad SDK release.

Firstly, most of the comparisons that writers make between Android and J2ME are lazy and bogus: J2ME is a specification and Android is a ‘codebase’. As a consequence, the scope for incompatibilities between Android devices is significantly smaller.

Secondly, the comparisons between Android ‘the platform’ and iPhone ‘the product’ often dwelt heavily on the fragmentation bogeyman. When a new device, the iPad, arrived and had hardware specifications at variance with those of the iPhone many developers expressed concern that they would need to modify their applications to take advantage of the new device.

I suspect that many of these developers, those who might once have regarded the iPhone’s defacto consistency as an advantage - a simplification and timesaver - now find themselves with more work than is necessary to support two devices than if they’d developed their application for a platform that supported them in the task. Say, like Android!

And now to the crux of my annoyance. I’m addressing developers here when I ask: Are you really serious providing LOTS of users with a rewarding experience of your application?

Because if you are, then you have to be ready to accommodate them, and they’re pretty a variable bunch. I don’t want to get preachy, but not everyone speaks or reads English. Some people can’t read at all. Many people have weak eyesight and some are completely blind or deaf for that matter. I could go on, but my actual point is this:

Not every possible user’s needs can be met by the same mobile phone. The user variability that application developers attempt to handle via good UI design, accessibility, and internationalization, extends outside of the software domain and into the hardware.

Most of the concerns that developers flag-up as being aspects of fragmentation are simply the realities of addressing the needs of these users, large numbers of them. Some users will be poorer than others; they can’t all afford the newest/best handsets. Some need larger screens for their bad eyesight. Perhaps their motor skills are poor and they prefer a real keyboard. etc.

Android is a single platform that is designed, within reason, to accommodate as many mobile phone users as possible, and it supports us developers by providing helpful libraries, tools and APIs that can make a single application binary accessible to them all.

If you’re serious about making a mobile phone application available to the greatest number of users possible, I think you should develop for android and embrace the tools it provides for coping with the diversity of its users, not exhibit every hardware variation it exposes as evidence for its present/eventual fragmentation.