As Mike noted in his post on code signing, Apple has stated that there will be restrictions on what Apple allows on the iPhone. They list the following application types as being excluded:
- Bandwidth hog
However, this list is incomplete. Section 3.3 of the iPhone SDK aggreement includes a whole litany of restrictions for which your key to the iPhone can be revoked should you violate them. I would list them all here myself, but the license agreement itself forbids that. You can download this file from the iPhone DevCenter, but you’ll need at least a free ADC account to access it. Unfortunately, if these restrictions remain in place, opportunities for developers to be truly innovative on the platform will be stifled from the start.
Perhaps a little history can put this in perspective. Back when the Mac OS was first released in 1984, it had some limitations to it. It could only run a single application at a time, barring some utilities like Calculator and other Desk Accessories. Much like the modern day iPhone, which can only run one application at a time, barring some utilities like Mail and SMS.
This limitation of early Mac OS was solved in the end not by Apple themselves, but by a third party working in their own time. The whole story can be read here but in brief, while not employed by Apple, Andy Hertzfeld took it upon himself to add multi-tasking to Mac OS. In the course of a few weeks, he single-handedly wrote an application that could allow multiple applications to co-exist. That may sound simple in 2008, but in 1985, it was revolutionary and incredibly complex. It involved patching system traps, fiddling with low-memory variables, and playing with other applications’ memory spaces.
When Steve Jobs first saw Switcher, his reply was: “It’s great. Apple is going to bundle it with the Mac. Congratulations.” Andy had written an innovative application that improved the platform for every single user from there onward. Fast forward to today, if he had an iPhone instead of a Mac, it would have been legally impossible for him to do so. This is no mere hyperbole – the SDK agreement expressly forbids using non-public APIs, attempting to touch other applications, and running in the background, among other things.
I don’t mean to suggest that an application like Switcher should come from a third party on the iPhone, merely that such feats of magic are possible on open platforms. As it stands today, as a developer who much wants to take the iPhone to the next level, I must constantly watch to avoid running afoul of Section 3.3 of the SDK license. I must ask “does this go too far?”, and worry about pushing legal limits instead of mental ones. When Andy implemented Switcher, such thoughts never crossed his mind once, and he was able to create something spectacular as a result. We hope that Apple will see the potential of their great little device, and allow developers to push it to its utmost as well.