iPhone SDK - Still No Silver Bullets for Device Development
There has been a lot of criticism of Apple over their decision to not release a ‘proper’ (ie low level) SDK for the iPhone. A lot of developers with only a background in PC and/or web development have been bitching the lack of the SDK. I have a background in smartphone development, having been involved in development for the Symbian platform (’110 million Symbian smartphones shipped’ as their website crows). So here’s a perspective based on some experience in that market.
I think Apple’s decision not to release a full blown SDK is an understandable one. When Apple cites security concerns for this decision they are not whistling dixie. Controlling access to, protecting the state of, and profitting from the mobile network is something that network operators take very seriously. They certainly don’t like the idea of any old code being run on client devices.
Symbian used to be an open development platform - anyone could write applications for it given the time and inclination, and then distribute the applications to other users. A couple of years ago this changed with the advent of the Symbian Signed initiative. Developers have to get their applications certified through an expensive (ie. more than free) programme before they can distribute their applications.
If Apple ever do decide to do an open SDK, they will probably have to have their own certification programme for applications.
I also think people have got carried away with the hype over how powerful the iPhone is. Sure it might run some kind of cut down version of OSX, but the fact is it’s still a smartphone and not a full blown computer. Device programming imposes all sorts of constraints and requires a level of developer discipline that developing for desktop machines just does not demand.
Power consumption is an issue. Users expect their phones to work reliably all the time. Memory is limited, and applications can end up running for a long time - meaning memory leaks can be disastrous for system stability. If you’ve ever been annoyed by some Java application that has crashed your phone, you will know what I mean.
It’s certainly tempting to think Apple have come up with a silver bullet and made all the constraints of device development disappear, but they haven’t. And protecting the user experience consumers have with the iPhone is a priority for Apple. If the iPhone ran 3rd party apps, there would be no way to provide the kind of consistent user experience that a closed platform can provide.
Apple has promised a Web based SDK for the iPhone. It reportedly will allow access to some features of the iPhone. This could be more than good enough for a wide category of applications. I predict that Dashcode will form the heart of any SDK for the iPhone.
Not happy with this? Really want to develop applications for smartphones that have a large market? Try using Symbian or Java. There are a lot more devices out there running these platforms and development is (relatively) open. And yes, you’ll have to cater for a wide variety of devices and form factors and face all the challenges that brings. When the iPhone Nanos/Shuffles/Gizmos get released at some future point in time, these exact same problems would face any iPhone developers with access to a iPhone SDK.
After watching a Steve Job’s reality distorting presentation, it’s tempting to think the iPhone has the power and capabilities of a desktop computer, and that developing for it would be a pretty simillar experience. Unfortunately, the reality will be quite different.