Apple, eat your own dog food! (Or, "On iPhone half-truths and Flash on iPhone facts.")

Steve Jobs pretty much confirmed the rumors that the iPhone would not support Flash during his keynote at WWDC 2007 by stating that the only way developers will be able to create applications for the iPhone is to use, as he put it, "an innovative new way to create applications for mobile applications". Specifically, HTML and JavaScript (or "Web 2.0 + AJAX" as stated in the keynote using buzzwords).

Innovative? New?

HTML dates back to the early 1990s, JavaScript to 1995 and XHTTPRequest to 2002 or so.

(Steve, Apple truly does make new and innovative things. Don't water down the meaning of those words by applying them to what is essentially a cop-out to providing a true developer solution and an open platform for the iPhone.)

No mention of Flash == no Flash?

Bill Perry from Adobe got his iPhone at launch and proceeded to test it out with Flash and Flex sites and confirmed, predictably, that Safari on iPhone does not support Flash. The interesting thing is that you can't install the Flash Player yourself.

In his keynote, Steve mentions that the iPhone has "the full Safari inside it". This is not true. The full Safari supports Flash. The iPhone, as Bill's results confirm, has a crippled version of Safari in it that doesn't even allow you to install the Flash Player on to the device yourself. If Steve's comment at the keynote is true and the iPhone does have the "full Safari engine" in it, then we can only surmise that Flash support was deliberately blocked. This, on a system that does support other plug-in technologies like PDF and Quicktime.

I don't know personally who dropped the ball here. Was it Apple, or Adobe? I know that if I was Adobe, I would be jumping through hoops to get the Flash Player on the device with the most hype this year. If Adobe dropped the ball by insisting on receiving the high sums it normally charges mobile phone operators for porting the Flash Player, then it took a very short-sighted decision. If Apple wasn't interested then it gave up the chance to bring truly interactive third-party applications to the iPhone while still controlling exactly the level of access it was comfortable in granting to the core system.

iPhone for developers: Sweet?

In the keynote, Scott Forstall, VP iPhone Software, demoes a very simple address book application written in HTML that apparently took them one person month and under 600 lines of code to build. I wasn't impressed at all. Although Scott mentions that it looks and feels exactly like the built in address book, it doesn't. For example, when he scrolls the returned addresses on the web application, the whole HTML page scrolls up as opposed to the built-in address book, where the address entry box stays on screen and only the addresses scroll.

It also does not have the same look and feel as the web application is made up of several pages that are loaded and rendered like traditional web pages, whereas the built-in address book is made up of screens that transition from one to the next using built-in animations.

The integration that Apple speaks of involves clicking a telephone number to make a call, clicking on an email address to bring up a compose screen, and clicking a street address to bring up the built-in Google maps application. So, basically, the integration in the iPhone is one-way integration. It boils down to the ability to launch three built-in applications.

iPhone for developers: Well, we have a browser...

To summarize, the iPhone includes a web browser that will render your web applications. In addition to the standard functionality provided by the browser, Apple will provide you with three, one-way hooks into the system. Those three hooks appear to be as open as Apple is willing to get about the iPhone in the first version. That's a very closed system, indeed. And definitely not a platform.

(Remember, most phones today have web browsers that will render your web applications. The only piece of functionality that Apple is providing is the ability to make a call, launch an email compose screen and launch the Google Maps application to a pre-determined street address.)

That said, without having touched an iPhone myself (I will have to wait until the end of the year at least before they are available here in the UK, hopefully under 3G plans via multiple operators), I am interested in seeing how much developer adoption the iPhone actually gets. I am also interested in whether or not developers will see through the reality distortion field on this one and start demanding a more open platform from the iPhone.

I am also interested in seeing just how much Flash is supported through Quicktime in the iPhone. Read more about that on Jesse's blog.

Apple, eat your own dog food!

At the end of the day, however, the proof is in the pudding, so I ask:

Steve, how many of the iPhone's own applications did Apple write in HTML + JavaScript?


If not, why not?

Surely, if this is the "sweet" (and only) solution you're providing for developers, shouldn't you be using it to create your own applications? If you're not using this to build your own applications, isn't that hypocritical of you?

Eat your own dog food, Steve. Or, if the dog food doesn't taste too good, maybe get some that does so that we can all enjoy it!

Update: Some thoughts from Wil Shipley on the same topic. Favorite quotes:

What I'm not willing to do is starting programming in AJAX, as Steve so gleefully announced we should do at the (non-nondisclosured) WWDC keynote this year. What you might not have heard, if you only saw the video online, were the moans of the developers in the room when he announced this "no-SDK" SDK... if this AJAX thing was just a trial balloon, as some have theorized, then Steve should have had Jimmy Page up there, because it flew like a lead zeppelin.

I don't trust any "SDK" made by a company that won't use it themselves. Where are all of Apple's AJAX apps for the iPhone? Anyone? (*chirp*) The iPhone apps are not written in JavaScript -- or at least no JavaScript I know. Show me the secret JavaScript commands to get at all that CoreAnimation goodness you guys use, and to get at the Bluetooth and 802.11 and multitouch and local storage, and then maybe... well, no, actually, I still don't want to write code in JavaScript.

Us programming in AJAX while Apple programs in real OS X is basically a case of Apple not eating its own dogfood, except that JavaScript isn't dogfood, it's dog shit.

Read Wil's complete post.