Reactions and Consequences of the iPhone Developer License Change
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:
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.
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.
Happy Shiny Fascism
Independent developers can't reliably plan a P/L when you don't know if you'll be permitted to sell through the only channel. In addition, this license change (if it stands as read) is intended to ensure that iPhone apps have a unique code base. They're hoping developers will develop for Apple first - with sanctioned Apple tools - and then not have an economic justification for porting to any other platform.
It's true that many desktop/laptop apps were (are) Microsoft-only, but that wan't the result of enforcement by Microsoft as much as it was the fact that MasOS development had different toolchains and languages and the market had overwhelmingly chosen Windows. It was rarely financially feasible to spend "2x" to get "1.2x" of the Windows market.
If Apple is so certain that it has a better platform, why not let tool developers build cross-platform tools that can let app developers leverage their skills from other platforms? Is Apple afraid that the useful and interesting (but mostly shallow and technically trivial) apps will migrate to platforms like Android (and someday Windows Phone 7) where customers can choose from many hardware vendors?
Good for Android / Java
I do love the irony of it though. Apple, via their Windows version of iTunes, has built THE crappiest app I have ever used on the Windows platform. Maybe their inability to develop good software for other platforms has made them assume that no one else can build good software for their platform.
All of apples iphone restrictions are probably going to help Android/Java in the future.
No compatibility layer? How should multi-platform development work?
MDE (model driven engineering) uses code generators. Nobody, who has worked with static or dynamic abstraction, want's ever go back! Who can afford this amount of debugging effort without this tools?
This is insane! Apple wanted to beat Adobe, but 99% of good developers have to pay the price.
That way we can go back to hand written Assembler.
Steve Balmer said once: "developers, developers, developers!" Apple shouldn't forget them. iAd is not the solution for this technical problem.
Apple is just protecting their platform
Re: No compatibility layer? How should multi-platform development work?
That's funny. The web site seems pretty against Apple.
At the end of the day, it's "customers, customers, customers".
Re: No compatibility layer? How should multi-platform development work?
The web site seems pretty against Apple.
the article is not against Apple, and InfoQ is certainly not against Apple. The article has collected some of the most important reactions to Apple's change of the license, and some reactions happen to be negative towards Apple. That does not reflect our own view on Apple.
Apple vs. Adobe
Re: Happy Shiny Fascism
Re: Apple is just protecting their platform