Monday, October 18, 2010

Device Fragmentation

As someone who's been developing products for 20+ years now, I've grown accustomed to supporting multiple platforms. First it was the different variations of DOS, then Windows/Mac, then all the flavors of MSIE and Netscape (luckily Netscape died), then comes Firefox, the annoyance of MSIE 6.0 sticking around, etc... Well all of that was fairly easy when compared to what's going on in the mobile space. Let's limit ourselves to the big three right now (which means I'm not including Microsoft's latest device, which looks promising, but I haven't seen Microsoft develop a decent mobile OS yet), so we have RIM, Apple, and Google.

Let's start with Apple because it's the easiest to describe. With Apple we need to look at only 3G and above, in the area of hardware we have iPhone 3G, 3Gs, 4 and iPad (iPod Touch also if you want), in the realm of OS we have 3.1.3, 3.2, 4.0+ (these are all very similar, for what I'm doing I can develop for 4.0 and still support older OS levels). The development on the iPhone has been fairly simple, because the devices are all fairly similar in size. The biggest issue I see here is that in order to code, well you'll need a Mac.

Next lets look at the next platform, Android. Google has allowed Android to be installed everywhere, this is good and bad. It's good because it's placed a very good operating system on many devices, it's bad because it's put a very good operating system on MANY devices. I see a big issue with device fragmentation with Android. There isn't ONE big company stating the law (such as Apple), instead Android is getting installed on just about every device possible. In the Android beta for TweetDeck, the app was installed on 35,000 devices (this is huge) and TweetDeck recorded 244 different variances of Android (this is scary). As a developer you need to figure out what exactly do you support.... Add on to this that Google wants to push Chrome instead of Android for Tablet devices and the newly released Google TV (I have one of the devices, not sure about it yet, I know it doesn't turn off all my devices when I shut it off).

Finally let's look at BlackBerry, this is the scariest platform of all. Not only is the hardware and OS fragmented, but the backend BES is fragmented. If you are building a "SuperApp", then you may need to ensure both handset hardware/software and BES are properly supported. In the development of my first "SuperApp", I'm also finding that some of the neat tricks I'm seeing on other apps, were done using non-public RIM API calls (these are the ones that RIM holds for themselves). This is a bit unfair and is going to make it difficult to continue RIM development. Add to this the new PlayBook (which won't be available for months) and we're talking about a very difficult platform to develop for.

If I could control my development, I'd focus on iPhone and then Android, unfortunately I need to include BlackBerry also (due to my user base). Until BlackBerry grows up some, I'd avoid development on their platform.

No comments: