What Apple doesn’t want—and as we see now, is not going to allow—is for anyone other than Apple to define the framework for native iPhone apps.
Cross-platform software toolkits have never—ever—produced top-notch native apps for Apple platforms. Not for the classic Mac OS, not for Mac OS X, and not for iPhone OS. Such apps generally have been downright crummy. On the other hand, perhaps iPhone users will be missing out on good apps that would have been released if not for this rule, but won’t now.
Leaving aside the question of whether it’s reasonable to ban cross-platform applications rather than let customers decide whether they’re useful, I worry that this new regulation will also affect native applications. There are a variety of reasons that a developer might want to leverage other languages (either at build time or runtime) for code reuse, libraries, or development speed and power. Consider, for example, an AI or game engine written in Lisp that compiles down to ARM assembly or C. Hank Williams writes:
Developers are not free to use any tools to help them. If there is some tool that converts some Pascal or, Ruby, or Java into Objective-C it is out of bounds, because then the code is not “originally” written in C. This is akin to telling people what kind of desk people sit at when they write software for the iPhone. Or perhaps what kind of music they listen to. Or what kind of clothes they should be wearing. This is *INSANE*.
What will the next rule change be?
Update (2010-04-10): Hank Williams explains this a bit more:
By defining the rule as being about what language something is “originally” written in, we now must be supposedly concerned about the provenance of our code, and not just what it does. If a math library, or a physics engine, or a string package, or whatever, was originally written in some other language, and ported, then it violates this rule. This concept of what language something is written in is an insidious concept and strikes at the core of product development and of computer science in general. Everything is built on other stuff, the language provenance of which is often unclear. This language is fundamentally unreasonable, and un-enforceable.
I’m not convinced by his legal arguments (IANAL), but I think the important point is that Apple’s attack on cross-platform interface toolkits (of which I’m no fan) causes collateral damage and bans (should they choose to enforce 3.3.1) lots of libraries, tools, and techniques that could be used to develop top-notch, fully native iPhone OS software.