Apple lifts iPhone code ban (for chosen few)

Steve Jobs has lifted his outright ban on iPhone interpreted code, allowing some developers to interpret, but not others.

In the recently updated terms of service for the iPhone SDK, Apple says it will allow interpreted code — but only with its written permission.

The move is yet another indication that Jobs is restricting iPhone development not so much to control security and performance, but to keep particular applications from particular companies off Apple handhelds, including not only the iPhone but the iPad and the iPod touch, which use the same SDK. In his much-discussed open letter on Adobe Flash, the Apple cult leader said he's intent on keeping cross-platform development tools from gaining a foothold on Jobsian handhelds, and this would seem to be the primary aim of the ban on interpreted code.

Famously, when Apple released its iPhone SDK in spring of 2008, the end user licensing agreement barred applications from downloading and running any interpreted code. "No interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple’s Documented APIs and built-in interpreter(s)," it said.

This keep the likes of Adobe Flash and Java off the Jesus Phone, as well as third-party browsers such as Firefox. Opera has put its Mini browser on the iPhone, but this doesn't interpret code. It taps into proxy servers that intercept and compress webpages before sending them down to the handset.

But as pointed out by the Apple Outsider blog and as you can see here, Apple has updated its terms of service to allow interpreted code with the company's written consent. "Unless otherwise approved by Apple in writing, no interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple’s Documented APIs and built-in interpreter(s)," the terms now read.

"Notwithstanding the foregoing, with Apple’s prior written consent, an Application may use embedded interpreted code in a limited way if such use is solely for providing minor features or functionality that are consistent with the intended and advertised purpose of the Application.﻿"

Notice the word "minor." It would seem that the new terms continue to bar third-party browsers and cross-platform tools such as Flash and Java — but that should go without saying. As the Apple Outsider blog puts it: "Apple’s aversion to interpreted code and external runtimes is the potential for someone else to take the platform over."

Jobs is so intent on keeping cross-platform development tools of the iPhone — and the iPad and iPod touch — that he has also banned applications that have been translated from languages that aren't officially supported by the SDK. By all indications, this edict was put into place to prevent developers from using Adobe's iPhone packager, which converted Flash script into iPhone machine code.

Adobe cried foul. Platform evangelist Lee Brimelow even told Apple to "go screw yourself," and Jobs eventually responded with his open letter. The letter criticized Flash on multiple levels, but ultimately Jobs made it clear he was barring the technology from his devices because it's a cross-platform development.

"We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform," Jobs wrote. "This becomes even worse if the third party is supplying a cross platform development tool. The third party may not adopt enhancements from one platform unless they are available on all of their supported platforms.

"Hence developers only have access to the lowest common denominator set of features. Again, we cannot accept an outcome where developers are blocked from using our innovations and enhancements because they are not available on our competitor’s platforms."

'Steve Jobs, you fail'

In allowing "minor" interpreted code by written consent, Apple Outsider speculates, Jobs may have an eye on games. "Games in particular tend to use engines and libraries that leverage interpreted languages," the blog says. "Many of these applications pose no threat, neither implicitly nor explicitly.

"While explicit approval from Apple is still required, these new terms seem to acknowledge that there’s a difference between an app that happens to have non-compiled code, and a meta-platform. It’s a step that should allow for many new possibilities."

In a separate blog post, developer Hank Williams picks up the discussion, agreeing that Jobs keeps such tight control over the iPhone App Store because he fears "the killer app." "I think Apple is fearful of any truly ground breaking stuff coming from a third party," he writes.

"I think Apple has come to the conclusion that any killer apps for the iPhone need to be from Apple, and that those that are not from Apple are hugely dangerous. And this well may be true. Because if some third party invents something that fundamentally changes what it means to own a mobile device, and that software is available on other devices, overnight Apple is in the position of being the supplicant."

This is Apple's worry with Flash, he says, but that's not all. "If that killer app vendor decides to support Android more effectively than they support Apple, or if for some reason they decided to drop the iPhone, that one vendor could have a devastating effect on Apple's position in the marketplace. This is the position that Apple was in with Adobe in the 90's and Jobs has made it clear he is fearful of ever being in that position again.

"Others have discussed this but it is usually framed in the context of why Apple doesn't want Adobe on its platform. But I think the broader issue is they don't want *any* companies generating hundreds of millions of dollars through some new mobile technology which Apple doesn't control."

And these words have received the stamp of approval from none other than Dan Morrill, the Google open source and compatibility program manager for Android. "This: http://goo.gl/CEVx is what I was talking about when I wrote this: http://goo.gl/hTTm," he Tweeted today. The first link points the "killer app" post above, and the second to a blog post Morrill himself wrote in April.

"Openness is more than the absence of closed. Openness does not come automatically just because you deploy an industry standard," he wrote. "Openness means you recognize the real, additive value that disparate products and businesses bring to your platform. It doesn't mean tolerating competition, it means valuing competition. You only really value openness when you quietly thank your higher power of choice that your competitor just took advantage of the opportunity to destroy your business on your own platform. Implementing standards is just the first step on the road to openness.

"Steve Jobs, you fail at openness."

Indeed. And one day, this will come back to haunt the Apple cult leader. You can keep that third-party killer app off your platform. But what happens when it winds up somewhere else? ®