Apple's new iPhone restrictions and the 5 stages of grief

Apple's developer agreement for iPhone OS 4 requires apps to be "originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine". With this change, Apple appears to have put the kibosh on hundreds of apps already on the market and destroyed a cottage industry of cross-platform tools including Flash CS5, Unity, and MonoTouch.
Written by Ed Burnette, Contributor

A change in Apple's new iPhone OS 4 developer's agreement is putting application writers through all 5 stages of grief ever since it was released last week. According to the Kübler-Ross model, the 5 stages of grief are: Denial, Anger, Bargaining, Depression, Acceptance. Since the change, Anger and Denial have been reverberating across the net, with signs of Bargaining and Depression to follow. Is Acceptance on the way, or will this be the final straw that drives developers to Android and other alternative operating systems?

It started when Apple released a software developer kit for its upcoming iPhone OS version 4. Before using the new SDK, developers must click on one of those "I agree" buttons indicating acceptance of pages and pages of legalese that nobody ever reads. Well, almost nobody. Daring Fireball's John Grober read it, and (in apparent defiance of Apple's secrecy clauses) posted the interesting parts on his blog. Now Apple is faced with the biggest brouhaha since the App Store was created. Section 3.3.1 is the part that has developers up in arms:

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).

With that single paragraph, Apple appears to have put the kibosh on hundreds of applications already on the market or in the works, and destroyed a cottage industry of companies building cross-platform development tools that had hoped to bridge the gap between iPhone, Android, and PC programming. Let's take a look at who stands to lose the most. Adobe is the largest, but by no means the only, company affected. Apple has always banned Flash from the iPhone, but Adobe had found a way around the restrictions by translating Flash programs to native iPhone apps in its new CS5 suite. In iPhone OS 4, that won't be allowed any more. Lee Brimelow, an Adobe platform evangelist, famously wrote "Go screw yourself Apple" on his personal blog after hearing of the change. Meanwhile, Adobe's CTO was more sanguine:

The ability to package an application for the iPhone or iPad is one feature in one product in Creative Suite. CS5 consists of 15 industry-leading applications, which contain hundreds of new capabilities and a ton of innovation. 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.

Novel, who sponsors the Mono project, is working on a system called MonoTouch that lets you write programs in the C# language (or port existing programs from Windows and Linux) and compile them to native iPhone apps. A strict reading of the new agreement seems to disallow that, but a Novel blog post shows they are still in the denial phase:

We believe that MonoTouch brings an impressive value to the Apple ecosystem. MonoTouch's C-powered runtime blends the power of native code and Apple's iPhoneOS APIs with type safety, automatic memory management, and other benefits that years of runtime innovation have delivered to the ISO Common Language Infrastructure. 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.

Corona from Ansca Mobile is a tool for rapidly creating iPhone games and apps without the complexity of XCode or Objective-C. Instead, you use a language called Lua. On their home page they brag about a developer who used the toolkit to develop an iPad game in a single day. The iPhone OS 4 agreement requires programs to be originally written in Objective-C, not Lua. However, on the company blog Carlos Icaza, CEO of Ansca Mobile is still holding out hope:

Let me reassure all of you that we will do whatever it takes to make this work, just like we have been doing since Corona first started shipping. ... I, along with my co-founder Walter Luh, have reached out to Apple both officially and unofficially, and we continue to do our diligence in regards to the new TOS. We have also been in touch with other companies that are in the same situation we are. To this day, Apple has never officially or unofficially mentioned anything to us regarding non-compliance.

Appcelerator makes a product called Titanium that lets you build "native" mobile and desktop apps with web technologies. You write your program in JavaScript and the tool generates a native Objective-C version for you. According to the iPhone OS 4 agreement, that will no longer be allowed. However, on the company blog, Jeff Haynie writes:

It’s our belief that we are fully in compliance with iPhone OS 4.0 ToS as we interpret them. ... 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. We believe Titanium adds value to the Apple Development ecosystem and enhances the Apple platform for many thousands of developers around the world. As we always have, we will continue to work with Apple to ensure we stay in compliance with their terms of service.

With all the fuss you might think Apple would simply bow to criticism and remove the offending clause. You might be wrong. Greg Slepak of the Tao Effect manged to get an email conversation going with Steve Jobs himself over the controversy. The results are interesting. Apparently Jobs and company made the change deliberately in order to prevent the rise of meta-platforms, de-facto standard software platforms on top of Cocoa Touch. Greg quotes Jobs as saying:

We’ve been there before, and intermediate layers between the platform and the developer ultimately produces sub-standard apps and hinders the progress of the platform

Not everybody is unhappy with Apple's position. Freelance artist Anthony Sigalas, who graciously granted me permission to use and modify his artwork for this article, writes:

The restrictions of languages and tools people can use to create Apps are rightly imposed in my opinion, to keep the new platform clean with Apps created by developers with deep understanding of the specified platform. A create once deploy everywhere application with e.g. Flash CS5 does little or nothing at all to take advantage of the amazing technologies possible exclusively to iPhone OS. I know as a heavy user that I wouldn't want those kind of Apps in my iDevice springboard. All in all it's Apple's platform and they can dictate their set of rules.

Assuming Apple does not back down, this could signal another wave of developers leaving the platform in favor of others such as Android and Windows Mobile. Or, they could just decide to stay because the market for iPhone, iPad, and iPod touch is too large to ignore (80 million+ devices by the last estimate). It reminds me of the decision by Google to pull out of China. Some will pull out on principle, but will it be enough to make a difference?

Another parallel was Apple's decision years ago not to allow Mac clones. Ultimately this relegated the Mac to a niche, never getting over 10% of the overall personal computer market. Apple seems content with that, but developers betting on them to make a living might not.

Editorial standards