Today's desktop application developers have it easy. We essentially have three OS platforms to choose from: Windows, Mac OS X, and Linux. And even then, there are often ways to make software written for one platform run on the others. Compare that to the early days of PC software development, when developers were forced to choose between Apple, Atari, Commodore, IBM, and other proprietary hardware platforms, with little commonality in between. But even those Bad Old Days pale in comparison to the situation mobile application developers face now.
Even if we limit the choices to smartphone platforms alone, mobile developers must choose between Android, BlackBerry, iPhone, Palm webOS, Symbian, and Windows Mobile -- am I forgetting any? And each is incompatible with the others. In turn, the choice of platform limits the choice of tools and languages that are available, not to mention the range of devices the apps can run on. That's true even for Java -- Java ME was a nice idea, but the world of mobile handsets is still a far cry from "write once, run anywhere."
Obviously, reaching the broadest possible audience is a top issue for mobile application developers, but there are other factors to weigh. Here are a few things to think about when choosing a smartphone platform for your mobile apps:
1. Which carriers offer devices for the platform?
BlackBerry devices are ubiquitous across U.S. mobile carriers, but not every model is available on every carrier's network. Similarly, customers who want iPhones have no choice but to sign up with AT&T (assuming they also want support from Apple, warranty coverage, and access to the full feature set of the device). So far T-Mobile is the only carrier offering Android phones in the United States, while the Palm Pre is exclusive to Sprint -- although it's rumored that both phones could show up on AT&T's network before long.