Adobe vs Apple: Flash of the Titans

Apple has one of the most popular smartphone platforms around, and Adobe has what’s seen as the industry standard for Internet streaming content. On the surface it sounds like a perfect match, but the reality is that we likely won’t ever see Flash on the iPhone and Adobe is hopping mad.

The notion that Apple wouldn’t add Flash support to the iPhone, iPod touch, and now the iPad, isn’t exactly new. When the first iPhone model shipped, it didn’t offer Flash support and that hasn’t changed with each new model release or iPhone OS software update.

Adobe eventually got the message and developed its own cross-compiler system that lets developers create content with its Flash tools, and then convert their work into iPhone-native code that runs just like any other title available at Apple’s App Store.

To Adobe’s credit, the company found a way to convert cross-compiled apps into native iPhone code instead of simply slapping a wrapper on top of Flash code, so it’s fairly difficult to tell the difference between a Flash-based iPhone app and one developed with Apple’s own SDK. The downside is that some some features, like taking advantage of native iPhone OS controls, aren’t available because developers aren’t using Apple’s approved SDK tools.

Apple let those applications pass through its screening process, and end users buying those apps most likely had no idea — and didn’t care — that their new download started life in Adobe’s Flash world.

From the perspective of some developers, that all changed on April 8 when Apple offered a public preview of what’s in store for iPhone OS 4.0 this summer.

Apple highlighted a few features during its special media event, such as multi-tasking support for third-party apps, folders for organizing apps, Bluetooth keyboard support and a revamped Mail app, which are all features developers and iPhone users had been asking for. What soured some developers, however, was a change to the license agreement for the iPhone Developer Program prohibiting the use of cross-compilers.

Section 3.3.1 in the license agreement for the beta version of iPhone 4.0 SDK states:

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

In other words, if you want to code for the iPhone in Flash and then compile as a native iPhone app, you’re out of luck.

For the average iPhone owner and a substantial number of iPhone app coders, the updated SDK license agreement could have slipped by unnoticed because it doesn’t change anything about the apps end users buy or the tools developers use to write them. For a few, however, the change means they just lost one of their iPhone app development tools.

From Adobe’s standpoint, they were blocked from getting a foothold on the coveted iPhone platform. Adding insult to injury, Adobe had been touting its iPhone app compiler in Flash CS5, which is due to ship in May.

The restrictions Apple is imposing on developers went down poorly with Adobe’s Flash evangelist, Lee Brimelow. “What is clear is that Apple has timed that purposely to hurt sales of CS5,” he said on his blog. “This has nothing to do whatsoever with bringing the Flash player to Apple’s devices. That is a separate discussion entirely. What they are saying is that they won’t allow applications onto their marketplace solely because of what language was originally used to create them.”

Mr. Brimelow later removed his comment about Apple timing the iPhone OS 4.0 announcement to hurt Adobe and added a disclaimer at Adobe’s request clarifying that his opinions weren’t official company views or statements.

He went on to say “This is a frightening move that has no rational defense other than wanting tyrannical control over developers and more importantly, wanting to use developers as pawns in their crusade against Adobe.”

It didn’t take long for an anti-Apple “I’m with Adobe” fan page to pop up on Facebook, and shortly after that “screw you apple” t-shirts appeared on Cafe Press.

The Facebook fan page description states “The recent war between Adobe and Apple reached a breaking point on April 8, 2010, when Steve Jobs not only recommitted to never allowing Flash to run on the iPhone or iPad, but even banning Adobe’s new Flash-to-iPhone C compiler which was to go on sale Saturday, April 10. There is no longer any debate as to who the ‘bad guy’ is in this story — Apple has proven themselves to be anti-competition, anti-developer, and anti-consumer.”

The sentiment in the t-shirts at Cafe Press is fairly self explanatory.

Even Adobe CTO, Kevin Lynch, chimed in, but with a decidedly more level-headed take than Mr. Brimelow. “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,” Mr. Lynch said. “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.”

TaoEffect CEO, Greg Slepak, emailed Apple CEO Steve Jobs voicing his concerns over the new SDK licensing terms. “Lots of people are pissed off at Apple’s mandate that applications be ‘originally written’ in C/C++/Objective-C,” he said. “I love your product, but your SDK TOS are growing on it like an invisible cancer.”

Mr. Jobs replied and even referenced the analysis Daring Fireball’s John Gruber offered on the changes. Mr. Jobs’s stance is that cross-compilers dilute the iPhone’s value because developers can release the same app on multiple devices, and that developers and end users would be limited by third-party SDKs that aren’t updated to take advantage of new iPhone features.

The notion that Adobe is being treated unfairly by Apple is understandable considering there are many apps that will never make it to the iPhone now, but it doesn’t necessarily mean that Apple should change its policy. Apple’s job is to build a strong platform for the iPhone and related products, and to grow that market in the way it deems best, just as Adobe does for its products.

From Apple’s perspective, allowing Flash, or any of the other cross-compiler options currently available for iPhone apps, to continue leads to the lowest common denominator syndrome. Developers can code once, and deploy across multiple devices, but in the process will include only the features that are available on the least capable target device. That means the app experience on a device like the iPhone, or Google’s Nexus One, would be no better than a stripped-down discount smartphone, and that’s clearly a situation Apple wants to avoid.

Of course, there’s the argument that Apple has already set a precedent with supporting cross-compilers on Mac OS X. Apple has used its Web site to highlight applications and games ported to the Mac through cross-compiler tools in the past, and the applications brought to the Mac through those tools helped raise interest in the platform.

The iPhone OS, however, while a derivative of Mac OS X, is being treated as a completely different beast by Apple. The hardware and software is being controlled in a way Apple could never impose on Mac users, and that’s primarily because the company started from scratch with its iPhone software model. Apple created a one-stop-shop for all approved iPhone OS-compatible apps with its App Store, and the only way to get in on the game is by playing by Apple’s rules.

It’s true that iPhone, iPod touch and iPad users are potentially missing out on part of what the Internet has to offer, and on apps that will never make it to customer’s hands — and Apple is OK with that. Apple looks ready to weather whatever backlash comes out of its SDK license changes because it still has complete control over the iPhone platform, and can use that control to (hopefully) ensure that its customers have the best user experience compared to any other handheld device.

Adobe’s decision to try to cash in on some of the iPhone’s success is perfectly understandable. The iPhone is a big success, Flash is everywhere, and if they can get Flash-based apps onto the iPhone, why not?

But that doesn’t mean Apple has to let Adobe, or any other company that builds cross-compilers in on the iPhone game, and for now it looks like they’re quite happy keeping them out.