There is a report saying that Apple has changed the iPhone Developer License to prohibit applications written in other languages than Objective-C, C or C++ or accessing the API “through an intermediary translation or compatibility layer or tool”. Reactions abound and this change is likely to have rippling effects across the industry.
iPhone SDK 3.2 or earlier, which is needed in order to develop applications for iPhone, iPad or iPod Touch, has a clause specified in the iPhone Developer Program License Agreement (DPLA) that reads like this:
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.
The newest iPhone OS is 4.0 and its SDK is currently in beta, being available to registered developers. Among other changes to the DPLA, which is confidential, a report by John Gruber mentions that the 3.3.1 clause has changed to this:
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).
This basically means that applications written for iPhone must be written in Objective-C, C, C++, or JavaScript and cross-compilers are prohibited. There a multitude of companies that might be affected by this change. Also, the license’s text is not very clear leading to all sorts of speculations.
One company that seems directly affected by Apple’s move is Adobe which has just released Adobe Creative Suite 5 (CS5) on the market. One of CS5’s main features advertised by Adobe was the ability to export Flash FLA files to IPA, creating applications that can be deployed on iPhone, according to John Loiacono, Head of Adobe’s Creative Solutions business unit:
We are ecstatic to announce that we’re enabling you to use your Flash development tools to build applications and compile them to run natively on the iPhone.
Such applications do not have code compiled at runtime, and are supposed to go through the same approval process as other applications sold through App Store, but Apple’s update to the developer license changes everything.
Kevin Lynch, CTO Adobe, commented on the new license condition:
Yesterday Apple released some proposed changes to their SDK license restricting the technologies that developers can use. […]
We intend to still deliver this capability in CS5 and it is up to Apple whether they choose to allow or disallow applications as their rules shift over time.
Unity 3D has a game development tool allowing developers to create games targeting multiple platforms. There are hundreds of applications written for iPhone with this tool, and some are best sellers on App Store. Alex Blewitt mentions Unity as one of those affected by the change:
Unity As a 3D tool, this is used on multiple platforms and can accelerate game development. However, this is a “compatibility layer or tool” which is verboten.
Gruber is not sure Unity is affected:
I originally thought this would ban games written using Unity3D, but perhaps not — Unity3D produces a complete Xcode project and Objective-C source files, so it’s more like a pre-processor than a cross-compiler. Hard to tell. If you forced me to bet, though, the fact that developers are writing C# code puts Unity3D on the wrong side of this rule.
Unity 3D itself does not know what to say. They have contacted Apple and are waiting for clarification.
Our current best guess is that we’ll be fine. But it would obviously be irresponsible to guarantee that. What I can guarantee is that we’ll continue to do everything in our power to make this work, and that we will be here to inform you when we know more – as soon as we know more.
There are many other tools affected by the license change like MonoTouch, Titanium, PhoneGap, or Ansca Corona. They issued pretty similar statements, mentioning they do not know exactly what Apple intends with the license change, and they show their confidence that everything will be fine:
MonoTouch: We are reaching out to Apple for clarification on their intention, and believe there is plenty of room for course-correction prior to the final release of the 4.0 SDK. […]
If Apple's motives are technical, or are intended to ensure the use of the Apple toolchain, MonoTouch should have little difficulty staying compliant with the terms of the SDK. MonoTouch runs only on Mac OS X, and integrates tightly with XCode and the iPhone SDK.
Appcelerator about Titanium: It’s our belief that we are fully in compliance with iPhone OS 4.0 ToS as we interpret them. […]
As a pre-requisite to using Titanium, developers must install the Apple iPhone SDK and Apple XCode development toolchain. They must install Titanium on a Macintosh and they must have a valid Apple Developer membership before they are even able to create a Titanium-based iPhone/iPad application.
Titanium produces a valid XCode project at application creation, generates Objective-C (and sometimes C/C++) and executes the xcodebuild to compile your XCode project into a native application using Apple’s published APIs.
PhoneGap: everyone relax about the new policy. phonegap apps are accepted by apple.
Ansca Corona: I believe that Corona will be fine, and we are committed to delivering the best tool for multi-platform game and app creation for Apple and Android devices, and we will continue to add new features to Corona and to make it better every time we put a new release out. […]
To this day, Apple has never officially or unofficially mentioned anything to us regarding non-compliance. The fact that Apple approved several Corona powered apps for the grand opening of the iPad store on April 3rd reaffirms our belief that we continue to be compliant and offer tremendous value to the iPhone/iPad ecosystem.
Many seem to be confused or even outraged by Apple’s move. Dan Grigsby, an entrepreneur and iPhone developer, has given up on iPhone:
I’m fine with Apple curating the App Store. If they want to treat the App Store as an extension of their brand, fine. If that’s their goal, they should decimate — literally — the store, stripping out the crappy-yet-inoffensive dross. But provide unrestricted, frictionless, off-store distribution a la Android.
I’m a principled person. Apple’s offended my principles. Consequently, I’ve decided to abandon iPhone development. I won’t work in this ask-permission environment any longer.
Tim Bray, a former Sun Director and co-editor of XML, has recently joined Google to help advancing its mobile OS because he thinks Android offers more freedom:
Apple apparently thinks you can have the benefits of the Internet while at the same time controlling what programs can be run and what parts of the stack can be accessed and what developers can say to each other.
I think they’re wrong and see this job as a chance to help prove it.
Enterprises which deploy their applications directly, and are not using the App Store, do not seem to be affected by this change. But if they are using a mixed model, deploying both directly and via the store, then they will have to comply with the license.
Some consider that Apple is just trying to make sure applications developed for iPhone are of good quality and they take advantage of iPhone’s full capabilities. Others are blaming Apple for closing down the doors on everyone who has developed an alternative to iPhone’s native tools, Xcode. But everybody waits on Apple to clarify its position.