New iPhone OS License Threatens 3rd Party Languages

In certain circles, whatever interesting things there were in Apple's iPhone OS 4.0 unveiling today were overshadowed by some new language in the iPhone Developer Program License Agreement:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited). [Emphasis added--LOB]

This is almost certainly a reaction to Adobe's Flash-to-iPhone cross-compiler, but on the face of it, it catches a whole range of 3rd parties in the blast radius. In particular, I've been recommending MonoTouch as a great solution for C# developers and teams. Although Mono compiles C# code to native code, Mono applications are not "originally written" in one of Apple's preferred languages, so would clearly seem to be prohibited under the new agreement.

The buzz on the monotouch IRC channel is that this restriction only applies to applications that are deployed the AppStore and not to enterprise deployment, which means that even if the restrictive clauses stay in place, MonoTouch might remain a good option for some.

This is a developing story and it doesn't seem to make sense that Apple gains by limiting the universe of programmers for the iPhone. Prohibiting inefficient translation layers and libraries is one thing, prohibiting code generation and higher-level languages is another. One of the showcase apps for the iPad is "The Elements" whose media, page layout, and transitions were largely generated in Mathematica. Many games use higher-level languages such as Lua to script AI.

Logically, one would hope that the legal agreement would be clarified with some form of "...except for approved toolchains," and figure out how to work with  Novell and Appcelerator and, yes, even Adobe.