iPhone Developers

Apple made a controversial announcement at the World Wide Developers’ Conference, which went something like this: “We’ve got a new, innovative way of giving you developer access to our phone: we’re not.” (I’m paraphrasing; see the full quote below.) In less than 24 hours, this has devolved into an online debate between defensive “traditional” developers and Web developers, Apple critics and apologists. Many have tried to turn it into a debate over what whether or not web apps are applications. That’s silly. Of course web applications are apps. Here’s the real problem in a nutshell:

1. Apple is ignoring what makes non-Web apps valuable. That’s their choice — it’s their phone — and we could forgive them and maybe even agree with them, except —

2. They’re then trying to distort reality around them so that things they’re saying that happen to be wrong wind up being right. Lots of companies do that, but this being Apple, some people are actually listening, and I hope they’ll stop.

I’m going to say this the long way around, because I type fast and think in sprawling, high-word-count ways. Our friends at Rogue Amoeba, one of our favorite audio developers for the Mac (notice how multimedia keeps coming up), put this more succinctly:

Web Apps Are Not Applications

We know that making SDKs is not easy, and so it boggles the mind that you were able to create a complete iPhone SDK so quickly! So much access, provided so seamlessly – it is really quite amazing.

With this new SDK, we can create something neither of us could possibly have done alone, and make the iPhone platform the mobile platform to develop for.

Anxiously awaiting his copy of the iPhone SDK,
Sarcastic Developer

Web apps are wonderful. I spend huge amounts of time in them. But as musicians, you know why web apps alone aren’t enough. Hardware access and multimedia capabilities are vitally important for some (but not all) tasks. Take them away, and your expensive computers become instantly less useful. This matters to some more than others, but that doesn’t mean it doesn’t matter. In fact, try this experiment: take your Mac. Remove all audio and MIDI device support, allowing only iPhone and the OS to make sound. Now you can’t even record a voice memo or phone call — no mic input. Next, reinstall your browser, removing Java and Flash. (Good: I can read Penny Arcade and CDM — well, most of CDM. Bad: I can’t watch Homestar Runner. Or YouTube. Or use embedded Flickr apps. Or use entire websites. Uh-oh.)

A phone is not a Mac, and that’s a good thing. But to assume these two things equate just doesn’t make sense. Design is about compromises, and that’s a good thing. But now design is about making compromises, then changing the reality around you so that they’re not compromises any more?

Here’s a short list of other things an iPhone web app can’t do that (with the notable exception of multi-touch) the vast majority of phones can — yes, including that crappy low-end Nokia you got free with service. Really. Look up the developer site for your phone, and check it out.

1. Access the phone’s hardware vibrate and sound functions to provide notifications and feedback.
2. Make use of the entire screen. (The iPhone demo app ran only within the Safari browser, which takes up a significant amount of screen real estate.)
3. Access the phone’s multi-touch gestures (the key advantage of this device in the first place). Gestures are intercepted by Safari.
4. Provide more sophisticated interaction, UIs, animation, gaming functions, audio playback, and video playback. Java and Flash evidently aren’t supported, and while the iPhone OS can perform some of these functions, only Apple is really allowed to develop for it. If something isn’t important to them, it just doesn’t happen at all.
5. Provide network access beyond web protocols. For instance, on a cheap Blackberry I can log in and restart the CDM server via ssh when there’s a crash. On iPhone, I can’t. That was never a security concern for any of the countless Java-based phones that support this feature. Does everyone want this? Of course not. But it’s not the phone companies pushing to limit the iPhone, because they’ve actually worked to extend phone capabilities.

AJAX is great technology, but creating a lot of hype around a technology doesn’t magically make a specialized tool the right tool for every job. Java and Flash may annoy users when they’re used in places they don’t belong, but used correctly, they provide vital functions that web technologies (“Web 2.0” or not) don’t have, like support for multimedia formats.

It may take people like us — those of us who push the envelope of technology to produce music, visuals, interactive phones as performance tools — to explain why web apps alone aren’t the future. Music, after all, is often exactly the kind of “rich” that makes a rich client.

That’s not to say your $500 is badly spent on an iPhone, or even that Apple’s making the wrong move. Many have pointed out that this approach makes a certain amount of sense. A lot of applications don’t need the above features. Many Java phone applets — like recent clients for Gmail and Google Maps, for instance — are there to make up for the fact that phones have truly awful browsers. I personally would rather spend hundreds on a device that has multimedia and hardware integration, but I can see why Apple’s move might be smart. The problem is, they’re trying to present this decision as something it isn’t.

We’re at a critical point, where users are either going to understand what makes rich clients different from thin clients, or they aren’t. Creative artists are right in the center of the capabilities of a rich client that will never be a web app — web protocols are light years short of being able to, say, run Ableton Live in Firefox, and why would you want to? Yet people make the nonsensical argument that web apps and rich apps are identical. Apple isn’t helping, because the whole essence of their presentation was based on the assumption that people wouldn’t notice the difference. Here’s their speech, which was — rightfully — met with stony silence by a room full of developers who understand the difference:

Steve Jobs:

“What about developers? We have been trying to come up with a solution to expand the capabilities of iPhone by letting developers write great apps for it, and yet keep the iPhone reliable and secure. And we’ve come up with a very sweet solution.”

“We’ve got an innovative new way to create applications for mobile devices … really innovative. And it’s all based on the fact that iPhone has the full Safari inside of it … and it gives us tremendous capability, more than has ever been in a mobile device to this date. And so, you can write amazing Web 2.0 and AJAX apps that look exactly and behave exactly like apps on the iPhone. And these apps can integrate perfectly with iPhone services. They can make a call. They can send an email. They can look up a location on Google Maps. After you write them, you have instant distribution. You don’t have to worry about distribution; just put them on your Internet server. And they’re really easy to update; just change the code on your own server rather than having to go through this really complex update process. And they’re secure … and they run securely on the iPhone, so they don’t compromise it’s reliability or security.”

“And guess what? There’s no SDK that you need. You’ve got everything you need, if you know how to write apps using this most modern web standards … you can go live on June 29.”

Words that don’t fit the context here: “sweet”, “solution”, “innovative”, “really innovative”, “new.”

I actually don’t recall Apple even using the word “innovative” in recent memory. That’s a word Microsoft likes to use when they’re doing something unoriginal, or stupid, or both. Of course, this shows incredible hubris, especially at a developer conference.

The crux of the problem is claiming that creating web apps is a new idea, that full-featured browsers on mobile devices is a new idea (it’s not), that basic integration with calling features and email is a new idea (hello, Treo?), that that kind of integration is real hardware integration (it’s not), that somehow “Web 2.0” (whatever that even means) and AJAX are better than or can fully replace other technologies (they were never intended as a replacement for things like Java or C, period), that online delivery is an awesome, new feature (Java apps do it, too, only not on iPhone since it can’t support it), that the omission of an SDK is a “feature” or itself innovative (come on), that applications outside browsers are inherently dangerous to security and reliability (Java mobile apps in fact do neither), and that Apple is somehow enabling people to build apps for the iPhone when in fact all you’re really doing is developing webpages just like you always have.

I love Apple; I think they’re probably the single smartest tech company on the face of the Earth. So I don’t ask much: just stop spouting total nonsense at developer conferences, okay? When Apple announced the Intel transition, also at WWDC, they actually went as far as claiming you could rewrite entire applications for Intel using only a “checkbox.” Now they’re claiming to have “innovated” by “discovering” web browsers. What’s next?