About that Section 3.3.1 of the new iPhone SDK

A quick recap : that section enforces the use of Objective C, C or C++ for iPhone app coding. First reaction is obviously hostile (quite legitimately, IMHO).

More interesting, however, are the following short exchange between an iPhone developer and Steve Jobs himself, and John Gruber's rethinking on the subject. It boils down to Apple not liking layers over their SDK because they feel they hinder software quality.

My personal experience very much agrees with this. Unless you're under exceptional circumstances or requirements, you generally don't want to add some cross-platform layer between you and the native development framework. An exception is if the framework is really too low level and calls for a higher-level one, but if Objective C was higher level, it would be a scripting language. An intermediate layer generally means that it will make simple things easier, but will make everything else (anything not directly supported by the layer, and debugging) a lot harder (especially debugging). It also means you depend on the vendor of that layer to support the last available features of the platform it wraps. And if it's a cross-platform one, you'll only get the lowest common denominator.

That said, while I understand Apple's effort to maintain a globally high level of quality on the App store (they do advertise quite a lot about it), I really don't think actively blocking these other frameworks is a reasonable move. First, it looks paranoid and bitchy. Apple can be that, more often than not, so adding more to that trait doesn't help. But more importantly, these frameworks still may serve a useful purpose. In many cases, an application can be just "good enough". Even if that's hardly Apple's style, an ugly, poorly integrated but useful and working application is better than none at all.

Another possible reason I see for this is the need to be able to easily audit applications, especially given the new multitasking features of iPhone OS 4, which have some aftertaste of cooperative multitasking.

But ultimately, I think Apple should do what Google did with Android : an official App store where what you buy is Apple-certified, and allow alternative App stores where you're on your own. That said, I don't know how the average user would handle that.

While I'm at it, Apple should also do the same for Mac : create an official Mac OS X app store, along with the current means of software distribution (i.e. downloads from various http sites). Think Linux distribution repository.

Edit Apr. 17th 2010 : An interesting alternative view on the topic from Steve Cheney is that by enforcing the use of XCode, Apple ensures its independence of the hardware. Indeed the transition from PowerPC to Intel went remarkably smoothly, and the fact that Apple provides the main development toolchain for OS X is a big reason why.

Edit Apr. 21st 2010 : Right now the download pages at apple.com are no longer being updated. And from the comments on this tuaw post, it seems I'm not the only one thinking that a Mac App Store is in preparation :-).

Edit Apr. 26th 2010 : well, it seems that no, there won't be a Mac App Store. Can't be clearer than that.