iPhone SDK, iPhone SDK! Wherefore Art Thou iPhone SDK?

Ever since the iPhone was announced, Steve Jobs has done a terrible job talking about Apple’s policy and plans for third-party iPhone software development.

E.g., from an interview with Newsweek’s Steven Levy back in January:

“You don’t want your phone to be an open platform,” meaning that anyone can write applications for it and potentially gum up the provider’s network, says Jobs. “You need it to work when you need it to work. Cingular doesn’t want to see their West Coast network go down because some application messed up.”

That’s just silly, of course, because there are a slew of other mobile phone platforms that do allow third party software to run, and zero cases of such an app taking down the phone network.

And then this week, during his interview with Walt Mossberg at the D: All Things Digital conference, when asked about third-party iPhone development, Jobs said:

This is an important tradeoff between security and openness. We want both. We’re working through a way… we’ll find a way to let 3rd parties write apps and still preserve security on the iPhone. But until we find that way we can’t compromise the security of the phone.

I’ve used 3rd party apps… the more you add, the more your phone crashes. No one’s perfect, and we’d sure like our phone not to crash once a day. If you can just be a little more patient with us I think everyone can get what they want.

Which doesn’t sound right at all, because if the iPhone is running OS X, it has protected memory, and one buggy app should be no more likely to crash your phone than one buggy app is to crash your Mac.

Andrew Shebanow asks:

Does the iPhone not have hardware memory protection? Or is it some other software or hardware change that makes the iPhone more susceptible to 3rd party software crashes than the Mac?

These are the wrong questions. The right question is: Why doesn’t Jobs just say what he means, instead of spinning vaguely technical explanations that don’t really make technical sense?

The simple truth is that Apple is committing to nothing because that allows them to keep all of their options open. They’re promising nothing because they don’t have to promise anything — the iPhone needs neither additional publicity nor higher expectations.

Long-term, within the next two years, if not far sooner, I feel certain there will be various ways for developers to write iPhone software. (In fact, in Gizmodo’s transcript of the same Q&A session with Jobs from the D conference, they quote Jobs’s response to the question of third-party iPhone development as follows (emphasis added): “This is a very important trade-off between security and openness. We want both. We’ve got good ideas, and sometime later this year, we can open it up to third-party apps, and keep security.”)

Look at it this way: Apple needs to ship the iPhone. If we assume that, privately, Apple has planned all along to eventually open the iPhone to third-party development, it’s still easy to see why it’s shipping without such support: it would have taken longer to ship. Officially supported APIs take time to document, and they’re a commitment. While iPhone development remains private to Apple, Apple is free to change and shift the APIs as they see fit. If they make a change that requires changes to every existing iPhone app, that’s OK, because every existing iPhone app is theirs.

Waiting also gives Apple time to define the iPhone UI experience. The iPhone is running OS X, yes, but the entire interface is brand new. Even Mossberg seems confused on this; he asked Jobs: “On the technical side… could a Mac OS X app run on an iPhone?” Jobs replied, “We don’t think that’s a good idea. We don’t have a mouse, we don’t have pull-down menus… we have a very different user interface on the phone.”

In an editorial aside in his interview transcript, Engadget’s Ryan Block remarked after Jobs’s answer, “[Ha! Nice non-answer!]”. He’s right that it was a non-answer, in that Jobs didn’t flat-out say “No”. Obviously there are some people who think it’d be cool to run Mac apps on an iPhone, but from Apple’s (and Jobs’s) perspective, that’d be about as cool as it would have been for a character-mode DOS or Apple II app to run on an original Mac back in 1984.1 Technically possible? Sure. But in a “defeats the whole purpose of what we’re trying to establish” kind of way. We still know very little about the iPhone UI. (E.g.: How do you copy and paste without a menu bar or keyboard shortcuts?)

In short, the main reason Jobs might want to delay allowing third-party software to run on the iPhone isn’t technical (bringing down the phone network or crashing the phone), but aesthetic. Let users grow accustomed to what true iPhone-style apps feel like to use, and they — the users — will demand that developers write true iPhone-style apps when development is eventually opened up, in the same way that Mac users demand true Mac-style apps.2

Downplaying the prospects for third-party app development in the meantime is a way of under-promising and over-delivering. By setting initial expectations that there might never be third-party software for iPhone, any future support for third-party apps will be treated as good news. Software projects often take longer to complete than expected; look no further than Leopard.

If the official ship date for an iPhone SDK is “never”, it can’t be late.

  1. The original Macintosh shipped without any sort of character mode or terminal not because it couldn’t, technically, support one, but because Apple wanted to force developers to write real Mac-style apps. Likewise, I’ll wager that there will be no way, supported or not, to run Mac-style applications on an iPhone. ↩︎

  2. And so thus Jobs’s disdain for Java on the iPhone — it has nothing to do with Java as a programming language, but rather the style of user interface and experience that can be produced through cross-platform Java APIs. ↩︎