Apple’s new iPhone developer agreement bans the use of Adobe’s Flash-to-iPhone compiler

invisibleSHIELD case for iPadJohn Gruber reports for Daring Fireball, “Prior to today’s release of the iPhone OS 4 SDK, section 3.3.1 of the iPhone Developer Program License Agreement read, in its entirety:”

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.

Gruber reports, “In the new version of the iPhone Developer Program License Agreement released by Apple today (and which developers must agree to before downloading the 4.0 SDK beta), section 3.3.1 now reads:”

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

Gruber reports, “My reading of this new language is that cross-compilers, such as the Flash-to-iPhone compiler in Adobe’s upcoming Flash Professional CS5 release, are prohibited… I’m not sure how exactly Apple intends to enforce this, but my understanding is that iPhone apps produced by Flash CS5 are easily identifiable as such by inspecting the contents of the app bundle.”

“To be clear, I do not think that Apple is singling out Flash CS5,” Gruber writes. “I do think, though, that Flash CS5’s cross-compiler epitomizes the sort of meta-frameworks Apple is not going to allow. Same goes for MonoTouch… I think this comment at Hacker News from ‘raganwald’ nails it.

Full article here.

MacDailyNews Take: Mac users, launch Activity Monitor (Applications/Ultiities/Activity Monitor) and go to www.masters.com then watch some Flash video while keeping an eye on your CPU(s) and listening to your Mac’s cooling fans.

46 Comments

  1. I don’t think this is just about Flash, but about cross-compilers that compile to multiple mobile devices. That’s what Apple doesn’t want as it does two things:

    1) it dilutes their developer base as the developers are not dependent upon Apple

    2) the apps created this way aren’t first class citizens on any mobile device and don’t take full advantage of iPhone’s features. In other words, these are basic (lame) apps.

    While I have been a huge fan of Apple and have argued against the whole “Apple is closed” argument, this could change my mind.

    It’s one thing controlling what apps end up on your system. It’s quite another specifying exactly what programming language and tools must be used.

    The former is about users: protecting them.

    The latter is about controlling developers.

    That’s like a publisher saying, “We will only accept novels written in Microsoft Word. You are not allowed to us Pages or Open Office or anything else and export your document as Word. It must be originally typed in Microsoft Word.”

    Worse, this publisher has a monopoly, so the writer’s stuck doing whatever the publisher wants.

  2. @ zmarc,

    Dude, you are so off the mark. You’re wrong on so many things…

    Apple has only 20% of the mobile phone market, and you say that’s a monopoly?

    Apple wants quality apps which don’t crash, abuse or endanger the user experience. You call that controlling developers? I call it quality control.

    Your analogy of having to use Word is ridiculous. Cross compilers create machine code. Word is merely a text entry and editing tool. It has no machine code generation like cross compilers. From Apple’s POV, Word would be just as fine as Pages or Text Edit. It’s the robot code they are trying to prevent, for a variety of reasons.

    Finally, they did not target a single company or provider or product, as in your analogy. Neither requiring anyone to use or not use. They targeted a METHOD of generating code, not a specific product or platform, etc.

    Are you getting any of this? Your knee jerk reaction is totally ignorant.

    Dude you are totally clueless.

  3. Hey Steve Jobs, you survived cancer to kill Adobe Flash?????

    Help Adobe fix Flash. Make it lighter, hardened, crash-proof, and hardware accelerated. Help Adobe port it to the A4, properly.

    Adobe helped create desktop publishing on the Mac first, remember Pagemaker 1.0, Photoshop 1.0, Freehand 1.0, all the Macromedia products, hell I think Adobe even owns the assets to Silicon Beach software and their titles like Dark Knight that I loved playing on my Fat Mac.

    You’ve been given a chance, think about the BIGGER picture and i’m not talking dollars here.

  4. Ask developers for Play Station, XBox or Wii if they have to do code Sony’s, Microsoft’s or Nintendo’s way or if they can do things anyway they want to do them.

    Sony, Microsoft and Nintendo have total control and no one seems to care.

  5. I agree, Objective-C sucks ungodly hard… If you use it the way Apple encourages you to.

    But if you understand Objective-C is actually just regular C with a few minor extras bolted on to it, then you’ll suddenly realize you can write Mac/iPhone/iPad software in about 90% plain C.

    You also can(and should) also ditch Interface Builder and create your UI programmatically.

    Seriously, I have to facepalm every time XCode/Objective-C gets flack for being unorthodox, when in truth it can be used it a completely orthodox way, it’s just that people assume it can’t be because that’s not how Apple’s developer docs show it.

    If you think it’s any more painful than other programming language/IDE combo, you’re doing it wrong.

  6. Objective-c took all the worst parts of c and c++. There are fAr more productive stacks with garbage collection and memory management. If you aren’t closed minded you would see how good, the example, the ms stack is. C# is a very good language.

    Java is great.

    Python is great.

    There is no good reason for apple to discriminate against other languages. It is like saying non english speakers aren’t welcome On mdn if they aren’t native speakers and have to use a translator. Apple should not care how it gets translated into objerive-c. They should focus on the app itself. Apple is just being vindictive here. (sent from me iTouch)

  7. Went to masters.com and played a couple of the interview clips. Safari CPU usage went to 40% and the Flash plug-in went to 35%. That’s actually less usage than I’ve seen on other flash video of the same size, but still… the same size & quality in HTML5 video is well under 10% total.

  8. Get ready for Apple to change the contract again; every 6 months ?, every year ? Also get ready for the Apple certified pen & paper set and oh, wait for it, the Apple audit that will certify if your computing platform is the “correct” one, maybe its too old and should be replaced before you can develop for the iPOS.

    Seriously; if you develop for Apple, get used to the idea that every year, they will tighten the contract and your risk as a developer will increase. Remember the frog in the boiling pot of water, at some point someone else’s favourite widget will join the Apple black list, what will you do then ?

  9. Apple has been fscking Adobe for years. And creatives by extension. It started when they wouldn’t turn over the Intel specs in time for CS2 (I think it was 2 anyway), then dragged their feet to allow Adobe access to information regarding Snow Leopard. There was talk this was to give iLife some advantage… and don’t even get me started on fontbook.
    Then iPhone didn’t allow flash… and now they’re expressly forbidding it. Fsck them.

    Look, Flash isn’t the greatest thing in the world, and I could almost kind-sorta understand them not wanting to run it on the phone (especially a bloated, resource hog version of Flash). Fine.
    But when Adobe steps up and offers to make a better version of their shit to work with you and you still say “no.” That’s crap.
    And when Adobe goes the extra mile and actually works around your bullshit problems so that your users get variety and choice and then you pull this? Fsck you Apple. 🙁

  10. re.cupcake

    Adobe goes the extra mile? Are you fscking kidding me? So that’s why we’re still running Carbon versions of CS? For Christ’s sake, Apple practically bent over backwards for them by creating Carbon in the first place, and now, 10 years later, Adobe is just getting around to shipping a Cocoa version.
    Please. Both companies have done their fair of poking at one another. It’s not even remotely as one-sided a picture as you’re painting.
    BTW, Everyone in the Apple developer program gets specs on these things early (particularly Platinum members like Adobe). Apple did not withhold from Adobe. Adobe dragged its feet because ADOBE IS SLOW.

  11. Excellent decision by Apple. Every time I use one of those “cross-platform” developed Mac apps, it’s painful – menus inside the window, non-standard UI, and it just looks ugly. You really want that same experience on your iPhone or iPad? No, you don’t.

    Apple’s once again protecting the end users from the laziness of developers looking for merely “good enough”. And since there are tons more end users than developers, the needs of the end users win out. Which is as it should be – when the laziness of developers wins out over the needs of end users, you get Microsoft Windows.

  12. Folks, it’s plain and simple, no matter what kind of programming experience you may or may not have.

    Apple built a sandbox. Apple filled it with sand, and has offered 5 amazing devices to use in the sandbox (iphone, iphone 3g, iphone 3gs, ipad wifi, ipad wifi 3g – so far). Apple invited others to come play in the sandbox and make money while playing in the sandbox. Apple sets the rules for playing in the sandbox so everyone gets the same consistent user interface, experience, etc when using the devices that they sell, that work in the sandbox. They are protecting the end users directly, and indirectly the sandbox too.

    Do we want the wild west mess of crap and three operating systems and apps that don’t work right and all that that is the Android platform? Hell no. There have to be some rules, some guidelines, some overall plan to keep the sand in the sandbox, keep the devices working properly, etc. Otherwise, forget it… the whole thing gets washed away.

  13. Saw this reply on the web. It sounds about right.

    “Many of you seem to think this is an arbitrary or monopolistic decision by Apple. Did any of you watch today’s presentation? Seriously–the answer was right there. The reason for this move is that the iPhone OS now evaluates each app as it is running in order to implement smart multitasking. It can’t do that if the app is running within a runtime. It can’t swap out resources, it can’t pause some threads while allowing others to run, it can’t selectively notify, etc. Apple needs full access to a properly-compiled app to do the pull off the tricks they are with this new OS. They can’t do that if there’s a DMZ (runtime shell) between them and the app.”

    Just a thought,
    en

  14. You’re all cup & no cake.

    Adobe has for years gone out of its way to placate & serve the Windows user–this is no secret. Adobe is not innocent in regard to equal development & disclosure of data on new software throughout the 2000’s. e.g. Adobe (along w/ the rest of the world) was made well aware LONG in advance of the switch to Intel–yet Adobe was 2 yrs late bringing the CS product up to date & still didn’t care–despite aapl releasing a universal compiler nearly a WHOLE YEAR in advance of the switch..and don’t get me started on Premier–adobe killed that themselves. They thought they would punish aapl & mac users–but guess what? they gambled & lost. Flash technology will bite them similarly.

    When aapl was struggling, adobe consistently disregarded mac users in favor of the larger windows pc market. So now that aapl has the industry by the tail, adobe wants to play ball again. How convenient. Adobe’s arrogance, self-importance & internal (interdepartmental) dysfunction are legendary–any screwing they get is well-deserved

  15. I believe that this exclusion has more to do with Microsoft’s “embrace, extend. extinguish” approach to destroying competitors. If Apple allows cross compilers and other compatibility layers, it will allow the owners of those products to make Apple’s devices “second class citizens.” Currently we see this behavior particularly in the games area with Mac OS X. Most of the “cross-platform” games suffer significantly on Mac OS X from “windowism”, which greatly dilute the Mac OS X experience. Native games have a much greater tendency to match Mac OS X user’s expectations.

    As for Adobe, I believe that they mistakenly accepted Microsoft’s suggestion that Mac be made a second class citizen in the Flash world. When that agreement ran out, Microsoft introduced Silverlight, which appears to be a blatant attempt to “extend” Flash. I am guessing that “extinguish” will come sometime in the near future. It appears that even relatively large companies can be “stabbed in the back” by Microsoft.

    My opinions only, which probably have no basis in fact.

  16. Its all just such BS. Pure crap. Let the users do what they want on their freakin hardware.

    NewsFlash: Adobe Flash makes a Windows PC CPU go nuts too ! Its not a Mac problem. There is no such thing as CPU-efficient video playback in a web browser on any platform before HTML5 and that is not a final standard. And watch, it won’t be the savior. H.264 is very CPU intensive too and the only way to change that on a Mac or PC will be to use the GPU for acceleration of the video. Apple should be able to support that since they make the browser and the O/S but if Adobe had wanted to optimize and implement GPU acceleration for Flash in the Mac, its not possible thanks to Apples OS architecture !!
    I wish people would educate themselves before blaming Adobe alone for the bad Flash performance.
    I sure hope HTML5 implementers on Mac and PCs can accomplish GPU acceleration with H.264 codec

    Before you bash my PC & Windows use, my company makes professional broadcast products for TV industry, and Macs are not an option for these types of products.

    Finally, ya know what ? The Quicktime MOV file container is a crappy inefficient format too. I can assert this from someone who works in the Apple Quicktime SDK to process MOV files. Partner companies of mine have made the same claims. So stop harping on Abobe for being “lazy”.

  17. Sorry MDN,

    I did as suggested and opened my Activity Monitor, then went to the Masters website.

    I clicked on several things including the live feeds.

    Activity slightly increased, never heard the fans rev up. Overall, except that I hate golf, not a bad experience in the least.

    Which begs the question, “your point?”

  18. objective c is the language c++ could have been…objective c is a little goofy (the function syntax with square brackets), but otherwise it minimalist, add no more than necessary, approach to building on and ooping up c is very good. I definitely prefer objective c to c++. No contest.

Reader Feedback

This site uses Akismet to reduce spam. Learn how your comment data is processed.