This just passed by in my twitter timeline again. First sentence of the article: "Android fragmentation is a huge problem"
. This ticks me off for a few reasons.
First it appears that most of the "Android fragmentation is horrible" stories come from developers who moved from some other platform, iOS or web apps maybe, and not from experienced Android developers. In the article Temple Run is taken as an example, a popular game on iOS now available on Android. A few weeks ago there was a simliar post concerning another iOS game, stating that they dropped Android because it was so fragmented.
Now don't get me wrong, I won't argue that there is no fragmentation (I rather call it diversity or choice, but whatever). But in my experience as an Android developer it's something that is not that hard to deal with, if
you know what you're doing, what the constraints of the platform are and if you put some effort in understanding the Android architecture and platform as it is today.
If I read between the lines, I often get the feeling that the said iOS developer tried to do the iOS thing on Android, like they did on iOS. Well, for obvious reasons, that won't work. The platform is different. The architecture is different. The devices are different. So you need to adjust. You need to adjust your design process. You need to adjust your testing strategies. You need to adjust the ui and uix for the platform you are targeting. You need to invest your time in the other platform, just like you invested in creating web apps or creating iOS apps.
Hell, if I would create an iOS app, slapping all kinds of Android design patterns on it like the ActionBar or maybe the familiar homescreen design, or tabs on the top of the screen, I'd get flamed, and there would be every right to do so. If I'd make a universal app, but still make the app iPhone size on an iPad, I would be ridiculed. And that would be totally OK. Still this is the way how some iOS apps are ported to Android. Silly if you ask me.
Secondly, the people who are propagating the message are usually iOS folk who seek reassurance that their platform is superior in some kind of way, at least when I take a look at my twitter timeline. As a geek, I can't really understand this. Sure you might have your preferences, I know I do, but isn't being a geek about being interested in technology? Don't you want to know how things work in other technologies? What's all that religious stuff about your special technology? I'd rather have a nice discussion based on facts and arguments than one based on fear and religion. I often take a look at iOS stuff, I use a mac, I have XCode installed and I did some iOS programming. I love my iPad for certain things, I love my Android tablet for other things. I have great respect for people who build great apps on any platform. It's not a black and white world. Can't we all just get along and build great apps to learn from each other? :)
So how can we improve things, or at least balance things out a bit? Do we as #androiddev people fail to communicate the message? Did Google fail to do that?
When I did my Embracing Fragmentation talk at mdevcon, someone asked if an Android app would break when the OS is upgraded from 2.3.4 to 2.3.5. I must admit I'd never seen that one coming. The answer is of course NO, but it does give me a sense of the amount of fear there's present, and, at the same time, how effective the "Android is fragmented" message has been.
Now for some various other comments while I'm at it.
1. Yes, I think that developing for Android is harder if you compare it to iOS. On the design side, things are harder because you'll have to be in the responsive design mindset. I think this is a great quote from +Jake Wharton
:"You’re a Web developer in Java” is the first thing I tell every person mentioning fragmentation. There are no tablets. There are no phones. There’s no Google TV. There is only an unlimited set of configurations of every conceivable feature. Write your application in a dynamic, progressively enhancing manner that follows well-documented patterns and you will be just fine."
Scary or a great opportunity?
See for the full article on +LockerGnome
here, it's a good read. http://www.lockergnome.com/android/2012/01/24/programmers-perspective-how-androids-fragmentation-can-be-a-good-thing/
2. Android is from an architectural perspective more open and technically it is less restricted when compared to iOS. With great power comes great responsibility and it will
be easier to shoot yourself in the foot if you approach a problem in a sub-optimal way. If you realize that you'll be safe. You'll be wearing your seatbelt so to speak.
3. In my daily work most of the issues I encounter are not due to Android being fragmented. They are mostly bugs in my code, on any device, no matter which version of Android or how big the screen might be. I'm only human and I need to test my code better ;)
So please, let's drop the mantra that Android is a fragmented hell hole and start being constructive.
Most important of all, nobody is forcing you to support Android. If you can't support it yourself either out of technical investment or religion :), outsource it to someone who can.