Apple’s iPhone OS 4 new terms and conditions to kill Flash CS 5, Rhodes and Appcellerator Titanium?

Apple iPhone Developer Program License Agreement was updated in the iPhone 4.0 SDK to specifically prohibit the development of apps using “an intermediary translation or compatibility layer or tool,” which would include Adobe’s Flash, Sun’s Java, Microsoft’s Silverlight/Mono, Unity 3D games engine, and most Cross-platform development frameworks such as Rhomobile Rhodes and Appcelerator Titanium.

An existing clause in the developer license only prohibited the use of private APIs (that is, development features that Apple has not completed, documented, and disclosed as being available for public use). That has now been expanded to include prohibitions on developing iPhone apps in other languages or in other development environments that are then translated or cross-compiled into native iPhone apps. What does this mean for all these frameworks?

The clause, section 3.3.3, now reads:
“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 measure means Flash Professionals won’t be able to develop content using Flash’s ActiveScript and then port this code to iPhone. It also means that developers won’t be able to directly port code written in Microsoft’s C# language to its .NET framework into a translated iPhone app.

The prohibition may also be a roadblock for Appcelerator and its Titanium SDK or the similar PhoneGap, both of which are designed to build native mobile apps using web technologies such as HTML and JavaScript. The clause specifically limits JavaScript for use in web apps, and does not allow it to link against the native Cocoa Touch APIs.

The clause, however, was written directly agains Adobe Flash, which has been working furiously to develop its Flash to iPhone cross compiler as the key new feature for Flash Professional in CS5. It also erases Adobe’s strategy to push mobile and web development toward Flash while still leveraging compatibility with the iPhone OS.

This week Apple co-founder Steve Jobs published a lengthy letter, detailing his personal stance on Adobe Flash, declaring that the Web format was created for the PC era and that it “falls short” in the mobile era of low-power devices, touch interfaces and open Web standards.

After the clause was made public, Adobe said it would stop development of their Flash iPhone exporter. Mike Chambers, Principal Product Manager for developer relations for the Flash Platform at Adobe, wrote on his blog:

“Essentially, this has the effect of restricting applications built with a number of technologies, including Unity, Titanium, MonoTouch, and Flash CS5. While it appears that Apple may selectively enforce the terms, it is our belief that Apple will enforce those terms as they apply to content created with Flash CS5. Developers should be prepared for Apple to remove existing content and applications (100+ on the store today) created with Flash CS5 from the iTunes store.

We will still be shipping the ability to target the iPhone and iPad in Flash CS5. However, we are not currently planning any additional investments in that feature.”

Bottom line Flash CS5 is out of the game.

While the guys at PhoneGap were never concerned and immediately dismissed the issue like they were not affected by the new clause, Appcelerator started immediately to work to make sure Titanium would be compliant with the terms, and recently (April 29) they posted an e-mail to all registered developers saying:

“We’ve had over 50 applications approved for the App Store over the past 3 weeks under the new terms (which every developer now needs to agree to). Not a single one has been rejected for being built on Titanium. We even updated our own test app, Snapost, after accepting the new terms.

In summary, Apple is targeting Flash (mission accomplished) and Apple wants to push their platform forward by having only high-quality, native applications in the App Store. We couldn’t agree more. Native application development with open technologies is in our DNA and our continued vision for Appcelerator.”

Also at Rhomobile the team got concerned. It looks like they are focusing on a slightly different target then Titanium:

“As mentioned in our previous post we believe that we are compliant with the new iPhone 4.0 SDK rules, and we believe Rhodes apps will continue to be to be accepted on the App Store after adoption of the new TOS.

But to make sure our loyal developers are 100% safe in using our framework, we will be announcing some new products soon that facilitate enterprise app distribution for iPhones and other devices, completely bypassing any App Store. These products will ensure that Rhodes remains the go to framework for cross-platform development on all major smartphones.”

This post is dated April 11, 2010. I would expect Rhomobile to publish a more reassuring statement any moment, just like Appcelerator did.

The new clause however has proven how delicate these frameworks are when we have to do with a somewhat unpredictable entity as Apple has always been. When you get to develop a big app, that can take a few months from the planning phase to the release, you can’t really know what will be the acceptability of your app on the App Store until you already spent the project budget. That’s a risk everyone starting a new Mobile project today should be aware of.

At Surgeworks, we have adapter strategy in supporting cross-platform frameworks: we still have top notch expertise as early adopters however we now tend to recommend our customers to develop an iPhone SDK native app whenever possible. Additional platforms such as Android and BlackBerry can then still be covered by a Titanium, Rhodes or PhoneGap cross-platform application.