John Gruber reports on a new clause in the iPhone 4.0 SDK, to be agreed by developers before downloading:
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 interprets this as prohibiting Flash applications compiled to iPhone, as well as other development tools such as Monotouch. Flash compilation for iPhone is a feature of Creative Suite 5, to be launched on Monday 12th April.
This raises several questions, including:
1. Why? Why should Apple care what development tool is used, provided it behaves correctly? Applications are still subject to Apple’s approval, distributed through the App Store, and if commercial are also subject to Apple’s fee.
2. Is this anti-competitive? I guess this depends on the answer to (1) above.
Either way, it stinks. It especially stinks if Apple gave no notice to companies such as Adobe and Novell; but it stinks anyway.
That said, it’s a beta SDK and a beta agreement so … it could change.
If the clause is intended, enforced and remains in the production SDK, expect fireworks. Given that the designer community loves both Apple and Adobe, there will be some stressed folk out there; they will make a lot of noise.
I have asked both Apple and Adobe for comment, and will report back on the responses.
Update: Adobe has tweeted:
We are looking into the new SDK language. We continue to develop Packager for iPhone OS which will debut in Flash #CS5
If Apple go ahead with this i’m wiping osx off my macbook and installing ubuntu. selling my iphone and buying an android. and i’m going to make droid and winmo apps – and chill and watch as users switch from iphone to droid as it slowly loses credibility. It almost went down the pan in the 90s until MS bailed them out – that wont happen again. What are they paying at?@!
Why would Apple do this? Because it would lower the costs to develop for multiple platforms. Right now if you are doing a mobile app, while it differs depending on target audience, but chances are it’s an iPhone app. Then if there’s time and budget port it to Android, Blackberry, Palm, etc. With not just Flash CS5 iPhone packager, but other cross-platform tools help make it easier to target multiple platforms. This would level the playing field and make the iTunes app store less important. Example, one of the reasons that Palm Pre is hurting is that despite a cool phone, there aren’t that many apps available. While Apple would get money made from apps made with Flash CS5, Unity3D and others, I think they made a business decision that they can make more money from keeping these apps also off of other devices than any money they would make individual from those apps. I could be wrong, but that’s my theory.
by restricting it to Objective C, C, C++ they are basically making you have to run Xcode which mean you have to buy a mac. Flash-2-iPhone, Unity or monotouch will let you develop applications on none mac platforms. Apple loves to impose restrictions like these. Makes it so you have to stay in the apple bubble.
That’s my best guess. I love working in OSX and etc. but if they keep these restriction I wont be buying a new iPhone anytime soon.
Open it up a little. Let me run what I want such as flash, silverlight and java. let me develop in what I’m used to.
Who cares? There are plenty of platforms for Adobe hacks, And there are plenty of developers for iphone.
Adobe CS5 Flash-iPhone was terrible. In contained the full resource-draining Flash-runtime but they did away with the interpreter by making the opcodes into subroutines and compiled the AS-code as long series of calls to these opcode-subroutines. I mean – this was a really unprofessional solution.
Apple does right by protecting the battery-life reputation of its products. I have had it with Adobe and web developers using their products to build closed/proprietary websites than cannot be rendered by any web-renderer that implements standards.
@Wilhelm if it is a quality or performance issue, Apple could specify what is acceptable, no need to ban cross-compilers outright.
Tim
A badly designed flash cross-compiler (or if they implemented it as a runtime interpreter) could easily blow out the memory usage before crashing. And that would really screw up Apple’s version of multi-tasking.
The new multi-tasking expects apps to be conservative about mem usage as the background apps get shot automatically as the available system memory falls.
Apple is declaring war on all Python, Ruby, JavaScript, Java, C#, Lua as well as Flash ActionScript developers and any other cool language you can think of that’s not Objective C. No problem? http://en.wikipedia.org/wiki/Stockholm_syndrome
Sound and fury. Cross compilers have always been a pretty terrible solution (hugely inefficient, poor non-native interfaces, and lowest common denominator designs), and Apple doesn’t like terrible solutions. As seen with copy/paste and multitasking, they’d much rather do without than make do. Cross compiling Flash is definitely “make do”, and Apple has made no secret for years that Flash, Java, and similar platforms have no place on the iPhone. Adobe tried to pull an end-run, and Apple said no. Not exactly unexpected.
This will certainly strand a few folks, but if you were using a cross compiler to make an iPhone app, you weren’t exactly committed to the platform in the first place. If you have any serious interest – technical, business, or financial – in the platform, you’re going to use native frameworks. If you can’t be bothered to even do that much, then you’re not much of a developer and you won’t be missed. Furthermore, you weren’t going to make a cutting edge product anyway – cross-compilers emphasize lowest common denominator development. No big loss.
As for Apple being “closed”? Don’t like Objective-C, XCode, and all that? Then use HTML5 and go nuts. THAT is an open standard, and performance and functionality is only getting better and broader support. Look at the recent Quake2-in-a-browser or the iAd infrastructure. You can do a hell of a lot with HTML5 (a little freakish when you think of the origins of HTML), and that will work anywhere – iPhone, Chrome, Firefox, and eventually IE9. Need more? Write an app – a native app, one that’s not going to be wasting performance and memory on a hackish cross-compiler.
I’m sure we’ll have a half dozen folks like Wayne above who will stamp their feet and leave – and it won’t make a whit of difference. 99.99% of apps and their developers are unaffected by this, which means end users are unaffected, which means that fundamentally – no matter if its anti-competitive, a dick move, or whatever – It. Just. Doesn’t. Matter.
If you tied your livelihood and prospects to Flash, you’re tied to the mast of a sinking ship. Start learning new technologies and move on, or go down with the ship.
@Joshua – “…use native frameworks…” Monotouch *does* use the native frameworks. It meant you weren’t tied to coding in atrocious Objective-C.
I don’t know exact numbers but there seemed to be a lot of 3D iPhone games made with Unity3D, since publishing was introduced in 2008. Some even made for big name brands, like the Star Wars iPhone game:
http://unity3d.com/support/resources/unite-presentations/bringing-star-wars-to-the-iphone.html
I had yet to hear about any complaints performance in Unity3D iPhone games, and since it seemed to be a safe way to go, quite a number of companies made significant investments in this area. Now if Apple actually follows up with the ban, I feel bad not just for those companies, but the developers who could lose their jobs now.
This is certainly very wide reaching beyond Adobe, but it remains to be seen if Apple will successfully screen apps made with other environments.
@Joshua, when you say “Cross compilers have always been a pretty terrible solution” do you realize that Apple’s own compilers for the iPhone and the iPad are actually *cross compilers*? And you realize that every embedded system development is done with a *cross compiler*, including such things as the PS3, the Xbox and the Wii?
Nitpicking aside, the fact that other languages exist today and consume existing libraries, frameworks and APIs is a proof that there is no requirement that one writes code in the same language that the library, framework or service was written in.
Windows was written in C, you can still use anything else you please; Linux was written in C, you can still use anything else you please; MacOS is written in C and you can still use anything else you please.
Higher-level frameworks? The same, in OSX there is a massive community of Python, Ruby, Pascal and other languages that use the Objective-C libraries.
Then again, there are people that can not think outside the box. People limited by their own imaginations.
Sure. Apple great, Adobe bad. What is the problem here? All the other phone manufacturers are adding Flash 10. Apple can’t figure it out? Too complex? Hum. I am a loyal iPhone owner, and I can tell you that 85% of the Top 100 websites display in Flash, and most websites in the next 5 years will be built on Flash. So … how do you solve this problem? It is called the Windows7 Phone. Bye AT&T and bye Apple.
As soon as that product is out, I am gone. Steve and his “not invented here” leadership style will be a thing of the past. I was never an Apple fan. The iPhone was nearly perfect so I bought it. But now I know why I don’t like Apple. They tell us what we get to use and what we get to see on THEIR phone. Sad.
iPhone is so last year. Time to move on.
Dion Almaer in Twitter 4 hours ago: “The Web continues to be the only viable has non-single-vendor-owned platform that can be ubiquitous cross the devices of today and tomorrow”
Perhaps people affected by the new Apple restriction start to target the iPhone with mobile webapps? BTW, it was Apple’s original idea
To people suggesting other phones, bear in mind that the alternatives are no better. For the Windows 7 phone, everything is Silverlight. For the Android, everything has to be in Java. Where are the open platforms? Where’s the freedom of choice? Where is the computer owners’ rights law banning this kind of thuggery from computer designers in the first place?
Mason: There is a huge difference in what Apple is doing. For Android and WM7 you can write your application in any language of your choice and crosscompile it to C#/CLI in anyway you like with any number of middleware and then compile that with your supported tool chain(this is what MonoTouch, Adobe and Unit3D are doing). Though Steve is right about middlewares, they tends to make things wrose than they have to be, but MonoTouch for instance tie directly the the platform, directly to the UI core of the phone, there is no translation layers, only the busienss logic has an abstraction, which seems sane, develop multiple UIs, reuse your business logic.
The only thing that Adroid and WM7 is limiting is that they only support/produce programming tool chain, but they don’t stop you from making your own. At least not yet, MS seems to be copying iPhone alot so perhaps they copy the license too..
Apple don,t want flash on the iPhone because it will enable millions of there users to go and get play free games and videos and music, and that would stop there potential user buying form there app store or iTunes, meaning they will lose out on loads of money
it relay that simple
and apple just want to be number one
and the fact that adobe have figured out a way to get flash in a bit of a way on the iPhone has pissed them off even more, so they want to blow there own trumpet and say no no to that one to
i really hope apple will see the light on this one and realize that flash is a bloody good idea and let it work on there devices as every other manufacture will be doing so very very soon, making apple just look a bit stupid .
i just want a future where all devices can work in harmony together in a happy fluffy internet land