Not content to just block the Flash Player, Apple leaves the safe confines of its previous excuses to ban cross-compiled Actionscript from iPhones.
As reported all over the Flash platform blogosphere, Apple has just changed their iPhone Developer Program License Agreement which applies to all iDevices (i.e. iPhone/iPod/iPad). This change, which targets any code not originally written in an Apple-approved language has effectively killed the idea of cross-compiled Actionscript making it onto the App Store... smothering Flash CS5's flagship feature in the crib mere days before its release.
That's not what we generally call "playing well with others".
The Smoking Gun
Here is the offending text:
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).
(Possibly in case some might try to argue that by being an ECMAScript variant, Actionscript is a form of Javascript, Apple explicitly states that for any Javascript to be acceptable, it has to run in the "iPhone OS WebKit engine". Just goes to prove that when it comes to lawyers, Apple can afford the best, as the Beatles have learned.)
It's My Party (And I'll License You If I Want To)
Here, to add to the many other voices out there, are my thoughts on this whole unfortunate dust-up:
- Apple's official defense of blocking Flash on iDevices has been that they are looking out for their consumers by attempting to guarantee a minimal level of consistent performance on what are not very powerful devices. I call this the "It's for the children" defense: as long as the ends are all sunshine and roses, it doesn't matter what underhanded things you are actually doing.
- Adobe knew all along that in developing their cross-compiler and threatening Apple's development monopoly, the folks at Apple could easily pants them like this. They were obviously out on a limb, so I assume that the smart folks at Adobe was banking on the idea that Apple wouldn't step outside the safe confines of their previous excuses for blocking Flash. Like the ruthlessly territorial animal that it is, however, Apple chose to bite, not bark. Thus comes to an end the short and tumultuous life of cross-compiled Flash on iPhone. Johnny, we hardly knew ye.
- With this malicious licensing change, Apple has gone well beyond the safe confines of their original (arguably) defensible position. They no longer have the cover of saying that the license is meant to protect users. Au contraire. It is very clearly meant to protect Apple's interests. That's fine. I'll gladly defend the profit motive. I just don't think this is a guaranteed long-term win for Apple.
- With a ream of powerful Android phones and Tegra II tablets on the way anytime now, Apple is about to face a lot of competition in the smart phone and "iPad" or "touch screen, internet-enabled, not quite a laptop" space. At the vanguard of this assault is Adobe with Flash 10.1 (on Palm, Android and Blackberry) and AIR on Android (surely to be followed by AIR on other mobile OSes).
- Granted, Adobe loses this first battle. They invested a lot of money in developing this (open-source-based) iPhone cross-compiler and selling the idea to developers. However, these new non-Apple smartphones and impending tablets are all much more powerful and most likely less expensive than the iPhone and iPad. If both Adobe and we Flash platform developers play our cards right, the technical and functional superiority of this new wave will overcome the iDevices' strengths (i.e. the app store, latte-drinking fanboy base, casual users whose nephew told them that Apple products are always better) and win the war.
- The smart thing to do is not for Adobe to kick back at Apple (as some less temperate souls have suggested), but to continue eroding its monopoly. First, stay the course. Second, make a cross-platform, cross-vendor App Store killer. Enough with the multiplicity of App Store clones (e.g. Android Market, Adobe AIR Marketplace, individual carriers' app stores). Come up with a licensing and profit-sharing scheme and band together for the good of you all. Just make sure you give developers a fair shake because they are the key to your success.
The Big Picture On Small Devices
In the end, as developers, ours isn't a battle to get Flash on iPhone, it's to get our code on the most devices possible, making our non-objective-C skills more valuable. If Flash and AIR-enabled devices eventually get the lion's share of the market over iDevices, then we will have won, no matter what Steve "I'm geniuser than you" Jobs and his many lawyers decide.
I always say that no movie really starts until you know who the bad guy is. In this case, Jobs and his buddies have put their money where their mouths are: the iPhone/iPod/iPad space is closed and they own the keys. Frankly, it's nice to get some clarity here rather than second-hand quotes of The Steve Jobs calling Adobe "lazy" or some such other silly thing.
Now we really know exactly where Jobs and Apple stand: alone. The exact same place you'll find every other kid on the playground who waves his finger at his peers and says "It's my ball and you can't play with it."
That's ok, Stevie. We have our own.
Unfortunetly, Adobe has taken a few hits below the belt before, with Ecmascript4 compliancy for instance, but if they stick to their strategy they will prevail.
I think their investment towards compiling to different (byte)code is not a dead end. For example, it's not impossible, at some point they would invest in an actionscript compiler that outputs HTML5 and doesn't require any flash runtime.
I'm not sure if we're looking at a war here, but surely Apple's conduct seems racist. Only objective-c apps are good enough for the stores.. what's that's about !? They are the pure race now ?
Google is just beginning its attack on the smartphone market and they do have the potential to do more than just eroding the Apple monopoly. The minute the iphone market share is going south is the minute they would start loosing objective-c developers big time, and this "smart" move will add up more nails to their coffin.
I think you're right. In this business, things change fast. Apple is apparently set on milking their monopoly for as long as it can last. If/when the user experience on competing "open" tablets and smartphones gets consumers pounding on the doors, they will have two choices: stick to your guns or open up.
As you mention, if they open up their platform (which isn't in their DNA), it will just mean a different kind of demise than leaving the doors closed.
In the end, I'm not too worried. I agree that whatever happens with HTML 5, Adobe will be front and centre, most likely with a world-class IDE/authoring tool and perhaps some fancy de facto standard-setting framework, etc.
Bad Apple, bad!
Good article, I fully agree.
As developers, we might feel bruised by this debacle, but not broken. We know the value Flash offer to our customers and the real advantage of the web over apps.
I'm with Adobe and creativity, they will prevail. As for Apple, I reckon as soon as alternatives (phones, slates) hit the market, they will move into decline. Bad judgement and leadership over there.
How could Apple have the power to specify the programming language humans use to write apps that run on a device? What if someone came up with a high-level *declarative* language that could generate procedural Objective-C code? How could Apple possibly be within their rights to forbid the use of such a declarative tool?
I don't believe this provision of Apple's agreement could really be enforceable; it simply creates FUD.
Hi Timo,
You're right that Apple can't very well control what an iPod owner can and cannot install on his own device (try as they might). The obvious example of that is "jailbroken" iPods. However, Apple does have absolute control over what is sold in the App Store, which effectively covers every single app installed on upwards of 90% of iDevices. Using this godlike power over the App Store, they have effectively kept complete control over their developer base.
Someone might be able to successfully challenge this developer license restriction in court (stranger things have happened), though the practical effect of it is that no professional developer will waste his time coding up an app that might be deemed unclean by the lords of the App Store. If he wants to deliver it on an iDevice, he will conform to Apple's every whim.
That's one reason why I mention the idea of a more open, cross-platform App Store for non-Apple devices: if no single party owns it, then developers will likely have more freedom to create applications that can't ever deliver on iDevices (e.g. containing interpreted code, JIT compilation, etc.)