Starting with a post by John Gruber on Daring Fireball, a building tide of developer anxiety is rippling through the iPhone developer market. This could easily be a sign of greater control by Apple instead of an outright ban against non-Apple compilation.
The language in the iPhone 4 SDK that is stirring up developers is the following:
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).
At issue then are applications built with languages other than Objective-C, C or C++ (unless a web application). The most interesting word here is original. Of course, these languages are the ones supported by coding in Apple’s tools, and any third party tools – integrated development environments and compilers – have continuous markets because they are not represented by Apple, with the biggest being the forthcoming CS5 version of Flash that Adobe is targeting for iPhone development.
Like many Apple strategies, it isn’t always about blanket denial but about control.
Even though the SDK seems to target almost any non-Apple development environment, there is no reason why Apple cannot provide to selected tool vendors a selective amendment – meaning, in order to get around onerous terms, such tool vendors would have to enter into an agreement directly with Apple. It turns the party from being all street to invitation only, wherein they could allow some tool vendors but deny others.
Now back to the term original. This is interesting because it begs the question of what original is. Does this mean a vendor tool that allows designing of applications in one language, but ultimately can generate an Objective-C based project is original? Does that mean that an environment and components that are entirely built with Objective-C, C or C++ also be considered original?