Apple updates iPhone 4.0 SDK agreement to block Flash CS5, Mono touch, cross-compilers


Daring Fireball discovered that, as part of Apple's newly released iPhone 4.0 beta, the licensing agreement now seems to ban binaries compiled by Adobe's upcoming CS5, Mono Touch, and the like:

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 seems to mean that cross-compilers, which let you develop in the soon-to-be-announced Adobe Flash CS5, the C# and .NET-based Mono Touch, or similar environments and spit out iPhone-compatible binaries at the end, are being prohibited.

Unity, which is used by many large iPhone game developers, creates Xcode Cocoa touch projects (the native iPhone frameworks) rather than binaries so it may not be effected. Given the importance of iPhone gaming and the companies developing them, it's hard to see Apple going hard-line against them the way they're stamping so very firmly on the neck of Adobe, Mono, etc. here.

As to the reasoning behind this change, Daring Fireball posits:

And, obviously, such a meta-platform [Flash or Mono sitting on top of Cocoa] would be out of Apple’s control. Consider a world where some other company’s cross-platform toolkit proved wildly popular. Then Apple releases major new features to iPhone OS, and that other company’s toolkit is slow to adopt them. At that point, it’s the other company that controls when third-party apps can make use of these features.

In other words, it once again highlights Apple's device-centric philosophy. They want beautiful boxes that run commodity apps and services. Adobe, Mono (even Google) want commodity boxes that run their apps and services. Those diametrically opposed points create these conflicts.

Pragmatically, selfishly, and completely from a user's perspective however, I'll take great, dedicated developers making apps specifically and purposefully for the platform (in this case, iPhone) any day over the code-once-spit-out-everywhere approach that has never delivered on that promise (other than with ugly, janky Air and Java apps).

Adobe CS5 with iPhone compilation launches in less than a week.

Rene Ritchie

Editor-in-Chief of iMore, co-host of Iterate, Debug, Review, The TV Show, Vector, ZEN & TECH, and MacBreak Weekly podcasts. Cook, grappler, photon wrangler. Follow him on Twitter and Google+.

More Posts



← Previously

WebKit2 with speed and crash-proofing -- Apple's other big announcement

Next up →

Quick Review: Real Racing HD for iPad

Reader comments

Apple updates iPhone 4.0 SDK agreement to block Flash CS5, Mono touch, cross-compilers

Sort by Rating

I'd agree with the sentiment expressed at the end. And timing wise it really does give two fingers up at Adobe.
Classic Jobs.

Maybe that tool that wrote the original Facebook app needs to read Daring Fireball. He's out there again being quoted by the media saying that this is bad for developers, blah, blah, blah. He's making it sound like Apple=Evil. However, given this interpretation it make sound business sense to move the platform along in unison every year about this time when Apple comes out with the new OS SDK.

I'm glad that Apple is fighting the good fight on behalf of the rest of us. Proprietary software like Flash really does not have a place on the open internet. If Adobe wants to continue to work within the media/content space, it seems to me that they should use their prowess as content creators within the framework of HTML5 and CSS3. Whether or not they use their proprietary code, there is no doubt that they are deeply connected with an aesthetic quality - highly interactive web content. I think they would be wise to exploit that fact while accepting and working with open internet standards.

Do any of you read? It's not blocking Flash on the iPhone. This goes way beyond that. This is simply Apple saying "screw you" to anyone who has any sort of Flash app and wants it to run natively on the iPhone through Objective C. It's bad for consumers and bad for any one except Apple.
I'm all against Flash being on the iPhone and I'm a fan of open standards, but this is a blow to openness. With this change in the TOS, it also blocks off other legitimate types of development like Monotouch, which is C# development for the iPhone, C# being not that much different than Objective C.

iPaladin, you should read the whole Daring Fireball article really, Especially the end part. This isn't a blow to consumers.

"I’m glad that Apple is fighting the good fight on behalf of the rest of us. Proprietary software like Flash really does not have a place on the open internet."
@Ambient Rings: Have you lost your mind... scolding someone for proprietary software and defending Apple at the same time. Apple is the original proprietary douche company of the world and continue to be that. I own apple product and respect them for what they are but open is not one of them.

(Copy of) Dev
@Rene (and everybody else so far)
You are missing at least two huge points:
1) After the Flash runtime was forbidden, Adobe spent over a year (and likely several million dollars, but, at the bare minimum, high six figures) developing a cross-compiler for Flash specifically to accomodate Apple's rules. They did so publicly -- tipb even covered it at least once -- and announced milestones on the web every few months. If Apple did not want cross-compilers, they had ample opportunity to inform Adobe. A good business partner would have done this with a long-standing partner. Instead, they waited until after Adobe had spent all that time and money to accomodate Apple, and then quietly slips a change to the agreement in two working days before Flash CS5's product launch. No, as far as I can tell, Apple did nothing illegal here, but that is besides the point -- this reinforces to all of us that Apple is a company you have to do business with, not a company you want to do business with. After all, if Apple will deliberately act and time their actions to do maximum damage to a company whose products have arguably saved Apple's very existence in the past (Pagemaker - then with Aldus, yes, and Photoshop), then they will do their best to **** anybody . The old saying may be "it is better to be feared than loved," but at some point, fear runs out. Yesterday's license change and timing dramatically upped developers' fear factor, and got a lot more eyes looking at the Exit sign longingly for some other platform White Knight to arise.
2) Hewitt (and I) could honestly not give a damn about the Flash cross-compiler. (I personally do not think it is the right tool for the job, though, in that case, it makes little sense not to allow it, and laugh and it while it fails.) Section 3.3.1, however, goes well beyond banning cross-compilers; it essentially bans any language differential at all, or even developers choosing what they feel is the right tool for the job. Objective C is decent, but not the be-all-and-end-all of languages. Many apps in the App Store mix in other languages, or are written entirely in different languages -- because they did the job better. These are now "illegal" -- even if the end user could never tell any difference. Language experimentation -- which, although slow, has inexorably done more to push the state of the art forward in CS and in end user products that just about any other field of software -- is now "illegal." Polygot programming -- which has done more in the past two years to increase software quality and time-to-market than just about anything else -- is now "illegal." Apple will miss out on those benefits.
Neither of these are short-term issues, as Hewitt tweeted:
"It's so hard to reconcile my love for these beautiful devices on my desk with my hatred for the ugly words in that legal agreement."
I, too, LOVE my iPhoneOS devices -- they are clearly better than anything else on the market, and I bet they will remain so for at least another year or two. While that continues, Apple has absolutely nothing to fear, and they can continue to run as roughshod as they like over as many business partners as they like. However, Apple's business practices and legal department is breeding a lot of resentment among developers, and that resentment will boil over the second another platform reaches within spitting distance of the iPhone. Apple made a similar mistake 1988-1996 with developers, though it took almost 7 years for Windows 95 to reach spitting distance, but, as soon as it did, the floodgates opened and Apple nearly died. It is sad that, rather than learn from that mistake, Apple has doubled down on it.

I have to agree with iPaladin, regardless of what anyone is saying about it the new TOS is not blocking Flash or Adobe. It is blocking legitimate developers who utilize languages other than Objective C (Actionscript, PHP, .NET, jQuery, etc) from compiling stand alone apps using a code translator. Many high quality apps produced in this fashion already exist in the App Store and are completely indistinguishable to the user.
This is actually very very bad for the consumer who wants a choice in apps as it significantly reduces the developer base allowed to submit apps to the store. Besides the fact that development language alone does not a quality app make. You can have really horrible Objective C apps if the idea/implementation are bad. However the inverse is true as well. Teams with a great idea may have a very hard time bringing a product to market simply due to having to commit resources to learning a new language.

MonoTouch isn't banned by this. MonoTouch can compile C# into C today, so you can compile the end result with Xcode and still be in compliance with the requirements.

@Dave Ven den Eynde
I disagree. Section 3.3.1 is so broad that MonoTouch would seem to violate two sections:

  • "Applications must be originally written in Objective-C, C, C++, or JavaScript" -- under MonoTouch, they are not originally written in any of these languages.
  • "Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited" - MonoTouch is clearly an intermediary layer.

Even if MonoTouch only functions as a dumb preprocessor, it would stil be in violation of these section as written, though admittedly much harder to catch.

I can't improve on the excellent response from (Copy of) Dev, but Rene I have to take issue with your characterization of the affected third party toolkits as examples of the "code-once-spit-out-everywhere approach." It is innacurate, and a false dichotomy. As an example, look at NimbleKit as an example; it is basically an Javascript/Objective C bridge, but it is specifically designed for creating iPhone apps, not to "spit code out everywhere."
If Apple had allowed these tools to continue to be used, it would have made the iPhone an even more appealing platform for Enterprise IT shops, as existing (and widespread) skillsets in C#, Javascript and yes, Flash, could be leveraged. Forcing folks down a narrow path like this will not play in the Enterprise.
As it is, Apple is spitting on us, and blog posts such as yours merely claim that it is raining.

@(Copy of) Dev:
Very well said! What's interesting/crazy is that 3.1.x and 3.2 don't contain that language so Mono Touch is, and CS5 will be, able to generate apps for the current OS. 4.0 is still in beta and no apps can be submitted under 4.0 until June/July when it ships anyway. That makes it largely irrelevant at this point as anything other than a corporate tool -- either as a scare tactic or leading indicator of Apple's intent come June/July.
(Imagine if they'd left it out of the 4.0 beta and put it in the 4.0 final after devs had made tons of CS5, Mono, etc. builds targeting that).
Doing it now, so late for Adobe yet so early for 4.0 is telling... I just don't know of what yet.
And absolutely, Apple could accomplish every result they have and be nice to developers and partners while doing so, but as a company they act remarkably personally even to their own detriment.

What I think a lot of you miss is the amount of apps in the App Store not written in Objective-C. I have no legit numbers but you do not know when an app is Flash, Objective-C, MonoTouch, or Unity. Consumers lose nothing from dev's using other tools and gain nothing from them being blocked.
This is a horrible decision and play by Apple. I look forward to some filings against them soon. They are absolutely violating some laws here. Microsoft early 2000's anyone? There was some lawsuit this reminds me of.

The real purpose here is much sneakier; this is to lock out devs from interactive in app ad platforms other than iAd. I'm convinced Apple locked out Flash not for any of the reasons stated, but so that all interactive advertising content on the iPhone(or at least the easiest way to run such content)had to run through them, on the browser, in apps, wherever.
Face it. Version 4 is, from Apple's standpoint, all about the iAds revenue generation model. Everything else is just keeping up with the Jones' (barely); the bare minimum they have to do to keep the devices in the same ballpark as the competition. Follow the money.

What is wrong with Apple and Steve Jobs? If they didn't want Flash (and this other stuff) Then they should of made an alternative a long time ago. They're late to the party, Flash is a standard now.
And what if Apple's new standard fails? Like when Sony tried to make the UMD a standard for portable movies and music. They don't make UMD movies and music anymore, sure you can still find them, but they're used or several years old. HD-DVD failed too.
They need to learn that it's not what they want, it's what the consumer wants. Apple is going to screw themselves pretty royaly with this. If you're a developer, are you going to learn all new standards to comply with one device? Or are you just going to tell them to screw themselves and use the same standards that 5 other people you develop for use because you're not going to do the same thing twice, or you'll do it later down the road but not right away. If people want Flash and Apple isn't going to give it to them, then people will take their business else where, which will hurt Apple.
This just shows that Apple wants people to conform to their standards. If you're going to bring in a new stardard, gradually do it, don't just slamit down and say that this is how uit's going to be and it's effective right now.
The way I see it, Apple is at the bottom of a hill, armed with a wiffle bat, while all those developers and whatever are standing at the top of the hill, with chain guns. The developers don't have to conform to Apple's stardards, they can take their business elsewhere if Apple doesn't want to be open.

@(Copy of) Dev: Jobs was VERY clear that "Flash will NEVER run on the iPhone". He didn't say "I don't want uncompiled flash running on the iphone." He didn't say "We don't allow flash on the iphone because its slow". He said, and I quote "Flash will NEVER run on the iPhone".
How clear do you want it?

@Rene re: still able to develop apps for 3.1.
The agreement applies once you agree to it. If you have downloaded 4.0, you had to agree to this first. The agreement comes into effect immediately: i.e. you cannot develop 3.1 apps using AIR either.
So your choices are to not download 4.0 and use AIR, or to download 4.0 and not use AIR, even for 3.x.
Of course, since Apple can reject your app for any reason whatsoever, they can start doing it now, whether you've agreed or not.
You guys should try developing for games consoles. Microsoft and Sony make Apple seem like a dream to work with.

I don't know why the open-source community defends Apple. It is the most closed and trite company around.
I mean even Microsoft did not force you to buy one of their over-priced computers in order to develop for their other products.
Apple is the epitome of closed source.

I don't read that and come away with the idea that you can't use another compiler, I read that and think "I can't make an app in java and then code a translator to call the APIs for it in native code."

Yep, Apple once again throwing up walls to keep other developers out of their pond.
I will refuse to buy any of their products.
Anyway, the HP Slate gives me way more for my money than the POS, overpriced, underperforming iPad.

@Jamie This isn't about Flash running on the iPhone OS. There are two Flash products (probably Adobe's fault for not changing names) The first is the Flash Player. This is the app that sits in a browser and plays swfs, flv video, etc. This is what Jobs was referring to in the QA. The second Flash product is the authoring environment that will supposedly allow developers to cross compile projects to native platforms (iphone included) in the next version. Essentially allowing people to develop using a familiar IDE and language. The two are very different. Granted the new TOS is open to "acceptance" but that basically means if you want to do ongoing app development you have to agree to the TOS or you'll have no market.
The important thing to remember in this discussion is that the new TOS is NOT ONLY BLOCKING ADOBE its blocking translator/compiler apps from a variety of different producers based on many languages other than Actionscript.

+1 to what a terrible decision this is. I'm a very small developer (just a couple of us) and I've invested huge amounts of time in developing both MonoTouch and Unity C# code for the iPhone (as well as having purchased a Macintosh and a total of 7 iPhones for this purpose!). This decision (if I understand it correctly will wipe it six months of development work for me and my company as well as hardware and tool investments. This decision is DEVESTATING to me personally and my company.

A literal reading indicates that MonoTouch is verbotin, but hopefully Apple will adopt a softer line. MonoTouch is basically a port of the CocoaTouch API. Apps created with MonoTouch have the exact same look and feel as apps created with Objective C because the UI framework is basically identical. Indeed, MonoTouch developers even use Interface Builder -- the very same UI design tool used by Objective C developers.
So there is no difference (oh, except that Objective C is years behind the .NET world in terms of language and tooling). Banning MonoTouch can only hurt users because of all the good apps that won't get developed. I don't get why Apple would make such a nakedly monopolistic move. Hopefully, they will clarify and allow MonoTouch apps.
I am an independent developer who has invested a large amount of sweat creating my first IPhone app using MonoTouch. I submitted it to the app store for approval earlier this week. I have bought an expensive Mac and IPhone to do this development. I will be a stick in the eye from Apple if they kill MonoTouch!

I have to agree - there will be action lobbed at Apple over this practice. (And Microsoft for keeping Silverlight even more closed.)
Hopefully Dreamweaver CS5 will incorporate HTML5 support. While HTML5 will end up splintered between various web browsers like everything else, I do fathom it eclipsing even Flash in the future. But Flash isn't going away either.
Lastly, sites like the one below show that Apple keeps Adobe out of the APIs needed to improve Flash performance on the Mac. Reading that, I'm going to stick with Flash development for the time being. Silverlight isn't frame-based, but the development tools are pricey and have a steeper learning curve.
Makes me feel ashamed to be a Mac supporter at the same time. Apple should know better, especially as MANY professional developers use Macs. If Apple goes too far, they will lose their own customers. Especially if Adobe plays hardball and drops OS X. (In which case, we should do a class-action suit against Apple as well.)

@Tim Scott (April 9, 2010 @ 8:08PM) - thanks for the information. It's surprising and revealing, and breaks the stereotype that Microsoft is just a glorified and equally lucky outfit. With what you said, I don't think they should axe MonoTouch... or Flash as I don't buy half of their argument and the link I posted earlier tonight shows it's more or less an petty political tussle to begin with...
If Apple improves its IDE, I would definitely be jubilant... a shame about nixing the Flash crossover tool as I am proficient in Flash and increasingly so with ActionScript 3, but it's all good...

"Flash really does not have a place on the open internet. "
Ummmm how about giving me that choice and not leaving it up to Apple...If I want Flash I can enable it..if I don't I can dissable it..Apple just wants control over content plain and simple...get your head out of your a##$pple..
Also with the blocking of CS5 Apple simply wants 30% of each app sold (current program). Imagine what will happen when all the Flash developers start developing really good apps and hand them out for free. iTunes will be flooded with good free apps and no one will buy the pay apps so, Apple will not make a cent...that's why they also want to push they can get a cut from the ad revenue in the free apps...Apple is really starting to stink..I used to like Apple and detest Microsoft but now...

What a dumb @ss move. I used to have much more respect for Apple and Steve Jobs, but his stance on Flash has become absolutely pathetic and ridiculous. I am an Apple user, but as for the iSheep who follow Steve Jobs and Apple religiously here is some news: he is actually not a God, but only a marketing genius with a nice sense of style. So all of the people who have their iPad and are OK with not being able to view all of the content from about 80% of the sites on the web, you are truly a brain-washed iSheep and you might want to open your eyes a bit. In fact, Steve’s choice to lock down his platforms to any non-Apple-approved languages is in fact a backwards maneuver and may only serve to stunt the growth of the internet and developers in general, it is so far from the ‘open web’ a lot of other people seem to be ironically championing. Hey, at least Steve finally admitted it was so he could retain control (and make more money), and that it really had nothing to do with Flash.

I would have loved to use CS5 to make Apps. Much more comfortable than Objective C. What I can see happening is Adobe just making it so that when CS5 compiles an App, it won't give any indication that it was compiled in CS5. Sure it wouldn't be allowed but if was a matter of "prove it", then Apple wouldn't be able to do anything about it.

Here's a thought on how Flash should counter-act ....instead of trying to break into Apple's devices...Flash should allow a way to run apps made for iphone to run on open platforms like android using their ALCHEMY project( technologies/ alchemy/)... if Jobs' idea was to provide a vendor lock-in for developers.. .this would easily counter-act that move.

Well, now I know where to look should I ever need an Apple fanboy's opinion on something. Not that I'm an MS fan either, but I find it amusing how Apple lovers will rush to defend Job's over behavior that they'd take MS to task for in a heartbeat.

You guys also forgot how many sites and other things run Flash on the web. Newgrounds is dead to all iPhone 4's now. For me, that a huge blow to the buyer.