On the iPhone SDK (or lack thereof)
There is a lot of controversy in the Mac development community over Apple’s newest computer— the iPhone. That wasn’t a typo— the iPhone is a small computer with phone capabilities. That’s what separates “smartphones” from “dumbphones”.
But, unlike most smartphones on the market, there isn’t a proper way to develop for it. For now, Apple has chosen to limit development for the iPhone to web-based applications. This is severely limiting and Mac developers are fuming mad over it. With good reason.
So why would Apple do this? Maybe they just haven’t finished work on the developer tools? That’s a little silly, because obviously they have such tools and they work well enough to develop the built-in iPhone frameworks and applications. So why not release them? Why not make an open device, as the Mac is open?
I suspect the real limiting factor here lies in legal contracts that have been signed with partners: AT&T (their service provider for the iPhone), Yahoo and Google.
Think about it— if the iPhone were truly open, you could measure in days the time it would take to port these key applications to the iPhone:
These are communication tools that would draw usage and control away from existing communication tools on the iPhone. VOIP over WiFi is a threat to the minutes-based model AT&T has for all their plans. If you could Skype to other Skype users (anywhere in the world, mind you) on your iPhone for free, that cuts into their profits. Likewise with using Twitter or Adium instead of SMS. Also, these services would also place a heavy strain on AT&T’s EDGE network.
But the biggest risk an open iPhone poses isn’t to add-on services like SMS. If the iPhone can be truly open, then the future replacement for ‘EDGE’ is not 3G, but WiFi. An open iPhone means that two years from now you won’t need an AT&T contract— or a contract with any mobile phone provider. And that is why there is no SDK today.
I think the next step Apple will take is to allow custom widgets to be developed and installed for the iPhone. This is little more than a web-based application that runs locally on the device. There are thousands of these widgets for Mac OS X today. ‘Dashcode’ (the widget development tool, currently in beta) is a decent environment for making these. And these would likely still not be able to run ‘native’ compiled code, but it’s a baby step toward custom applications on the iPhone’s ‘Home’ screen.
But even that would not be enough. Apple will need to allow full-blown, rich Cocoa applications to run on the iPhone. Maybe it happens after some contractually-imposed moratorium, but I believe it will happen.