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

I am sure most of you know that Apple is trying to kill Adobe's Flash, so I won't go into that here. But the point of this rule is clearly to prevent Adobe from selling their new Flash development tool that compiles Flash apps into native code for the iPhone. What Apple is saying here is that the only tool you can use to write iPhone apps is theirs. This, it seems to me, is bad enough. I don't believe I have ever seen any company prescribe what tools you could use to compile on their hardware. But what Apple is saying here is even worse than that.

The key is where they say "Applications must be originally written in Objective-C, C, C++."

Take a pause and think about what that "originally" really means.

Developers are not free to use any tools to help them. If there is some tool that converts some Pascal or, Ruby, or Java into Objective-C it is out of bounds, because then the code is not "originally" written in C. This is akin to telling people what kind of desk people sit at when they write software for the iPhone. Or perhaps what kind of music they listen to. Or what kind of clothes they should be wearing. This is *INSANE*.

Steve does not want to allow Adobe's tools to be able to generate compiled code for the iPhone. But with this additional twist he doesn't even want Adobe to be able to generate objective-C which is then compiled by *Apple's* tools. The ridiculousness of specifying the manner in which one writes their code is hard to overstate.

My point is simple. It is perhaps reasonable to specify the nature of the programs that can be sold in the AppStore. It is not reasonable to specify how developers create those programs so long as the end result meets the specified end result criteria.

If you need to "originally" write your code in Swahili, while listening to Milli Vanilli, while reclining in a patch of mud, and then you need fifty oompa loompas to translate the Swahili into C, that is none of Steve Jobs fucking business. And the idea, which I am sure is actually the plan, that he will inspect application code to figure out what the "original" language is that the code was written in is just plain pathological.

172 comments:

I agree from a theoretical standpoint- in that respect it's pretty heinous. But there's a practical angle that seems bit more sympathetic. There are already 185,000 apps. The noise floor is getting pretty high, and there's already a problem with massive "shovelware" producers dumping dozens or hundreds of apps into the store.

With a burgeoning platform, and now the iPad on top of this, I think Apple is starting to get afraid of the app store turning into a carny of sh***y apps- and having to look at & approve every single one.

Insisting on writing in Apple's preferred environments raises the threshold. As Hacker News put it in the link Gruber posted:

http://news.ycombinator.com/item?id=1250946

>>>>In my experience so far with such "cross platform compatibility layers," they always produce results that water down each platform's individual strengths and differentiations. And of course, instead of the developer being locked into the phone platform, they are locked into the compatibility layer's platform.

>>>>Adobe's Flash compiler is a classic maneuver to "commoditize your complements," as Joel put it so well. Apple don't want to be commoditized, especially if it means having apps that don't take advantage of the iPhone's strengths.<<<<

The weird thing here is that in a way, the iPhone OS might be seen as too successful. While other platforms struggle for 3rd-party developers, Apple sees its app store filling up so fast that talented developers are increasingly challenged to get any attention. Now, with iPhone 4.0, developers even have a super-simple way to add advertising to free apps, and I can see Apple dreading a flood of crappy ports. Not to mention weekend Flash developers overwhelming Apple's app approval team with countless me-too apps.

If you want to put the brakes on a bit, what better way than to insist that developers use the tools that maximize your platform?

Oh- plus, Apple hates Flash. ;-)

Again, philosophically heinous- but not without a perverse but potentially defensible angle as well.

Kim Hill, Apple could just demand higher quality apps and disapprove lower quality apps. There's been a number of cool apps made with Unity3D (check out the Star Wars trench iPhone app made with Unity3D) and those apps will now be banned under the new rules. It seems to be completely a business decision on why Apple has done this, nothing to do with quality.

Trying to protect application hegemony in this way doesn't make a heck of a lot of sense. Apple will seriously have to loosen up to maintain the integrity of a cracking surface hipness for the Apple brand. The Apple backlash gradually mounting on blogs and sizzling screens everywhere is due to an evil Emperor sending "destroy" signals to jailbroken iPhones--and now this unfriendliness toward developers--is not helping Apple consolidate control over its snazzily-designed products so much as give Apple's hardcore techie base and cheering section the creeps.

And the idea, which I am sure is actually the plan, that he will inspect application code to figure out what the "original" language is that the code was written in is just plain pathological.

Unfortunately, that's something which can be done automatically, by examining the binary.

Apple already has a static analyzer that looks for calls to private functions. (I actually think this is a good thing, because it means unsupported is UNSUPPORTED, and Apple can improve the platform more quickly without the burden of legacy support.)

Translation tools have a certain pattern in the code they produce, and computers are experts at matching patterns. The same, decades-old, technologies that detect the pattern of a virus in a program can detect the pattern of a translator.

This also affects Unity3D which is also used to create great apps for the iPhone.

@Kim_Hill if quality & appstore crap-flooding is the problem, then Apple should screen just for quality. Dictating that you limit your toolset limits your productivity, creativity, and the potential for new & fantastic apps on the appstore. This is just plain draconian policy-making from Apple.

It's the The Appstore & Apple customers that lose out with this new direction.

I was originally afraid of the April 13 flood of match-3 and Justin Bieber Jigsaw puzzle games into the app store, but now I am just angry. They should worry about the quality of the apps, not the language they are written in. Objective-C came from Jobs and Next, so it is no wonder he grapples on to like a 3 year-old to his mother's leg. It would be better if he chose Unity as the official iPhone app language. Plus, I have been in the CS5 beta program from months now and apps have to be highly optimized to compile correctly, This would eliminate most of the crap right away.

@Kim Hill: Oh no! Too many apps, too much choice, too much to censor, sorry "approve". We have to stop this evil shovelware now!

I know, Apple could solve the whole approval problem by introducing a new concept called "freedom", where people just get the apps they want from the developers website, instead of through the frickin' App$tore.

You're a fucking moron. "Originally written" means that the code that is compiled must be C, C++, or Obj-C. Code generation is perfectly allowable. You just can't compile directly from Lua to an iPhone App, or from C# to an iPhone App.

They won't invoke this term against apps transcoded from any language... except Flash. Those will be categorically banned.

The clause is written this way because Apple can't state: "App Store applications cannot be originally written in Flash." That would blow the thin cover they've laid for themselves, draw public ire, and attract the interest of the DoJ. Instead, they've drafted a broad, blanket rule that *includes* the more specific enforcement that they'd like to achieve - without the unpleasant side-effects.

As an added bonus, this also gives Apple an ironclad excuse to exercise arbitrary control over a whole portion of apps that were otherwise untouchable. I expect the "your app wasn't originally written in..." excuse to be invoked for apps that Apple wants to remove for its own business reasons, but that don't directly violate any of the other ToS.

I don't know if this makes any sense...but if Adobe's tool converts the code to Objective-C first...why don't you just copy and paste that into Xcode and then it was "originally written" in Objective-C...you would just happen to be a very strange coder.

I seriously dont understand why people complain. Just dont buy apples products and dont develop for their oses. Just switch to android and be free, stop feeding the ones that tries to limit you. The fanboys and other that enjoy being buttfucked by apple and jobs just take it and shut it, you have a choice.

From a marketing point of view, they try to guarantee that each application is made for iPhone and only for iPhone, and that you won't find them elsewhere! A dedicated app means a total optimization for the performance, for UI, and that you won't be restricted by any abstraction layer!

The market is with Steve Jobs... The main target for mobile app is iPhone actually! He would like that the developpers work exclusively on iPhones! And to remove the facility to developp the same app, on iPhone/Android/WM

I feel for you apple guys, I switched to android and am loving it. You guys need to Google "Steve Jobs Underwear" and preorder seeing this will be the next insane demand made by your chief dictator. The underwear will have to be synced to your iphones so when "unapproved apps are detected,you get a firm swift kick in the bag. When Flash is detected, kiss your jewels goodbye!

Apple != Steve Jobs. He has not some crazy recluse scheming and pontificating from some secret office. Shrewd business decisions like these can and probably do happen at levels lower that Steve. He is in charge, yes. But making and approving every single decision and policy? I highly doubt it.

Actually this is really simple. Regular people don't really care about these rules Apple imposes on developers. They are happy happy in their walled garden, spending a lot of their money on apps and just being happy with their shiny toy in their beautiful garden.The "problem" is that Apple has a huge user-base of happy happy clients and the revenue stream for a developer is significantly higher than in the other "free" environments.This is why developers, while constantly whining about the stupid rules imposed on them by Big Bad Apple, still continue to develop apps for this incredibly restricted platform.tl;dr: It's all about the money.

Iphone ,ipad and ipodtouch still constitute a very small percentage of global internet accessing devices. Although Apple is The-Autonomous-Authority that runs the appstore/itunes econosphere, their say over internet users/developers worldwide is infact , negligible .

A good example will be India, a huge emerging market.India is #2 in total wireless mobile connections and #4 in internet usage .Still,Apple has sold less than 4000 iphone 3G in the country.3GS was released just a week or so back in the country. There is no reason why a local Indian portal to should ever migrate their existing flash content to some other format that plays on Apple mobile devices.

I dont think Apple policies can kill Flash any time soon. Apart from this, HTML5 implementation is far from cross-browser compatible as of now( File API implementation ). Flash is going to be around for a long time.

Seriously, you guys are over-reacting. First, this is for the beta only. TOS is subject to change when it gets to final release. Second, this is yet to be definitively interpreted by someone who has specifically discussed the meaning with Apple. Right now, most of the uproar is based on interpretation in a vacuum - no Q&A with Apple.

BTW, I've read somewhere that Unity 3D is not being excluded by the terms.

Apple's move might block a new revenue stream for Adobe. But if Adobe stops supporting the mac platform by not releasing its future production tools for mac, Apple will be fucked big time. A huge chunk of Apple users are designers and developersd who depend on Adobe tools like Photoshop,Dreamweaver,Flash Builder etc. Without these tools for mac, they will miigrate over to PC land and obviously Apple will be hurt BIG TIME!

I doubt if anyone here is an "Apple guy". I am happy enough with the decision as I am an Objective C dev. And indeed, if people do not like Objective C they can program for something else like Android. I wont because I dislike Java, hate Eclipse, and find the simulator on the Android platform to be shite.

So it goes. I think only Java works there. You need to compile to the virtual machine. On Symbian, people use the Symbian OS.

So angry flash developers (lol) will move to Android. Leaving the field clearly for me.

Sounds to me like Apple doesn't trust Adobe's conversion tool, and doesn't want to have to deal with support calls related to apps created using Adobe's Flash-to-nativecode conversion tools. That sounds like business as usual for Apple; they've always had a chronic case of Not Invented Here syndrome.

I think the important point here is that Apple already sells computers where everyone is welcome to write code in whatever language they like. What the author misses is that the iPad and iPhone are not sold as computers, but as appliances, more akin to a game console where developers ARE dictated on what to use. What makes Apple's appliances any different than a PSP, a DS, or an Xbox?

Its funny to see that people still believe Apple's quality argument. This has nothing to do with software quality.I mean how naive/blind can you people be?Corporations are _always_ about profit, no exception. With this rule you can only write an app if you own a mac -> more money for Apple.

They can implement whatever draconian rules they want for their product. I am thankful for alternatives such as Android.

But this "originally written in..." can be interpreted pretty extreme. In if you are signing legal agreements, you want to consider possible extreme literal interpretations.

Did you write any design documents? Are any of the implemented algorithms originally described in any publication anywhere (that includes more description than just a source code dump in one of the approved languages)? When you wrote the code, at some point did you put a "TODO" comment block describing some operations or enhancements that were implemented later? If you have done any of these, then portions of your app do not satisfy this requirement.

Totally not a programmer here - just a random blogger clicking on an Alexa link.

This ToS change strikes me as the same sort of thing used by too many other companies - if we think you're benign or not a problem, you'll get a pass. We CAN enforce our own rules if we want, but we don't have to. At the same time, the legalese now exists so that if they want to exclude an app they don't like (that happens to fit their criteria), they now can.

If you're the average coder making an average program that does an average thing (e.g. non-Flash, non-company-or-thing-Apple-hates), is Apple truly going to care?

I don't think you can say they're worried the App Store is getting full of crap apps and that the noise ratio is too high. Take a look at the iTunes music store, there is so much garbage in there but they don't care. The top apps will still be top apps and Apple will still take payments from publishers to push an app as recommended or "hot". They'll simply use this clause when a publisher does something they particularly don't like and they can force subserviance on them via the rules they agreed to for playing the game.

I think the reason for that line is to prevent developers from using some tools that can equally produce iPhone OS and Android applications. Apple wants to lure developers onto their platform (and rewards those developers decently well for making that choice) and keep them there. If I could create a game that worked equally well on iPhone or Android that's good news for me, but it reduces iPhone OS from a platform of magical wonderment to just another PC OS. This language gives Apple an out for booting your application if it's cross-platform.

I am not a developer but I was seriously thinking of switching to Mac (Powerbook Pro) and also looking at an iPad and maybe Apple TV. I currently use Ubuntu/Linux and I like being able to customise my system and I like the open-source philosophy, but was considering making the switch so I spend less time tinkering. But Apple bothers me. They make great stuff (I love my iPod Touch) but this latest move with the iPhone OS4 just pisses me off. The more powerful Apple become, the worse it will get. I am seriously re-considering and am now looking at other options.

Judges and juries will ultimately decide the meaning of "Originally written". Would you want the question of whether you lose a jury trial decided by 12 people off the street deciding what originally written means? The folks in the jury box don't usually know much about compilers and translators and the differences between the two. Oh, they don't know what a Turing Machine is either. I'm glad you grock it all, but good luck when Steve sues you.

There are actually already apps on the Apple App Store that were generated using Adobe's method. One is a South Park avatar creator and a couple of others. One thing they do all share in common besides the compiler approach, is that they all perform astonishingly horrible. Far worse than any 13 year old's first attempt at Obj-C. As someone pointed out before, this will probably only be applied to apps ported from ActionScript, not from Ruby, Python etc etc... and for a good reason too. The results are extremely sub par.

I wouldn't say this is as simple as an Apple hates Flash statement. It's an Apple hates having to support horrid platforms (I'm a Flash Developer) owned by companies who have not done nearly enough to improve their products. I mean Flash still doesn't have proper vector engine, FXG is a start but they don't seem to be pushing any more adoption or usage strategies.

From http://whydoeseverythingsuck.com/2010/04/steve-jobs-has-just-gone-mad.html?showComment=1270772987754#c852689160192295216

"There are already 185,000 apps. The noise floor is getting pretty high, and there's already a problem with massive "shovelware" producers dumping dozens or hundreds of apps into the store."

I agree there is a lot of shovelware, but it's not an AppStore-specific issue. All platform ends up having some less-than-remarkable softwares (especially if the applications are made by an open community), but it should be to the end-user to choose what is worth it or not.

They still can list the most popular or highest rated one and let the masse tell what's good or not.

Everyone seems to harp on "apple should just worry about the quality and not how it was built"...one questions...how do you objectively measure the quality of the app? The way is was coded or the quality of the game play, or the quality of the UI? Quality is very subjective. And we have all heard the stories of "apple rejected this app or that app for no reason". Well this will allow apple a some objective measure for rejecting apps. Is it fair...well unfortunately life is not fair. Will apple suffer? Who knows, when you have 185,000 apps, it appears a heck of a lot of developers want to be on that platform and not Android.

So instead of complaining about this...I just decided to learn objective C...those are the rules, it is usually easier to follow the rules then spend all the time trying to get around them.

Plus anytime you put a layer between the software and the hardware there is degradation of some sort...its like putting a $30 UV filter on a $1800 lens....

I used to work for apple supporting the iPhone. I always said Steve Jobs was the devil! I hated listening to all the crying iPhone owners about how Flash would not work and they (apple) kept telling us to tell the users that "adobe was working on a compatible version" BS as is all of Apple's BS.Sniper Games Online

Flash is terribly slow & buggy. Flash makes a 3GHz quad core machine run slower than an 8MHz 16 bit CPU from 20 years ago! Flash is also closed & the clients they make for OSX and Linux are always late and buggy.

Historically, Apple drove Adobe's success but now Adobe focuses on Windows development, sometimes leaving documented bugs in their OSX clients for years.

Adobe is the guy that drinks too much and throws up at every party. Eventually, people stop inviting you.

Or you could just JAILBREAK your device and use it however you want ... considering that you OWN the device after you purchase it, and since the rules are getting increasingly draconian ... just jailbreak your iPhone and use the apps that you want. There are already thousands of apps in CYDIA and ROCK that were not officially accepted in the APPSTORE. I think it's great, because it will force the average consumer to be more technical in order to be able to JB their iphone. Apple may not realize it, but this behavior will GUARANTEE that more people move towards the jailbreak. I think it's a GREAT move for the underground movement, but really it's a shot in the foot for Apple. www.modmyi.com, www.tysiphonehelp.com. It's not hard.

This is not new in the Apple way to do business. But what is amazing are the results, it seems to me like apple shoots his own foot.

Not long time ago, when the personal computers were booming and the Mac was young and the PC+MS-DOS/Windows were just a joke, one of the factors that differentiated the PC+MS-DOS/Windows from the Mac was it's the diversity of software, developers, solutions, and games that you could find in the market.

This gave Microsoft the advantage over Apple and it will happen again.

Microsoft and Linux/Unix have create more jobs than Apple.

Apple has always behave like a Niche market product, not oriented for the masses, the way the product is design in a limited sort of way, it's a great product, very innovative that in the end will be in few hands.

This will give other companies to compete and give us better options. Please don't get me wrong, iphone, ipad, or the iwhatever are great products, but Apple business strategy has been more monopolistic mind than Microsoft or Google.

It's commonplace in the game industry to control tools for writing apps for consoles. Lots of studios make games for Nintendo or Sony or XBOX hardware, but they can't do anything they like, they have to use approved tools.

This is from the same company who gave us a proprietary format for music downloads. No one should be surprised by this. Apple is the real monopoly, and they have been playing the victim and all the moron fanboys have been swallowing it. When are you gonna wake up and graduate college? Apple's been screwing you for years. If you think I'm wrong take the battery out of your iPhone/iPad/iPod in under an hour.

I thought the "free market" system is what's supposed to fix this. Shitty apps sink to the bottom if you have a good system of categorization like user ratings and download counts.... Look at the amount of shit on facebook, yet the best games still get played a lot....

This may or may not have an adverse effect but apples legendary loyal fan base use adobe. They pissing on the hands that fed them. We'll see how well that works out. This flash developer/ 18 year apple user will concentrate on android and buy a PC next time.

Flash was Macromedia's (closed) baby until Adobe purchased them in 2005, and in 2008 the specifications were released and Adobe began removing the restrictions that prevented other players from implementing their own players. This fits in with Adobe's prior history, having released PostScript in 1984 and the Portable Document Format in 1993 without any license restrictions.

Well said!!!!!! It is incredulous to see a very creative company squelch the very creativity that has inspired so many great apps for the iPhone. I loved Adobe's very sane response to a company that appears to becoming the bully on the playground.

All this does is prevent native code not compiled with Apple's tools - that's it. It doesn't prevent you from using a third party generator in order to spew out Objective C based on some other language, but that code must be compiled using Apple's development tools. If Adobe creates a tool that spits out an XCode project there is NO effective way for Apple to prevent you from compiling it.

What Apple is trying to do here is to enforce their ability to openly examine and manipulate the running code processes of your application from within their OS, and they need to do that in order to elegantly handle multitasking the way they want to. If you write a web application in JS and that application is running inside someone else's implementation of a native wrapper, executing calls to native code functions through some proprietary format that you invented, they can't do that. While I agree that this is a pain, I don't see this being the terrific slap in the face many people take it to be.

If you need to "originally" write your code in Swahili, while listening to Milli Vanilli, while reclining in a patch of mud, and then you need fifty oompa loompas to translate the Swahili into C, that is none of Steve Jobs fucking business.

-->You brought tears to my eyes...Finally someone telling it like it is! Keep your nose where it belongs Steve Jobs!

I ditched the iphone as soon as the nexus one was available in canada. I was able to download the SDK and have a working app that I could install on the nexus in about 2 hours. (/After about 2 weeks with the nexus, I popped back on the iphone to check something out... it felt so fisher price, like "my first smartphone"/) Go go android!

IIRC the FSF has been warning developers about the potential for this kind of thing for years - basically from the moment it became apparent that Apple were positioning themselves as software gatekeepers for the iPhone.

How is this kind of thing any surprise to anyone?

Ironically, and I'd never thought I'd be saying this, but Microsoft Windows is a much more open, much more attractive platform than iPhone / iPad now.

Generally, I think this is not so good, but think about platforms that require software to be loaded via a cartridge. Those are wholly and utterly closed systems. And they are subject to rules not much different than this. You pay the mother ship to be allowed to develop… and worse, they are very selective about who can even *become* a developer, much less the hoops they must jump through to actually develop.

Apples not used to to having very many people want to write software for they computers. They want to exercise the same type of control they exercise with their hardware. This is why business on a large scale will never adopt them, but maybe that doesn't matter.

Reminds me of the early 90s when Borland dominated the compiler market and Microsoft disallowed Borland-compiled programs from linking to Microsoft's UI libraries, forcing all Borland-compiled programs to use a non-standard UI, killing Borland's marketshare.

As a console developer, I can say that this is not like consoles at all. There's nothing stopping Adobe from writing a Flash compiler for a console, as long as the final application can pass their approval process. In fact, many AAA games have their user interfaces built in Scaleform, which is Flash based!

The biggest impact this will have is maintaining a comparatively high cost in developing iPhone apps. A game designer/artist with very little scripting experience can develop a groundbreaking game in Flash. This is not possible with the current development tools.

90% of programmers were hostage to Microsoft for 20 years. .Net and all that crap. Everyone happy as a clam to be certified by the monopolists. Meanwhile intellectual and musical property lost all value. Apple comes up with a store structure that returns value, a qualIty platform and a humane interface. And moves to protect that. And that's insane?

What you fail to take into account is that Flash-generated mobile apps break under 4.0. Although this seems draconic, it is not arbitrary. Flash-generated applications are teh suck. They are slow and memory hogs, and now they are incompatible with the multitasking APIs in 4.0. Let's not even get into the fact that Adobe used private APIs in their iPhone packager.

So, to say it's none of Apple's business is just wrong. If there were 5,000 Flash-generated iPhone apps on the App Store instead of 5, who do you think would get the blame when 4.0 comes out and those 5,000 apps all broke? Users aren't going to know which apps were created using Flash CS5. To users that would reflect on Apple and the iPhone, and that's what Steve doesn't want. Believe me, it's not about you, or Adobe.

This is perfectly consistent with Steve Jobs. If he could control everything, he would. If you think this is out of character for him, you don't know him very well.

"If you need to 'originally' write your code in Swahili, while listening to Milli Vanilli, while reclining in a patch of mud, and then you need fifty oompa loompas to translate the Swahili into C, that is none of Steve Jobs fucking business."

There are some valid possible reasons regarding multitasking and power management for not creating insulated, monolithic "black box" environments on mobile devices. I left my Blackberry because most apps destroyed battery life, locked up the phone and generally turned it to unreliable crap. Microsoft is abandoning multitasking altogether for Windows Phone Series 7 because Windows mobile 6 has become such an unreliable mess. Given that is it really safe to assume Apple's defensiveness of the reliability of an iPhone is madness?

Given Adobe's reputation on the Apple platforms, this was something that should have been done a long time ago. Every product that Adobe touches turns into a bloated, Swiss cheese mush with security holes larger than an iPhone.

I actually welcome this censorship.This is my phone we're talking about here.I want some sort of police looking out for performance, consistency, and security. I have sensitive information stored on this device and Flash is not always secure. Besides, the last thing I want is the same crap that has always slowed down my Macs to slow down my phone, too. Adobe has had *plenty* of time to work with Apple and they have been lazy over the last decade. Flash has come a long way, yes but it's still obtrusive and slow. If you want Flas, go with Droid...and get a cassette tape deck for your phone too.

So lets see, if you are an iPhone dev and you complain about the rules, just remember, you wouldn't be making any money out of iPhone if Apple hadn't developed the product .... so stop bitching.And if you aren't an iPhone dev, and you complain about the rules, its kinda irrelevant .... so stop bitching.

If this declaration came from Microsoft it would cause a public outcry that you could measure with a seismograph. Apple fanboys make me laugh. They speak with both their mouths and their butts at the same time and cannot tell from which orifice the words come from.

Didn't Microsoft get slapped with an anti-trust suit for retaining private APIs that gave their own products an advantage? Aren't there now clear grounds for an anti-trust suit against Apple? They might have to defend themselves by declaring that Android-based phones are credible competition.

Apple is starting to go down the drain because competition is catching up (Android, WinMo7 - the kind of players you can't fight a patent war with).

So prohibit people from using cross-platform development tools, so other platforms don't have the same cool apps (since Apple has a lead of 150K apps....)

This is panic tactics in its early stages. MSFT in the 90s, Sony (walkman with weird connectors) in the 80s....

Apple should focus on staying way better (offensive) in stead of being restrictive (defensive). It's always fun to see a company pushing itself in the underdog position over a 5 year timeframe (as in, starting this week).

For those who defend Apple's actions, stop sucking up to Jobs' balls! This is no different from say Microsoft's anti-competitive measures back in the day. Let us call a spade a spade.

If Apple cant manage its App Store, there should be legal alternatives to Apple's own AppStore. You cant lock users to a controlled App Store and also control what enters the store and *how* it enters.

It is time the FCC or some monopoly investigating agency take a real hard look at Apple's business practices.

The point that I find incredibly sad is how little this will matter, except to Adobe and the Flash CS5 developers. They spend time, money, and talent developing a feature that's been killed out of the box.

Yet consumers love the IPhone, and they don't know nor care what language their favorite apps might be written in. And developers want their apps in the hands of those people too much to take an idealistic stance against Apple.

This is just typical "Apple doing what's good for Apple" behavior. Their behavior is despicable but not surprising.

What this should mean is that Adobe delays CS5 because of this ... which it then uses this as an excuse to delay CS5 for the Mac *indefinitely* (i.e. until captain arrogance realizes isolationism is a recipe for failure).

See how many Mac users are left when Photoshop/etc. are forced to use Windows (at a cost of what, 5-6% of the marketshare). It's not like Mac can claim unfair business practices; the lawyers would have a tit-for-tat field day.

Supid stupid stupid stupid. Adobe (which will have browser-based flash running on seven other smart phone platforms in the coming few months) can easily fight back, and have their cross-compiler generate 'original' Objective-C sources as one of the cross compilation steps. But it would be better, I think to simply provide an easy method to jailbreak all of the iphad variants, thereby enabling users to utilize 3g tethering, flash in a browser, non-iTunes/iBook content, real multi-tasking OS features, etc.

So, thinking a bit more calmly about this, I think there are two possible ways that this particular clause in the ToS can be interpreted in my opinion:

1. Apple is disallowing tools that automatically generate native binaries for the iPhone OS. The binary is the end product.

2. Apple is disallowing code generators that allow programmers to not have to worry about learning Objective-C but allow them to program in higher level languages like Ruby and Python which will then spit out Objective-C. The end product is the Objective C. The user of the code generator will then take the Objective-C code, optionally optimize it and then compile it using Xcode.

Now, given these two interpretations, I have different opinions about them depending on which hat I am wearing:

(a) As an iPhone developer, I would personally want to create the best app experience (which includes speed) possible for my customers and I think that the combination of Objective-C + Apple developer tools + iPhone APIs is the way to go to build that experience. So, I don't have *any* problems with interpretation 1. I would be a bitthrown if interpretation 2 were true but given that I am a priori inclined to use Objective-C anyway, I would not be terribly agitated.

(b) As a Pythonista, I would be very disappointed if interpretation 2 was true. I regularly prototypemost of my research code in Python and then port over the stuff that is too slow to C and then use it as a Python module (effective either via Cython or SWIG). I understand that Objective-C would bethe right way to go but perhaps until I am proficient Objective-C programmer, I might still beable to convert a good idea into an app by using a Ruby or Python code generator and optimize thegenerated code.

Note that I did not talk about whether or not Apple is justified in doing this or whether or notthey are shooting themselves in the foot. All of that has been exhaustively discussed on the webalready.

I don't muh care for Flash and I have it blocked so that I have a more enjoyable internet experience. If Apple is introducing multitasking and FlashCS5 screws with this new iPhone experience, then I don't want such an app on my iPhone.

As far as Adobe's CS5 apps are concerned, well, I know loads of professionals who haven't even moved from CS3 to CS4. The UI on all these apps is too WinPC, every app is bloated and puts all sorts of files across my System and User folders.

Apple (and SJ in particular) are not stupid -- neither is Adobe. Apple killed Premiere on the Mac with FCP, and is quite capable of doing the same to InDesign, Photoshop, Illustrator.

Ask Adobe why it decided to kill Freehand, which was far more intuitive than Illustrator will ever be?

As far as Flash is concerned -- it is proprietary software, its share runs at about 98%, and THIS is what the DoJ should be investigating. Apple has reported over 400 bugs in Flash for OSX to Adobe, and only some 25 (6.25%) of these have been fixed.

As a producer of developer tools based on both the Pascal and C/C++ languages, I find these new restrictions most disturbing. The Pascal (aka. Delphi) compiler is a high-performance native compiler. IOW, it compiles from the source code (the text I write) down to native machine code (the bytes that the machine CPU understands). There is no interpreter or intermediate layer. In fact, most of the time the Pascal code I write will perform as well and sometimes far better than equivalent C/C++ code. By the wording in this agreement, we could not modify our compiler to generate CPU instructions for the iPad or iPhone CPUs because the code written would not be "originally" in Objective C, C or C++. Even though there is *no* intermediate step between the Pascal [Delphi] code and the CPU instructions!

I understand the locking out of Flash, .NET (MonoTouch), Python, Lua, etc.. since they all sit atop a relatively heavy-weight runtime. However, there a many other computer languages out there that *do* compile down directly to CPU instructions and don't require a large heavy-weight runtime library.

Oh, BTW, C/C++ *does* have a rather large RTL if you count things like the STL, Boost, and the myriad of other available libraries. So this whole "intermediate layer" is a specious argument at best since it can equally apply to using an STL map or dictionary template class.

Wow alot of Hate for Apple here, but I for one I'm sticking with them, Apple been's better to me than Adobe has.

Any Mac user know that watching simple flash videos on youtube takes 120% of a Quad core machine, why is it that Microsoft Silverlight runs @ 25% to 30%. I find it amazing that Microsoft can get silverlight to run well on a mac with the same tools that Adobe has. How about VideoLan how did they get Hardware acceleration for VLC player on the mac? good question with the same tools that Adobe has!! Adobe is lazy.

As for section 3.3.1 I find it crazy that this is even blown out of proportion. Anything Apple does is, even when they release simple updates there simply is no need. Lazie Adobe thought they could just work around Apple's tools and Apple would let them...hahaha I mean where else does it happen when you put years of work in and another company can just try to side swipe you with their development tool and try to over run everything you've built. I mean would Adobe like this if the shoe was on the other foot?

I don't feel one iota of pain for Adobe!! terrible customer support for one thing lead me away from Adobe. I bought several IT book pdfs and it used that stupid horrendous piece of crapware Adobe calls Digital Editions! I've never seen such incompetence before in my life.

All their phone support was in India so I was never speaking to someone that would solve my problems immediately and then when it came to emails 2 to 3 days to respond. To make a long story short, 4 months went by and guess what it never got solved, Adobe updated Digital Editions and my books still told me, I didn't own them. Can you imagine spending $300 on books only to find out they were all glued together and you cannot read them because Adobe cannot even figure out a problem to their OWN software!! You want to talk about walled gardens? After 4 months of "troubleshooting" I called peachpit to see what could be done, I got 50% back and ordered Physical Books. Adobe & I were done.

I used to be an Adobe FANBOI! and I built & designed flash website for 4 yrs with my best friend (until I switched careers to IT), CS1 & CS2 were alright (but still based on carbon) when it came out for the most part worked fine except bugs took forever to be updated. I scripted AS1 & AS2 and gave up on AS3 because it broke all my code from AS2. Then came cs3 and HOLY CRAP WTF?? did they even use it before releasing this software?Does anyone remember an adobe update breaking MAC OS X print engine?the only way to fix it was to install Adobe Reader 9 on top of Acrobat Professional? ohh lawdd WFT!

or how is that InCopy CS3 which is a glorified MS Word weighs in at > 500MB and takes half an hour to install on a C2D with 2GB of ram? and this is a brand new Dell box, not even a mac, one word SAD!

How about Adobe reader? talk about bloatware 185mb application to read 2MB pdf? (by the way preview.app default pdf reader in OS X can do everything reader can + can join multiple pdfs for FREE!! and it's only 35MB)

Maybe these are things that apple saw and lead them running in the other direction and I for one don't blame them. My WIN7 box & my new iMac don't have 1 single piece of Adobe software on it. I no longer create content but I deal with users who have to put up with Adobe crapware on a daily basis, trust me not fun at all.

consider the lackluster but insanely overhyped iPad, these additional anti developer restrictions, no real innovation seen from apple for quite some time despite serious advances by competitors in their marketspace.. and maybe more telling, the anti-apple attitude of the majority commenting on seemingly every apple related article in the past couple weeks. have the winds shifted? interesting times ahead.

Most iphone and now ipad related marketing campaigns are showing apps developed by third-party tools. If this specific 'clause' in the new TOS is enforced then the Apple corporation is committing a criminal offence by false and misleading advertisement.

Have winds shifted? Who gives a fuck if developer winds blow north, south or under the fucking table. Developers have no say in this matter.

There will always be developers for any given platform that has attracted any reasonable userbase. The iPhone/iPod/iPad is way beyond the point where "blog comment winds" matter the slightest bit.

And, even so, of course you only see negative comments. Who's more likely to post an entry or comment, a man with strong opinions countering status quo, or a man agreeing with the ways things are done?

You can't measure anything by what the average comment is saying, the only deducible measure is "how loudly is crowd X flabbing about their opinions"

Something I haven't seen mentioned is that Apple hasn't enabled garbage collection for Cocoa apps. Probably they are of the opinion that garbage collected apps tend to have a larger footprint than hand-coded collection, even though it would probably work, and developers I'm sure would like to have it.

But if developers start using other tools like Mono-touch and C# and various garbage collected languages, they are in effect turning Apple's decisions on their head in things like this. This is the kind of thing Apple doesn't want.

To those people who think they're going to get around this provision by using some tool that spits out objective-c, sorry you're just plain wrong. Apple is perfectly capable of finding out what you used. Any language you use is going to have some kind of runtime, and in the worst case, if you strip all your binaries and so forth, Apple can still look for the binary signature of commonly used runtime code associated with various generators.

How they are going to enforce it is another thing though. If EA plans to port some world famous game that happens to be written in something else, I can't see Apple enforcing it. Something tells me that most of those games are probably already written in C and Open-GL though.

You might disagree with the new TOS (freedom of speech and all), but to castigate Apple and Steve Jobs, and not understand the reasons for such a move - frankly says more about you than Apple/Jobs.

Apple is running a for-profit business. The premium that Apple products demand are based, in part, on the quality and the exceptional user experience. There's nothing that says a intermediate layer has to follow the precise Apple User Interface Guidelines, and match Cocoa components one-to-one. This will depend on the quality/functionality of the intermediate layer which is not under Apple's Control. Leaving it up to a third-party to define this for your platform is about as ridiculous as some of the arguments I've read above.

The barriers to developing for the i-"products" are very low. There's no excuse for not learning Objective-C if you want to participate in the Apple eco-system. If you don't, then let it go, and move on.

Android might work for you. Stability and other issues will be the least of your problems, but you'll have lots of freedom.

You're dead wrong. Developers make or break a platform. Without developers, there are no applications and without applications, even the shiniest platform is utterly worthless to its users.

Giving away free development tools is no longer enough incentive to attract developers to a platform - because every platform on this planet nowadays has free development tools.

Google made a smart move when they chose the most popular programming language, Java, for their Android platform.

Microsoft made an extremely smart choice when they went beyond Sun's approach of "one language for all platform" (Java) -- Microsoft made .NET "one platform for ALL languages". That's the ultimate killer argument for .NET, because it gives developers real freedom to choose the best tools for the job.

Now Apple tries to push developers into using a language, Objective-C, that is only of relevance in Apple Land. Nobody else except for Apple uses it.

Furthermore, Apple is going to say that they don't want cross platform applications on their devices.

They want to own it all: The hardware, the software, the customers and the developers.

Steve Jobs has been around long enough to know that this approach never worked. He did it before and it almost killed Apple.

Still, he doesn't seem to learn from his own mistakes.

It also seems that he hasn't seen the numbers on how fast Android grows. Pushing even more developers into the camp of his competition is the stupidest thing he can do right now. But that is exactly what he is doing.

It's the Windows vs Mac "war" all over again. And we all know how won it.

Anonymous said: "there is already a platform for building apps in a Cocoa Touch-free world" . This shows the apparently common misconception that using some "foreign" language (or "platform" even) would also mean using some other GUI toolkit. That is not the case at all for MonoTouch for instance. MonoTouch programs use the normal CocaTouch API. No other GUI toolkit emulation or whatever is involved.

Thanks, first, for a great post. Oompa-loompas? I'm rolling...Take a pause and think about what that "originally" really means.

It means, that an Objective-C coder MAY NOT make a sketch, outline, or have any pseudocode either in mind or on paper before he sits down to his keyboard and starts typing; otherwise he will be using his own brain as a "third-party translator."

Speaking of which ...Do the chips in the USB Bus, keyboard, and mouse also have to fall under the license, since these translate keystrokes into bits recognized by the Mac CPU before being committed in Xcode?

First off, let me say, I am the farthest thing from an apple fanboy. In fact, I pretty much hate apple....I steer people away from macs all the time as they are overpriced, and the stupid shared menu system that fragments application design really isn't all that intuitive, or "easy". Like I said, feel free to disagree, but it has confused so many people...I also hate objective-C. Its pretty clear why it did not take over as the de-facto OO language. It's hideous, and does not fit with C. All that said, I support this move 100%. Why? We're talking a *MOBILE* platform here people, M O B I L E. In case you havent realized, that also means low power consumption, which is equivilant to lower processing capabilities. So all you java, C#, ruby, python, etc, whiners, your argument of Hardware is fast enough does not apply here! (Which is the typical argument I hear in favor of VM/Script languages vs native languages.) Further, most of you have become so abstracted from your hardware that when I tell you Java is a 64bit MSB, stack based VM, you haven't a clue what that means, nor the effect it has running on the pretty much standard desktop X86 processors (X64 helps somewhat). So its no surprise to see this "outrage". You probably don't know what the iPhone uses, or what effect a VM will have on the platform. All I hear is Java is easy, and thats all I want to work in. Further, I start mentioning the Stack, vs the Heap, and pointers, memory management, direct I/O access, structure packing, etc, and I get all sorts of dazed looks. None of those concepts are too awfully difficult, but totally abstracted by VM/Script languages, and thus, not well understood anymore. Please don't bring up JNI, for Java since you probably haven't a clue about the overhead involved there, and for graphics, you can JOGL me to death, but thats just a lightweight JNI wrapper, with aforementioned overhead. C# being able to compile native is great, but with all the runtime checks, still slower, and the managed calls to native functions is even worse.

I understand the place these languages have, and I'm in no way advocating everything in the world must be native. Web apps are a perfect place for them. No one really cares if there is a 1 second lag time on a web transaction. Other GUI only apps, with no scentific computing, or heavy processing, great, use C#, Java, or some gui interface with Ruby and Python. When you get into heavy processing apps, games, or mobile apps, this is a huge NO! I recently decided to change jobs, many companies I decided to apply for said they were looking for good C/C++ programmers, and come to the interview and find they are looking for people to "Optimize Java for their scientific computing program". Of course right then I realized I did not want the job, and began iterating to them why it was ludicrous that they used Java in the first place (usually words like large data sets, graph theory, and huge matrices were at the core of their processing). These rapid development languages aren't a panacea for the demands of software. They have their place in alleviating the strain, but they have their limitations. Finally, to use the cancer analogy someone else used about the terms of the new license, this is not the cancer. The cancer is the demand for software. These non-native, rapid development, "easy" systems are a form of chemotherapy. They don't solve the problem, and in fact posion the body, but often through great pain, the tumor is destroyed, or the demands of software development are met. Its far from the final solution though.

What I really hate is that no other company takes advantage of this to make a better product. It's f--king frustrating. Just go to the same factory in Asia, buy the same components, make the same product, put your own OS, add to it what Apple's lacks and compete in the market.

Who gives a f--k about not being a original idea... consumers win. that's all we should care as no-shareholders.

Ipad was rumered to go out almost 2 years ago... why do other companies are giving Apple a head start (again) is beyond my reason.

From the aestetical point of view... you compare a MBP to a HP laptop... MBP looks like a better product. You compare an Iphone to a MotoDroid, Iphone looks better. You compare a Ipad to a HP Slate... Ipad looks better. What are you retards? Does Apple own a top-secret underground alien-powered laboratory that allows them to make better products than you?

I love technology. I hate Apple politics. Isn't out there a f--king company that can give me a better product that this?

They say payback is a b**ch, and now is Apple's time to punish Adobe for refusing to develop Adobe products for the OSX platform (1996 development). Adobe definitely made the wrong decision and Adobe hasn't exactly been a fair player ever since. You might say "life and let live," but this punishment should give Apple more bargaining power in getting Adobe to develop for Mac in the future.

Anonymous at 11:28 AM -- your views are unpopular because you don't know what you're talking about. C# on MonoTouch compiles to native AND IT IS NOT SLOWER THAN Objective-C.

This isn't about performance, and the fact that you swallowed Steve Job's crap-dance around the issue tells me you're either a plant or a fanboy, protestations to the contrary not withstanding.

This is about ONE THING: Vendor Lock-in. Apple has looked over their shoulders' at the numbers and they aint good for the long-term health of their product. [Can you say: MotoRazor?]

Consequently, they're trying to lock developers into their product-line. It aint going to work. Why *does* Objective-C suck? Why *is* XCode/IB a dev IDE for the 90's? Because until very recently, there was no critical mass of developers, and hence, no devlopers developing for the developers. All Jobs is doing is guaranteeing that the App Store feeding frenzy is going to be a one-hit wonder. Yes, there will be teenie-boppers who must have their iThingy's, and like the Hannah Montana crowd, in two years you'll be wondering where they went once they could get their hands on a 'Droid.

If XCode/IB was a productive development platform, iMEvil wouldn't need to lock people into it. The fact is that it's crap, and Jobs knows it. The most hilarious part of it all is that Apple themselves don't even know how to write a compiler to compile the code they're trying to force developers to use: it's gcc.

One more note for Anonymous (aka StealthFanboy) at 11:28. Five months ago, all I heard from the iMEvil fanboy community was how it was so very good and WONDERFUL that iMEvil didn't allow multitasking apps on iTurds. It's a - M O B I L E - device. It saves batteries. It's more robust. The 'Droid experience would be *awful* because it allowed mulitasking apps.

Two legs bad. Four legs good.

Now, we hear that OS 4.0 is going to have multitasking. And that's A GOOD THING, according to the pimps who were spouting the opposite line just a few months ago.

sometimes you have to allow tons of bad apps to find the good ones, Firefox was created out of (basically) IE disgust so if Microsoft made restrictions like this we might never have Firefox or even an IE that's (starting) to be usable again. Also seeing lots of crap apps is what it takes sometimes for the good developers (who might not even know they can be) to get off their buts and make something better.

which leads to a second question, is this about "insuring better apps" or the fact that some of the 3rd party iPhone apps (like the tools Unity3D have out there) make the native ones look like kindergarten fodder and Steve is just pissed about it?

I'm hoping this isn't the case and would love a fully detailed response from Steve about this...please Mr. Jobs make me believe again.

Designing developers (a.k.a. deviners) and all kinds of designers like two products and are willing to pay: mac hardware and adobe software.Why? Because they put the frikkin pixel where you want it to be. The six-layered, multi-language, 'compile this and that in this and that' iphone webkit is a mess, not visual and thus no use for deviners. Only for large compagnies with large teams. I guess Apple hates experiments and art just as much as Windows by now. So indeed: " They are pissing on the hands that fed them. "

So 25 years ago, I had a nice little business selling Apple IIs with Z80 cards, and writing custom code for small business. Then Apple said we had to buy 2 Macs and 1 Lisa for say $20,000, if we wanted to continue to develop for Apple. Of course, IBM had a competing machine....where's my Android SDX?

I mean come on, is it really that hard to learn Obj-C? I picked it up in a week while using an entirely new IDE. It's a neat language. Improve your skill-set, people! How is it *less* marketable to add another language to your repertoire?

Apple is the greatest company in the world and will soon put all the 3rd world companies like Adobe out of business. Maybe if Adobe actually made a product that worked, we wouldn't be having this discussion.

It's kind of hard to argue with a $315 stock price when Adobe's is around $25. LOL.

I have been using exclusively open-source and free software, and cracking the few software needed that do not have an alternative (Adobe flash & illy).From now on, I'll be buying Adobe products with real money.Aaaand I will never get near an apple product ever again.Aaaand I will develop exclusively in air for cross-platform, hoping to make a killer app that won't be possibly translated for iphone.

About me

My name is Hank Williams. I have spent all of my professional career making products, including Clickradio, an early Internet music service, and DayMaker, one of the first personal information managers (address book, scheduling, task, notes, etc.) for the Mac.

I am now working on a new data and web development platform that will change humanity as we know it! This is my soap box.