Why the iPhone?
It’s no secret that the iPhone has become a phenomenally successful development target among both seasoned professional engineers, and midnight hobbyist fanboys alike. Some of the most interesting and innovative mobile apps are delivered regularly, courtesy of the Appstore, and are just as likely to be developed by one guy after work with a six-pack of Mountain Dew as a large and well-financed software studio.
As a result, ever since that memorable summer day, back in August of aught-7 when the first iPhone hack was announced, the iPhone/iPod app scene has really become nothing short of a worldwide phenomenon.
When I started the Distant Suns port,(what? Another shameless plug?), it was very cool to say to people with an air of superiority “Oh, me? I’m just doing some iPhone stuff.” I would then pause for the genuflections and the bombarding of flashes from the paparazzi. Nowadays the response is more like “so, who isn’t?”
So what makes the iPhone such a compelling platform? There have been many other smart phones out there. Palm, Windows Mobile, J2ME (Java) based systems, Symbian, and so on. Each of these has available public SDKs, and some even come with free dev tools. And there have also been sites and storefronts aplenty for third party apps.
So then, what makes the iPhone development scene different from all of the others that have been around for years?
Let’s put the cool tech aside for a moment and look at the practical nature of the product. When you program for the iPhone and iPod/touch, you are programming in effect for a single device. If your stuff works fine on your iPhone, you can bet it will work fine on every one else’s (unless you are uniquely bound to a specific feature on a single device .) I can’t overestimate just how huge of a win this is for the dev community.
If you concluded that the iPhone developers are just a bunch of overly self-important mindless sissy-boy automatons following the Pied Piper of Cupertino, and decided to “think different” by doing a Blackberry app instead, well, uh, cool. Okay, so which Blackberry will you develop for sport? The Storm? Or maybe the Storm 2? How ‘bout the Pearl, Bold, or even the Curve. You see, each Blackberry is different enough you will have no assurance that your app will work on the entire family unless of course, you buy one of each model. So there’s about $1500 less you can spend on comic books and Big Bang Theory DVDs. Some Blackberries have touch screens, some don’t, some may have a teeny trackball, and well, some may rely on a rocker pad. Get the picture? So who’s going to lay out hundreds of hours of development time with that kind of commitment? And by the time you’re ready to go into test, there will probably be another 3 or 4 models you’ll need to buy. There are some services to help these situations, but they too tend to be pretty costly.
Well then, how about Windows Mobile? Same thing applies but only worse,because you’re bringing in multiple manufacturers, each with their own unique versions of the OS to match their device’s unique features. And that means all manner of additional nasties and quarks, enough to keep an army of reavers awake at night. Oh, and then there’s the branch of the OS designed for devices with full alphanumeric keyboards and touchscreens vs. a pared down version for phones with just a numeric keypad and no touchscreen. The latter uses a somewhat different UI model so programs needed to two different versions of each dialog if they were to work on both a Palm Treo and a Samsung Blackjack for example.
My head hurts.
My day job is at the Internet music pioneer Live365. A couple of years ago we introduced a Windows Mobile version of our player client. Everything was working just fine…until the day. Yup, it was that day we took delivery of an HP iPaq for “just a quickie sanity check” on a non-phone device. But when launched it seemed to already have me logged in as a user from England. Turned out that HP had broken a very important piece of Microsoft’s authentication code, and all iPaqs of this model looked like the very same physical device to our servers so everyone would be in effect, one single user. After I stopped sobbing and was coaxed out from under my desk with a sack full of Skittles, we were able to kludge something together but had to delay our release for a few more days.
The iPhone doesn’t have these kinds of horror stories. True, dealing with the different releases of the iPhone OS might cause a furrowed brow from time to time, but you shouldn’t have to hide the rusty razorblades.
Most of the Distant Suns development was done on a 1G iPod/touch. I eventually had to give in to The Man and got a 3GS so I could add in compass support.
These days I use four different devices, three iPods and one iPhone just to be extra safe. Tycho has 2.2.1 OS for those cheapskates who don’t want to pay for an upgrade, Copernicus has 3.0, Clyde (the latest addition to my happy little family), is 3.1.2, and same for Galileo, the iPhone.
So this is a long way around to say that there really is no mystery why the iPhone app scene is exploding: developing for this thing is just plain stink’n dirt-cheap when compared to any other platforms.
Go forth and code.