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