Steve Jobs on SDK complaints: “intermediate layers produce sub-standard apps"

Section 3.3.1 of the new iPhone SDK 4 beta brought quite an uproar among the developer community as Apple quietly prohibited the use of “intermediary translation or compatibility layers” for apps submitted to the App Store. The new provision requires apps to be originally written in Objective-C, C, C++, or JavaScript (through WebKit) when using the iPhone OS APIs. Translation: No more apps made using cross-platform tools such as Adobe Flash CS5, which compiles iPhone apps from Flash.

With impeccable timing as always through his personal email, Steve Jobs finally broke Apple’s silence on the matter through a number of exchanges with TaoEffect CEO and software developer, Greg Slepak. Steve replied to Slepak’s complaints by citing a piece by John Gruber of Daring Fireball initially and then stating that "intermediate layers between the platform and the developer ultimately produces sub-standard apps and hinders the progress of the platform.” 

The new rules have caused a bit of a geek soap opera over the internet. An Adobe Flash “evangelist” told Apple to “screw themselves” and Facebook users have even created a Conan O’Brien-esque “I’m with Adobe” group in response to the changes. Adobe’s CTO, Kevin Lynch, also responded to the SDK changes by stating that there are other platforms outside Apple that will continue to support their products. The MonoTouch team has also released statement saying that they think are in the clear but have contacted Apple requesting additional clarification.

Here is the full email exchange between Jobs and Slepak:

Greg to Steve: 

Hi Steve,

Lots of people are pissed off at Apple’s mandate that applications be “originally written” in C/C++/Objective-C. If you go, for example, to the Hacker News homepage right now:

 You’ll see that most of the front page stories about this new restriction, with #1 being: “Steve Jobs Has Just Gone Mad” with (currently) 243 upvotes. The top 5 stories are all negative reactions to the TOS, and there are several others below them as well. Not a single positive reaction, even from John Gruber, your biggest fan.

I love your product, but your SDK TOS are growing on it like an invisible cancer.

Sincerely, Greg

Steve to Greg:

We think John Gruber’s post is very insightful and not negative:

http://daringfireball.net/2010/04/why_apple_changed_section_331

Steve

Greg to Steve:

Sorry. I didn’t catch that post, but I finished it just now.

I still think it undermines Apple. You didn’t need this clause to get to where you are now with the iPhone’s market share, adding it just makes people lose respect for you and run for the hills, as a commenter to that article stated:

“So what Apple does not want is for some other company to establish a de facto standard software platform on top of Cocoa Touch. Not Adobe’s Flash. Not .NET (through MonoTouch). If that were to happen, there’s no lock-in advantage.”

And that makes Apple evil. At least, it does in the sense that Google uses the term in “don’t be evil” – I believe pg translated “evil” as something along the lines of “trying to compete by means other than making the best product and marketing it honestly”.

From a developer’s point of view, you’re limiting creativity itself. Gruber is wrong, there are plenty of [applications] written using cross-platform frameworks that are amazing, that he himself has praised. Mozilla’s Firefox just being one of them.

I don’t think Apple has much to gain with 3.3.1, quite the opposite actually.

Sincerely, Greg

Steve to Greg:

We’ve been there before, and intermediate layers between the platform and the developer ultimately produces sub-standard apps and hinders the progress of the platform.

Greg to Steve:

The Mac has only been helped by the fact that Firefox, Ableton Live, and hundreds of other high-quality applications can run on it thanks to the fact that developers have a choice as to what tools they can use on it.

Crappy developers will make crappy apps regardless of how many layers there are, and it doesn’t make sense to limit source-to-source conversion tools like Unity3D and others. They’re all building apps through the iPhone developer tools in the end so the situation isn’t even comparable to the Mac where applications can completely avoid using Apple’s frameworks by replacing them with others.

In my opinion, 3.3.1 only serves to make the platform less attractive to legitimate developers, giving them reason to write their software for competing platforms instead.

Thanks for considering this.

Sincerely, Greg

Report a problem with article
Previous Story

Apple removes Google references in iPhone OS 4.0

Next Story

What is Microsoft's Pink and is it destined to fail?

71 Comments

Commenting is disabled on this article.

Hypocrisy again. If Steve Jobs was SO concerned about crappy applications, why don't enforce that all applications have a trial mode? But no, instead, they have no trial and if you return the app they still keep a 30% 'commission'. Yes, that is 30% of all crappy apps that people don't like, so not only they don't care about crappy apps, they profit from them. Shame, Steve.

In that case, Apple need to make iTunes a proper, first-class Windows app instead of relying on intermediate layers to make it work.

HTML5 (+CSS+JavaScript) is the largest "intermediate layer" that there is... why don't they remove Safari from the iPhone then?

I just hope that Apple goes out the same way as 3dfx with their Voodoo cards, Apple is making the same mistakes as 3dfx did, getting arrogant and making the developers angry.

With the market share the iPhone has currently, I really doubt any serious developer would neglect the iPhone and write for other platforms instead. I actually get Steve's point and when an app is written natively it will usually be more stable and more integrated with the OS (the latter is a really big deal). Also with the APIs they announced with 4.0, iPhone-specific code will be required or else the app will be crippled (e.g. true multitasking can only be done using Apple's own APIs).

We'll see how this pans out.

dagrimdialer619 said,
Yeah. Let's see them make Firefox in Flash.... I need say no more.

You may not understand exactly what the Adobe Flash to iPhone compiler actually does.

It doesn't run flash. It actually turns the flash into native iPhone code.

Julius Caro said,
Let's ban itunes from windows.

no please dont, as much as itunes suck and should be named isync as that is seriously the only thing you should use it for... it would be a mess to have to use some other crap app to snc music to my ipod and the download all my apps on the ipod and can i even update podcasts on the device itself?

Leonick said,

no please dont, as much as itunes suck and should be named isync as that is seriously the only thing you should use it for... it would be a mess to have to use some other crap app to snc music to my ipod and the download all my apps on the ipod and can i even update podcasts on the device itself?

Um, maybe this is why you shouldn't have bought iPods in the first place?

Creates substandard apps?? Well I find it strange that they care, just look at all the complete crap apps in the apps store... probably makes up at least half of the apps...

About Flash... well if you know something about programming and product development, you would know that Flash have the same problem than Windows or IE for that matter (but Adobe don't have the same computer science/programming expert level on disposal as Microsoft does). It have the No.1 priority which is PRESERVE COMPATIBILITY. It would be a "walk in the park" to rewrite Flash to be a slim, high performing, quality platform if you don't care about the thousands of web sites and apps which would stop working. It was and it is still extremely hard for Microsoft to correct the 20+ years of not so good and bad decisions in developing Windows and IE in order to work as good as possible and not just as good as it can, it is much harder for Adobe because Flash wasn't started its life as a critical platform (it wasn't an OS for example), and because Adobe doesn't have the level of expertise Microsoft has (nobody does except maybe Sun(Oracle) and IBM), nor it has the resources.

I don't want to defend Flash (or Adobe), I just telling you that before you "judge" something, try to understand the product life, the resources needed to develop it and the problems you would face if you brake compatibility in order to correct your previous mistakes - and every product has a bunch of mistakes, that is how you lead the market, by making high risk decisions, and many of them will be wrong, the problem is that you will know that only after it is too late.

Flash is the best platform (of it's kind) out there exactly because they did what nobody else did in order to build a project (they did it first and they made high risk decisions). Silverlight is "better" in many aspects because it don't make the same mistakes Flash did (but it makes some new mistakes), but it doesn't have to care about PRESERVING COMPATIBILITY because it is new. The same is true for HTML5.

You can't make a perfect product, get over the naive reasoning, and the very moment your product become popular and become a critical piece of software, it is already full of crap, because it is mature and every mature product has a bunch of bad decisions in it, and most of them you simply can't correct (even if you are aware of them) because correcting them would mean braking compatibility. And braking compatibility equals "death" for most software products, especially platform products. People build countless solutions on a platform product, solutions millions of people need and use on a daily bases, solutions where you as a maker of the platform simply doesn't have any control.

Can we do better than Flash? Yes we do. Does that give as the right (to be arrogant) and to limit peoples freedom? No it doesn't. Flash will be replaced by better technologies over time that isn't a question, that is how the world works - new solutions will be written using another technologies and over time the today critical apps and solutions will become legacy stuff not so critical anymore in a "phase out" part of their "life" , but it shouldn't be decided by a decision of a single entity, by a central "power" , by a dictator, how and when should that transition take place.

If you don't like Flash... don't use it, but don't give up your freedom just because you don't like something. Not to mention that this not only about Flash, this is about almost everything "not invented here" (Apple).

+1

Flash is an excellent platform for what it does, and AS3 is a really nice language to program in. Apple, stop limiting consumers because of your narrow tube-vision of an ideal computing world.

You are spot on about Flash, the problem is Microsoft and others have all been crushed by this same level of goals. IE6/IE7 are good examples of preserving the compatibility but at the expense of performance, standards and it hurts users.

Even Win32 has been battled in this thinking, and it wasn't until Vista and more so in Win7 that Microsoft killed off compatibility for newer projects, as you notice that IE9 is usign the newer API models which makes it not possible to run on XP.

Sometimes you do have to break the development paths of compatibility.

Adobe would be smarter to create a Flash Part 2 and build it from the ground up and kill off the old standards with maybe even using web standards or Adobe display technologies and scripting instead of the very old Flash concepts. (This would require a legacy plugin and a new plugin that SHOULD remain separate.)

Apple's rejection of Flash isn't about Flash specifically but about the rejection of any non-App store content being available to their users. Apple makes money off the apps, so it doesn't matter if it is Flash, Silverlight or a a RIA HMTL5 based application, Apple won't support it if you can launch it in a browser and not buy it directly from them.

“intermediate layers produce sub-standard apps"

Every "religion" is about dogmas, nothing new, just another dogma. I think Steve should learn some computer science and programming before he talks and act stupid, Objective-C, C, C++ and JavaScript are also "intermediate layers". Additionally ask Douglas Crockford (probably the no.1 expert on JavaScript about the crap parts of JavaScript), not to mention the pitfalls of C and C++ as languages many times more capable to lead you to "sub-standard" (what ever that means) apps than the "intermediate layers" like Java or .NET (C#) or Mono.

Also everything about the last 30 (or more) years of the evolution of programming are more and more abstractions, more and more "intermediate" layers. Probably because the top researchers at such system and language software companies as Microsoft, Sun and IBM and an army of Open Source guys are stupid and they don't read Steve Jobs emails

And the funny thing is thing is that software quality and capability is higher and higher by every day, exactly because of those "intermediate" layers. Most of the crappy software we have are actually the software written without "intermediate" layers, they are complex, hard to maintain etc. Good thing that the iPhone/iPad software are small and most of the time a "one man guy" product, I see Steve doesn't evolved from the time of the '70-es. We are not living in the world of 8bit microcomputers anymore, your tiny little iPhone hardware is capable of things one or two developers can't deliver in a lifetime. The only way to move forward is abstraction, the future are things like Java and .NET (Mono), the "intermediate" layers and they are producing better software, more capable software.

The only thing Steve should be afraid (in producing crappy software) are incapable "programmers", and the chances are much higher than you find them as "single" developers than as members of capable teams, the chances are much higher that you find them among those who write programs after reading a single book (which is enough to write programs in C for example) than among those who have to master large class libraries and different "intermediate" layers Steve is so ignorantly and naively against. (I am telling this as a guy who have more than 20 years of experience as a developer and half of that time as a C, C++ and assembly developer - so I am not against those stuff, I just know that we can do a lot better today).

This guy is arrogant, he is "scientific" just about the same amount as the Pope is, and the worst thing is that he are very powerful (at least in one part of the consumer market).

Xilo said,
Apple is starting to create many enemies. Google, Adobe, developers, many users...

Google was Apple's buddy until Google wandered into the phone OS sphere with Android. So, technically, Google made Apple an enemy, and not the other way around.

Edited by lunarworks, Apr 11 2010, 9:16pm :

Everyone knows it's not about the quality of the apps, there are far better ways to ensure that shovelware is kept low profile. And by god there is a lot of shovelware in the app store already (remember the ifart and ishakeababy debates?).

This is about apple making sure you use a mac to compile for a iphone, like usual, it's all about money

With Apple banning so many apps left and right for the silliest reasons it's becoming quite a spectacle. I really don't know how you Apple fanboys can put up with this BS. Sure, I know some of you "jailbrake" your phones. But personally I don't like to load hacks or cracks on my mobile phone.

Chugworth said,
With Apple banning so many apps left and right for the silliest reasons it's becoming quite a spectacle. I really don't know how you Apple fanboys can put up with this BS. Sure, I know some of you "jailbrake" your phones. But personally I don't like to load hacks or cracks on my mobile phone.

That seems to be the thing with Apple products. They don't do as much as competing products, but what they actually do they do well.

Although I am not really Apple supporter I hate flash and I hope it dies. I'd rather see HTML 5 or silver light before another crappy flash app.

Melfster said,
Although I am not really Apple supporter I hate flash and I hope it dies. I'd rather see HTML 5 or silver light before another crappy flash app.

What I'd love to see is Microsoft develop a Silverlight development tool for Mac, along with video encoders, and help the open source world to build a top notch IDE and Runtime for the *NIX world. I honestly believe that if Microsoft put their dogma aside they could easily kill off Flash within a few years. The problem is that Microsoft would sooner screw *NIX and Apple over than winning the battle against Flash.

Melfster said,
Although I am not really Apple supporter I hate flash and I hope it dies. I'd rather see HTML 5 or silver light before another crappy flash app.

These wouldn't be Flash apps though, they would run natively from what I understand...

I'm no fan of Flash either, but I still feel that it's a shame this became an issue.

While Apple's stance on many things of late isn't welcomed in the tech community, this won't be an issue. The iPhone platform is too lucrative for developers. The general consumer doesn't even know of this issue. All they know is that the App Store has the largest selection of software for mobile devices. So as long as people keep buying the iPhone, iPod touch, and iPad in the numbers they are, developers will have too large a pool of money to ignore. Now if apps on the App Store came from a few large developers, then they could force Apple to change their stance by removing their apps. But since the App Store is made up of, mostly, small companies and individual developers, it's impossible to get everyone to band together. In the end this won't be an issue until consumers see it as an issue. And I doubt that will ever happen.

ZeroSkyX said,

+1

Maybe reject apps that don't have "I love Apple" in their help statement

Or Colbert's more ambiguous 'Applepious'.

My problem with this is they changed it a few days before Flash CS5 gets released. It just seems like they timed it so Adobe would ship a useless feature.

Mike Brown said,
My problem with this is they changed it a few days before Flash CS5 gets released. It just seems like they timed it so Adobe would ship a useless feature.

Yeah, I agree. That was rather low...

It's more about making it alot harder to port any iPhone app to other platforms. I doubt Apple will suffer due to this change. The iPhone is still where the money is, so developers would probably abide by this change and abandon plans to port to any other platforms. Apple's app store would maintain their superiority and this would benefit them in the long-run. This issue is only a short-term Public Relations hit.

I totally agree - this has nothing to do with quality of apps, and everything to do with Apple locking developers in to the iPhone/iPad platform. With Apple holding 98% of the mobile app market, I think it may be about time for some anti-trust investigations...

What makes it even worse is that there are already many apps and games built on frameworks like MonoTouch and Unity3D (and many more that are in the works) that have cost large amounts of time and money to produce.

Is Apple really going to pull all these from the app store? Some of them are making decent amounts of money (I can't remember which, but one of them was in the top 10 games recently).

Osiris said,
"Crappy developers will make crappy apps regardless of how many layers there are"
sounds about right.

It could also say Crappy developers will make crappy apps no matter what program they use to develope apps. So what Apple is doing is wrong. They are thinking that if developer's only create with specific languages, the apps will always be awesome.

Honestly, what developers should do is start developing for Android instead.

Would I be wrong to suggest that Microsoft has a similar restriction on WP7? I thought you had to use Silverlight or XNA, but I might be crazy.

Simon said,
Would I be wrong to suggest that Microsoft has a similar restriction on WP7? I thought you had to use Silverlight or XNA, but I might be crazy.

That's simply because those are the platforms it supports executing, Microsoft would have no issue with Flash exporting Silverlight content (although that would hurt adobe so they would not do that) This isn't an issue of needing to have the code end up in a supported platform, Apple is saying it must be written in ObjC from the start and nothing can 'export' it, even if it exports to something the iPhone supports.

Simon said,
Would I be wrong to suggest that Microsoft has a similar restriction on WP7? I thought you had to use Silverlight or XNA, but I might be crazy.

It's kinda obvious Microsoft is almost walking toe for toe in the iphones road map footsteps trying to replicate it's success even it's downfalls and failures it's repeating them, god knows why - maybe another cocky attitude will make it succeed like vista was in the PR realm. This is why this attitude Steve jobs has, it plagues entire industry and consequently all consumers and developers of the products lose because of a retarded business decision which doesn't make any sense what-so-ever.

There's simplification, then there's just plain stupid and Steve crossed that line a fair while back. He doesn't seem to grasp the idea that no matter how many pad-locks you put on your car and park it in a shady neighbourhood it's not going to stop it getting broken into.

Every time this sort of issue is forced upon people 'industry standards' everyone could benefit from die a little more.

Simon said,
Would I be wrong to suggest that Microsoft has a similar restriction on WP7? I thought you had to use Silverlight or XNA, but I might be crazy.

From what I understand, and correct me if I am wrong, Microsoft is only including a very small amount of native API's for the likes of Flash, Internet Explorer and a few other niche applications with the majority of the development expected to occur on Silverlight or XNA. For me this is a great move forward and hopefully this will result in such an idea scaling up to the desktop. Microsoft is already using Silverlight/WPF extensively with the Visual Studio 2010, Direct2D/DirectWrite in Internet Explorer, DirectX in Office 2010.

I don't know what happened to Microsoft for the last decade but it seems that in 2010 Microsoft has found its mojo again

Simon said,
Would I be wrong to suggest that Microsoft has a similar restriction on WP7? I thought you had to use Silverlight or XNA, but I might be crazy.

I thought Silverlight was able to run multiple .NET languages, as long as it compiled to the .NET common language. This includes variations on Java and Python. This is excellent developer support, and another example of why Windows is a joy to program on.

billyea said,

I thought Silverlight was able to run multiple .NET languages, as long as it compiled to the .NET common language. This includes variations on Java and Python. This is excellent developer support, and another example of why Windows is a joy to program on.

You're correct. CIL is CIL is CIL. There are many compilers for .NET. The only "gotcha" is that you'll have to use some XAML. The graphical engine is designed around using it internally. I mean, you *can* do it all from codebehind, but it's often messy to do so.

Simon said,
Would I be wrong to suggest that Microsoft has a similar restriction on WP7? I thought you had to use Silverlight or XNA, but I might be crazy.

Yes, what Microsoft is doing is completely different. Every platform has application types that it's able to execute, but Apple is saying that even if the iPhone can execute these files unless they are developed a certain way they can't be used... There's a big difference.

billyea said,

I thought Silverlight was able to run multiple .NET languages, as long as it compiled to the .NET common language. This includes variations on Java and Python. This is excellent developer support, and another example of why Windows is a joy to program on.

Oh, I missed your post. You said it better than I did.

Simon said,
Would I be wrong to suggest that Microsoft has a similar restriction on WP7? I thought you had to use Silverlight or XNA, but I might be crazy.

Yes and no...

Microsoft's development platforms for the W7 Phones are all managed code designs. Not only are these two platforms Rich enough to cover all aspects of development, but also create a smooth, consistent and crash free experience.

Microsoft also doesn't care where the code came from, as even they have tools and services that convert to the platform.

So the W7 phone platforms are not restrictive. And even if you don't want to put your App into the 'Store' you can still create company and personal apps for your phone and run them easily without jailbreaking it.

Apple is doing the opposite.

boogerjones said,
Rejecting useful apps and biting the hand that feeds is what hinders progress of the platform.

I'd put it to Steve that he should enforce consistency and transparency when submitting to the App Store. But oh no, that won't happen. Mr Jobs thinks he knows best.

I'd also put it to him about the majority of applications on there that are actually poor quality despite meeting the 'benchmark', and to do something about it. Nope, not going to do a damn thing here either: the hit-and-run model of buying an app without trialing it first has worked so well for Apple's wallet, considering the 30% non-refundable commission. The whole refunds issue where the developer has to refund 100% of the cost while Apple keeps it's commission is a joke too.

I think Jobs will definitely change his tune and do that hypocritical back-flip once Android gains a foot hold and creates a serious threat to Apple and their dictatorial store. I think Adobe should stop putting up with Apple's crap and abandon iPhone OS completely and work on platforms that will actually allow it, displaying the birdie whilst doing it. Improve the other platforms so that they create substantial threats to the iPhone.

Android will eventually crush iPhone OS.

Edited by DeltaFalcon, Apr 11 2010, 7:02am : Added more content.

DeltaFalcon said,

The whole refunds issue where the developer has to refund 100% of the cost while Apple keeps it's commission is a joke too.

Yeah, I agree. That's a particularly shady policy IMO...

M_Lyons10 said,

Yeah, I agree. That's a particularly shady policy IMO...

IS that true? I didn't know this policy, it's really bad. All apps must have a trial. If the developer doesn't like people to test it, then it can't be a good app. Period.