Dear Apple: The iPhone deserves better SDK terms

Outrage over this little clause in the new iPhone developer SDK terms is erupting all over the internet:

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

And rightly so.

On our About page we explain why we develop software for the Mac:

We believe that Apple has created an environment where great software can really thrive.

I still feel this way about the Mac, but I no longer consider the iPhone or the iPad worthy of such sentiment because of the draconian terms under which one must operate to develop for those platforms.

What Apple’s engineers have done with the iPhone is amazing. They’ve simply outdone themselves when it comes to the quality of both the software and the hardware. However, I no longer think Apple can continue to honestly claim that they have the best phone around. Steve Jobs and Apple’s legal department have taken a figurative dump on their hard work with these insane restrictions, and that creates an foul odor that stains the product as a whole.

Missing Applications

The new rules, interpreted as written, ban all kinds of applications written by great folks who have put in countless hours of work developing for this platform.

Games developed using the great Unity3D engine are not “originally written” in Objective-C, C, or C++.

The incredible work that James Long put into creating what is probably the first-ever OpenGL game written in Scheme on the App Store, is now thrown into question.

With these terms, Apple is going against its own Think Different model, destroying creativity itself through the enforcement of a monoculture of developer tools. They are effectively saying that you can be creative, so long as you’re creative our way, an absurdity known in psychology as a double bind.

Developers Running Away

The SDK terms are not just insulting, they’re bad business. Great developers like Tim Bray are forsaking the iPhone platform out of disgust and running to Google’s Android platform. Dan Grigsby of Mobile Orchard just announced they’re abandoning iPhone development because of these restrictions.

Despite my familiarity with Apple’s tools and the language Apple insists developers use, at the present time I can’t envision myself writing an app for the App Store, because in clicking that Agree button on the license terms I suddenly find myself feeling like an infant, as though I can no longer be trusted to make basic decisions and must therefore be locked in a crib surrounded by child-proof toys and bars.

For companies like Google, all of this should be good news, because despite its shortcomings, Android’s relatively open platform is starting to look far more inviting.

9 thoughts on “Dear Apple: The iPhone deserves better SDK terms

  1. Reply

    Andy

    Well, I’ll have to say I sympathize Apple as well as developers around.

    I do understand why C/C++/Objective-C/Java Script become mandatory. After all, OS X as well as iPhone OS are both written in these languages.

    I’d say, if you want the flexibility, hack ur phone.

  2. Reply

    Paul

    Hmm… but does anyone really see Scheme as a great way to develop iPhone apps? I appreciate that it’s an interesting intellectual exercise, but like so many similar projects it just doesn’t seem practical long term. Developers can be sure that Apple’s official APIs are going to supported into the future – I don’t know much about this Scheme-OpenGL-iPhone mashup, but I’m guessing that if the people involved get bored or their priorities in life change they’re going to stop developing it. And then where does that leave anyone who built an app with it and now wants to, for example, use new features from iPhone OS 6.0 or whatever’s next… If people want to experiment with wacky ways of programming, they have to accept that maybe the iPhone just isn’t for them. That’s where Android comes in, I guess.

    And he Unity3D guys seem to think they’ll be OK, according to their latest blog post. It certainly is important for developers to be able to use 3rd party libraries like Unity, though – the practice is fundamental to modern game development, where the 3D engine, physics, sound etc. are often bought in. If Apple moves to block this kind of thing they’re certainly going to put people off.

    Apple has to be given some credit for wanting the quality of the apps on the iPhone platform to be as high as possible (and this includes trying to prevent malware, spyware, viruses etc. – an important and often overlooked side effect of their “walled-garden approval-required” process). I think they believe there is a very close connection between their brand and the consumer experience on all their iPhone OS devices – in a way that’s just not the same as the Mac. It’s kind of similar to how Nintendo, Sony and Microsoft tightly control what apps are allowed on their consumer game platforms. You don’t see Microsoft restricting what people can do with Windows, but you can be sure that there’s only one approved method of developing for Xbox. Similarly Sony doesn’t care what you do with its laptops, but when it comes to PS3 or PSP they’re probably more controlling that Apple.

    Anyway, it’s a very interesting debate, and your posts are always insightful!

  3. Pingback: Jobs responde a las críticas | Bitelia

  4. Reply

    Robert

    You don’t suppose this has to do with the new A4 processor technology on the iPad do you? Perhaps they are trying to limit access to the CPU on that device and sense they locked the iPad to the iPhone SDK, they had to adjust the rules a bit …

  5. Reply

    Alastair Leith

    Storm in a tea cup.

    I can’t believe developers didn’t see this coming. I was wondering aloud in an on-line Adobe Flash Seminar, what’s Apple going to do when the Appstore is flooded with junk apps ported from Flash. Student programmers in parts of the world where 1$ is an hourly wage or higher will be trawlling the Internet for flash code and porting it for free aps with ads or 10¢ apps to get multiple micro income streams.

    Apples response was entirely predictable and rational. (If annoying to some, but hey, welcome to a loving relationship with Apple)

    It’s my opinion this clause came about because of one thing, Adobe’s CS5 version of Flash, and therefore just put other cross-platform IDEs in for good measure. Many at Adobe think iPhone and iPad are the future and were desperate to get a slice of the dynamic content creation market for themselves, ie replay Flash success on www. They’ll still be in the .ePub business though.

    I wonder how this decision was discussed in back-channels between the two companies before it’s announcement. Some Adobe staff (who blog) seem genuinely shocked (and as the kids say ‘disappointed’). You can understand why but that goes to illustrate why they decision came about in the first place.

    Adobe hasn’t been doing Apple any favors for years now anyhow (CS5 goes Cocoa yeah! I wonder if it will be Spaces compatible!)

    It’s not like Apple owes Adobe who would like to be the Apple of the PC world (gross generalisation I know) and in some ways this works against Apple.

  6. Pingback: Adobe Unveils Creative Suite 5 : NeonPunch: Hong Kong's Gadget & Gear Buying Guide Blog

  7. Reply

    Eric Tetz

    “In comparison, do you see cross-platform tools on the XBox 360 or PS3? No, you need to write tight, native code to make those platforms hum as well.”

    A huge number of 360 and PS3 games are made with cross-platform engines. As RandomExcess pointed out, games have IMPROVED because of it. Companies like Epic and Id have decades of experience making world class game engines and robust tool chains. Other companies leverage that expertise so they can focus on making great games, rather than spending years attempting to reinvent the wheel (and often falling short).

    This is a logical division of labor which the free market evolved ON IT’S OWN, because it benefits everyone involved, especially the consumer. It’s a ridiculous conceit for Apple to presume it knows the One True Way to produce quality software for an entire technological ecosystem.

    Why can’t Apple let the apps speak for themselves? If an app is bloated and slow, kick it to the curb. If it runs well, who gives a damn how it’s made?

  8. Reply

    Stephen Eilert

    @Paul

    “Hmm… but does anyone really see Scheme as a great way to develop iPhone apps? I appreciate that it’s an interesting intellectual exercise, but like so many similar projects it just doesn’t seem practical long term. Developers can be sure that Apple’s official APIs are going to supported into the future – I don’t know much about this Scheme-OpenGL-iPhone mashup, but I’m guessing that if the people involved get bored or their priorities in life change they’re going to stop developing it. And then where does that leave anyone who built an app with it and now wants to, for example, use new features from iPhone OS 6.0 or whatever’s next… If people want to experiment with wacky ways of programming, they have to accept that maybe the iPhone just isn’t for them. That’s where Android comes in, I guess.”

    Yes, Scheme is a *great* way to develop application, not just iPhone ones. You cannot beat the expressiveness of the language. And whoever doesn’t program using a REPL do not really know what programming should be all about. Recompiling an app just because a procedure/method has changed? Yikes. All that while running optimized, compiled code.

    There’s no Scheme/OpenGL mashup. This particular implementation (Gambit) compiles to C and calls the native OpenGL calls. There’s no need to really on “support” from anyone, be them hobbists or otherwise. James Long developed the bindings alone, they are a single Scheme file.

    Just think about it: if Apple deprecates iPhone OS APIs, any applications, be them C,C++,Objective C ou Whitespace will break. Including game engines written in Objective C (I know of none, unless you want to count OOLite’s). I suspect C apps will have a harder time adapting than Scheme ones.

    And, by the way, the iPhone platform is inherently better at running Scheme code. One of the reasons being that apps are native, there’s no non-standard underdeveloped wacko virtual machine requirement (Dalvik, I’m looking at you). I guess you could use Clojure on Android, but this is not an optimal solution. There is work under way.

    * I know because I am using some small and straightforward macros to use the same opengl bindings as jlongster and develop a Chicken Scheme iPhone application.

  9. Reply

    Montreal Web Design

    Add: You are not allowed to sell open source software
    http://www.maclife.com/article/news/apple_finally_pulls_vlc_app_over_gpl_violations

Leave a Reply

Your email address will not be published. Required fields are marked *