Apple's control-freakery locks down iPhone OS 4.0

Apple's control-freakery locks down iPhone OS 4.0

Summary: As expected, Apple's iPhone OS 4.0 will add extra restrictions on what tools developers can use, which in turn means less choice for iPhone owners.

SHARE:

As expected, Apple's iPhone OS 4.0 will add extra restrictions on what tools developers can use, which in turn means less choice for iPhone owners.

The latest limitation comes in the form of preventing developers from developing applications using cross-compilers such as Adobe's Flash-to-iPhone application that will ship in Adobe Flash Professional CS5 to tools such as MonoTouch.

John Gruber has posted the changes to the iPhone OS 4 SDK. Section 3.3.1 of the iPhone Developer Program License Agreement deals the bad news to developers. Here's how the section used to read:

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

Here's the updated section:

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

It might seem odd to many that Apple wants to limit how applications are developed. After all, isn't an app just an app?

Gruber believes that the reason for this restriction is that Apple is worried that these meta-platform could become popular and start defining the iPhone OS:

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. If, say, a mobile Flash software platform — which encompassed multiple lower-level platforms, running on iPhone, Android, Windows Phone 7, and BlackBerry — were established, that app market would not give people a reason to prefer the iPhone.

And, obviously, such a meta-platform would be out of Apple’s control. Consider a world where some other company’s cross-platform toolkit proved wildly popular. Then Apple releases major new features to iPhone OS, and that other company’s toolkit is slow to adopt them. At that point, it’s the other company that controls when third-party apps can make use of these features.

I don't buy this. All approved iPhone apps have to adhere to strict standards, in particular, they can only use documented, public APIs. This restriction alone is enough to keep meta-platforms in their place. Sure, Apple doesn't want to end up in a position where Adobe or Microsoft is calling the shots, but the fact is that the deck is already stacked in Apple's favor.

My take on this is that Apple has woken up to the fact that the iPhone, and the iPhone OS platform, is just part of a wider smartphone ecosystem. With Android already putting pressure on the iPhone, and Microsoft's Windows Phone 7 coming real soon (and let's not forget about Blackberry and the Symbian OS), Apple wants to make it difficult for developers to develop cross-platform apps. Apple doesn't want developers taking popular and successful apps to different platforms. By disallowing a "write once, compile for multiple platforms" ecosystem, Apple is enforcing developer faithfulness by forcing them to wear a chastity belt. If developers want to be unfaithful, they're going to have to put in the effort.

On top of that is Apple's ongoing war with Adobe. No one really knows that the real reason for this battle, but it's clear that this latest move throws a rather large spanner into Adobe's CS5 machine.

Remember, whether you're an iPhone owner or developer for the platform, Apple would like to remind you that it's their platform, not yours. That is all.

Topics: Hardware, Apple, iPhone, Mobility, Smartphones, Software Development

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.

Talkback

66 comments
Log in or register to join the discussion
  • I love how the motive is always painted as sinister

    Maybe Apple just wants to make sure that applications
    adhere to a certain standard so as to maintain uniformity
    throughout the user experience.

    Nah. That would violate our indoctrinated attitude that
    corporations are inherently evil.
    frgough
    • agreed

      Not to mention system security and efficiency to
      protect precious battery life.

      Look, if anyone doesn't like how Apple's mandating
      how application development should be conducted,
      don't develop for that platform. Simple.
      russguill
    • Exactly

      That why Apple products work.
      yobtaf
      • Or not...

        http://blogs.zdnet.com/hardware/?p=7935&tag=nl.e539

        The iPad version should apparently be called iNoWorks
        tikigawd
    • If this had been Microsoft..

      you guys would be screaming bloody murder and calling for the federal trade commission to open an investigation. These sort of practices are anti-competitive and deserve to be scrutinized. Look at it through an objective lens instead of a Apple Fanboy lens.
      trevor217
      • Not really.

        Choosing what programs to support on your OS isn't a problem in itself.


        What's a problem is when a company with near-monopolistic powers gives enormous
        incentives for developers to not let their programs run on competitors' OSs.
        AzuMao
      • Not the same at all

        Apple doesn't license it's OS's broadly, it doesn't presume to be the
        custodian of the one great OS that will rule all hardware. Microsoft is
        now a victim of it's own success as the great 'open' leader. It's
        outwardly open, egalitarian appearance means it must be at least
        politically sensitive to the needs of all its OEMs and developers. Apple,
        on the other hand, has never pretended to be, or presented
        themselves as being anything other than a completely proprietary
        producer of vertically integrated products. They make the entire
        widget--hardware and software--and are very successful at it. Apple
        invites developers to participate within the platform's software
        ecosystem within licensed constraints and under the clear knowledge
        that they are only developing for an Apple computer, or an Apple
        iPhone, or iPad, etc.

        In simpler words, Microsoft presumes to manage and speak for an
        entire official baseball league. Apple simply owns it's own bat, ball and
        one field, and publishes it's own rule book for a game that's
        something like baseball, but isn't. If you don't like Apple's game,
        there's plenty of options. Apple does not monopolize the larger game
        and does not restrict consumer choice and that remains true no
        matter how attractive or popular you see Apple's game as being.

        Being popular and exclusive is not a crime in and of itself. However, as
        in Microsoft's case, if you promise inclusion on behalf of all those 3rd
        party teams you are managing, then your a** is on the line.
        jaypeg
    • Apple wants new features of OS to appear **timely** in the apps, not lag ..

      behind because developer uses some common meta compiler which may or <b>may not</b> (at will of Adobe or Microsoft) support the latest APIs only at some later point of time.
      DDERSSS
      • HAHAHA Nice CRAP

        These environments have no problem being on board early in the alpha/beta stages and having support ready to go prior to RTM.

        All their users (app devs) are always all over them to be ready far enough ahead of time for the app devs to also have used the tools to build their apps in time to be ready at RTM
        Johnny Vegas
      • bs

        First of all, it is not Microsoft, it is Novell. They created MonoTouch that lets any Mono Developer (which Open Source version of Microsoft .NET and that is the only one relation to Microsoft) to create iPhone Apps. But have you ever really used MonoTouch, if you have, you wouldn't have said that. You can't really tell whether that app really was developed using Mono/MonoTouch or Objective-C. It is very difficult to make it out, unless Apple reads the entire binary dump of that app and find any string references for Novell/MonoTouch/Mono.
        --Ram--
        Ram U
    • I love how you never acknowledge Apple's lock-in tactics

      and that they act upon it by putting up walls left and right.

      [i]Maybe Apple just wants to make sure that applications adhere to a certain standard so as to maintain uniformity throughout the user experience.[/i]

      Maybe. Or maybe they just want to control everything to ensure that once the public has gotten used to their products they will keep on, developers have a harder time to write apps that could actually work in multiple platforms. That would be just crazyness! Why would Apple allow a developer to write the next, say, Carrr Matey for the iPhone and Android??

      These are the tactics that bit Microsoft in the a$$! But I guess it's OK for Apple to employ them; they're not actually shady when Apple does it.
      tikigawd
      • Doing that isn't cool, no, but they don't..

        ..control an overwhelming majority of the market, either, so it can't hurt anything.
        AzuMao
        • Famous last words

          Get your head out of your rear.

          Shady practices are shady practices, no matter who does it. The public is allowing Apple to be above "the law;" they would never allow this kind of behavior from other companies.

          By putting these roadblocks up Apple is simply taking away your choices, forcing developers to do their work multiple times when it's clearly unnecessary from a technical standpoint.

          Furthermore, Apple DOES control a large part of the smart phone market, so these practices do affect and influence a large portion of the market. They are abusing their dominance, plain and simple.
          tikigawd
          • Effective monopoly is one of the main things that MAKE it shady.

            If Apple cripple the iPhone, what with its <a href=www.informationweek.com/news/telecom/business/showArticle.jhtml?articleID=222600940>16% share</a>, the market won't be screwed.
            AzuMao
    • Right. Apple would never want a lock-in.

      Only an evil corporation like MS would do that, Apple is peace, love and all that is good with this world.

      Steve [b][i]loves[/i][/b] us as his children.

      Or you could take off those Apple rimmed glasses and look at it in from a real, objective perspective.
      John Zern
    • Wrong...

      I wrote this elsewhere:

      I think this is Apple's worst day, and quite possibly the day it jumped the shark.

      This is a horrible move by Apple and shows that they really don't want to compete.

      Jon Gruber wrote an embarassing apologist blog post about why Apple did this. His main claim is that this is to prevent poor apps from infesting the app store. This is utterly wrong.

      Apple's real fear is that the apps may actually be extremely good. If a framework exists that can target the iPhone and make great apps, but also great apps for WP7 and Android then they're in trouble.

      Lets be clear, web apps (html/javascript) are amongst the most horrible you can write across any vectory (quality, performance, etc...), yet Apple will allow those, despite them not being "native" apps. Why? Because they know those apps will never be that great. They don't threaten the fact that they have the best app store in the world. But if Monotouch apps started being the premiere apps, then Apple would worry, because it's a 10 second port to make it a Windows Phone app.

      This IMO, is the darkest day for Apple. While I've never been a huge fan of Jobs, I think they crossed a line with this language.

      While Apple may have put another nail in Flash's coffin, I think they've unwittingly helped seal their own fate.
      DevStar
      • Apologist? Not!

        [i]? Jon Gruber wrote an embarassing apologist blog post about why
        Apple did this. His main claim is that this is to prevent poor apps from
        infesting the app store.?[/i]

        Musta been a different Jon Gruber than the one who saw this as a way
        for Apple to be [b]in control[/b] of the look'n'feel of apps. This Jon
        Gruber linked to another blog that cited examples of 3rd-party devs
        trashing a platform, but himself emphasized the control.

        The iPhone may be riding the wave right now, but for most of Apple's
        history they have been marginalized, often by the indifference of 3rd-
        party developers to exploit unique Apple capabilities. (Photoshop,
        which supports neither Apple's 64-bit technology nor its multi-
        processor capabilities nor its native interface, leaps to mind here.)

        For example, Flash CS5 supports exactly zero of the features
        announced yesterday. When, if the purpose is to build simple, multi-
        platform apps, would Adobe deign to embed the ad, or multi-tasking
        APIs into it?

        Especially as Apple moves into multi-tasking within a very tight RAM
        budget, the last thing they want is for some app to make the whole
        phone sluggish because it's dragging around some bloated runtime
        that technically met the previous limitations. Since this affects only a
        couple dozen current apps, it seems like a Smart Move? to ensure
        that iPhone apps continue to be perceived as special, as opposed to
        generic knockoffs.
        WaltFrench@...
  • Rewording, but no changes

    old SDK agreement, as published by wired in section 3.3.2
    already provided any mean to prohibit the use of cross
    compilation.

    Add to that the fact that apple can refuse
    any app with no justification and you see that there is
    not much change in the spirit of the sdk agreement.


    The new wording is perhaps a bit more litigation-proof,
    but that's all
    s_souche
  • Documented, Undocumented and Private APIs

    Wasn't that what the crux of the anti-competetive arguments against microsoft during the trials in the 90s. They didn't release documentation for all the APIs in Windows giving their own programmers an unfair advantage. Funny how it's evil when Microsoft does it but perfectly acceptable for Apple
    Scubajrr
    • Just part of the double standard

      Same old song and dance if you ask me. Apple does a lot of things other companies get ridiculed for. They lock out, hide, and purposely withhold information and when they do it they get defended in the interest of security and stability. I am sure that security and stability is partially true but Apple lately has been doing a marvelous job of criticizing their competitors and finding ways to lock them out of their devices. Lately they seem to hate Google and Adobe.
      bobiroc