The Android and WP7 Fragmentation Conversation
We talk about this generic term of ‘fragmentation’ all the time but sometimes someone gets into the nitty gritty of what this really means. You know, to a developer who is forced to try to write an app on any possible screen resolution and for any hardware specs. This whole Android fragmentation thing reminds me of Windows Mobile actually and it’s one of the reasons devs flocked. It’s also why WP7 is shooting for consistency in hopes that devs will flock in the opposite direction. Anyway, Kevin Hoffman wrote what amounts to a short masterpiece on what this whole fragmentation thing is about and why it is such a detriment to Android and so important for WP7. Here’s the text in full (since they don’t have ads on their site but Kevin, if you’re out there, I’ll gladly just link you if that’s your preference). Without further ado, enjoy the read:
On Fragmentation : WP7 vs. Android
Before you read on through this blog post, check out this post on Slashdot from a disgruntled Android programmer who is fed up with having to maintain multiple different code paths to deal with the out of control fragmentation in the Android market.
First, as great as Java may be, it has never been, nor will it ever be, the "write-once-run-anywhere" language that its original creators envisioned. So that’s already 1 strike against keeping fragmentation at bay – developers might be writing Java code, but the underlying JVM and the hardware availability of Java method calls is going to vary from device to device. With Android, we have a completely uncontrolled ecosystem. Any hardware manufacturer can run Android, and they can do whatever they feel like doing with the hardware and whatever else they feel like doing. This means that now every Android developer has to worry about unforeseen resolutions and screen sizes and unknown capabilities of the underlying device. In the case of the Slashdot poster, you also have to worry about whether or not the device on which your app is running can do hardware accelerated graphics. In the short time that Android has been out, Google has released multiple new versions with widely varying capabilities, and dozens of potential hardware targets have been introduced – each with varying size, shape, capabilities, and vendor customizations.
In short, ensuring that your Android app works on all Android devices and has a consistent look, feel, and response is quite simply a pain in the ass.
You’re probably thinking something along the lines of, "Suck it up Kevin… that’s life. That’s reality. Everybody has to deal with this kind of fragmentation." Actually, no, we don’t. That’s just what the apologists want us to think. For the first time in Microsoft’s history, they are actually making demands of hardware manufacturers who intend to support Windows Phone 7 Series. There are only two possible screen size and resolution combinations to worry about – only one of which will be available at launch. Secondly, Microsoft has dictated a set of minimum requirements. If the vendor wants to put WP7 on their device, it must meet a set of minimum criteria that include speed, performance, and available platform features like a GPS, WiFi, etc. Microsoft have always been (for better or worse) the kings of backwards compatibility. You can absolutely guarantee that code written for v1.0 of a WP7 device will work (somehow) on a v2.0 device. You cannot guarantee this for Android and even Google has simply skipped trying to make multiple versions of their own apps (e.g. Twitter) because of the pain in the ass of supporting all the possible fragments and forks.
The reason I’m comparing WP7 and Android is because both of these are operating systems with multiple possible hardware vendors. Apple has (essentially) no fragmentation because they own the OS, they own the SDK, and they own the hardware. The only real fragmentation they have introduced is that iPhone apps not written to be iPad-aware look like ass on the iPad – but they still work.
Going forward, if a client asks me for a mobile application I am going to build it using WP7 and the iPhone. If they demand that I build it for Android, I will give them an hour-long lecture for why I don’t like that idea but hey, its their money – if they want to pay me 3 times to deal with all the different target environments for Android as opposed to paying me once to build one iPhone app or once to build one WP7 app, that’s up to them.
I know you’re all going to flame me for this, but as of yet I still have not seen one single shred of evidence that makes me think I can make any kind of decent money or reach any kind of large market penetration by putting an app on Android. I can get vastly more people, with a vastly better experience (both developer and user), hitting iPhone and then WP7 and then supporting the straggler Android users with a mobile-enabled website.
This was true of Windows as well and the xbox came out to resolve this issue.
However PC games are still being made because of the freedom allowed and more recently getting a bit of a resurgence.
MS have a window (excuse the pun) of oppotunity IMO, where Android will mess up big time with fragmentation but eventually sort itself out. MS need to clean up and keep mackward compatiblity for each generation of phone.
yeah i for one couldn’t agree with you on some points, but think that your outlook when it comes to android dev is very very very flawed. for the most part, the overwhelming majority of devices on android have a resolution of 800×480. so that throws one idea to the wayside, as far as fragmentation and multiple device resolutions. how many people out there actually have a motorola backflip, or one of the crappy android devices that have been released in the last year. as far as devices of late, there’s pretty much the magic/mytouch 3g which is 320×480, same w/ the hero. but really everything else since the droid is coming in at the 480×800 (or maybe 380×854). And as far as which versions to support, whether it be 1.5, 1.6, 2.0/2.1 or 2.2…i think you’d be pretty safe to limit all your development to 2.0/2.1 and 2.2 froyo. These two are going ot make up the majority of the market in the next few months, and on top of that, many people that have older devices (even the magic) have been upgradable to froyo, maybe not by officially means, but it doesn’t mean they aren’t out there. I’m not even a big android buff, but i still think its not nearly as fragmented as people like you like to make it out to be. Sure earlier devices like the G1, my touch/magic, hero and pretty much all the 528MHz devices have been left in the cold. But so has the iphone 2G, and 3G models.