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."