My Thoughts On Section 3.3.1 of the iPhone OS 4.0 ToS

There has been a lot of discussion about the changes that Apple made to the upcoming version of the iPhone OS 4.0 Terms of Service:

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

As both developers and consumers, CentreSource is affected by this decision in two ways.

While we’ve traditionally been a PHP shop, we have developers who are versed in JavaScript, ActionScript, Ruby, ASP .NET, Perl, and even a little Python.  When the iPhone Software Development Kit (SDK) was originally released two years ago, we played around with it, but the learning curve of teaching ourselves Objective C (the language required to use the SDK) ultimately led us to make the decision to explore utilizing a third party development tool called Titanium to create our iPhone apps.  Titanium is an application that allows you to write in a simpler/unified language, and then the tool recompiles the code to the Objective C required by Apple.

According to the new changes, applications like Titanium — or the about-to-be-released Adobe Flash to iPhone converter — are a no-no.  Why?  Commentators and speculators say it comes down to two main reasons:

1. Apple wants complete control.  In order to develop for the iPhone OS, you have to use Apple’s tools… On an Apple computer… With an Apple developer’s license…  Apple controls the entire development environment from the moment you start writing your code (on your Apple computer) to the point you start making money through releasing your app in the App Store.  Apple is able to dictate how, where, and when your app gets created and distributed.  While some see this as a monopolistic abuse of power, I see this as directly benefiting the fact that…

2. Apple has complete control.  By controlling the entire development environment, they are able to provide the tools and resources to allow app developers what they need to create applications that maximize the potential of the iPhone OS.  If they release a brand new set of features to their SDK (as they did last week), they are able to immediately integrate these features into their toolset for the developers to use.  When using tools like Titanium, developers are forced to wait until the 3rd party company changes their tools to be compatible with the new SDK before they can start using them.

Similarly, many argue that by “neutralizing” the tools used for creation, you’re not able to fully utilize the specific features for the end product. Think of any application that was created for a specific platform — Mac or Windows — and then think of applications that were “ported” to the other platform. No one will argue that Office on a Mac or Handbrake on Windows are anywhere close to the application on the platform it was originally written for.

From a development perspective, we’re not tremendously affected — primarily because we’re already fairly cross-versed in development languages. Adding Objective-C to our arsenal — while an inconvenience and time consuming — is by no means a deal breaker for us, especially given the benefits that Apple provides.  For most of us, we’d have to learn another language / SDK of some kind in order to develop iPhone OS apps — why not just go right to learning Objective-C.

From a consumer perspective, I believe this is great news. Imagine the scenario that Louis Gerbarg of /dev/why!?! presents:

Imagine if 10% of the apps on iPhone came from Flash. If that was the case, then ensuring Flash didn’t break release to release would be a big deal, much bigger than any other compatibility issues. Since Apple doesn’t have access to Flash CS5’s runtime library code or compiler frontend, they might be put in a position where they would need to coordinate with Adobe to resolve those issues. Shipping a new release where Apple breaks any specific application, even a top seller, is not an issue if the release is compelling, most apps work, and Apple has the option of working with the vendor to help them fix their app. Shipping a release where they break a large percentage of apps is not generally an option. Letting any of these secondary runtimes develop a significant base of applications in the store risks putting Apple in a position where the company that controls that runtime can cause delays in Apple’s release schedule, or worse, demand specific engineering decisions from Apple, under the threat of withholding the information necessary to keep their runtime working.

Clearly this is not an ideal scenario for Apple or for their consumers. Apple’s imposing restrictions are a protective move for themselves and their consumer — ensuring the high level of user experience that Apple has come to be known for, and not letting 3rd party vendors effect their reputation.

Is this bad news for Adobe? Youbetcha. They are increasingly grasping at straws to stay relevant in a marketplace that is leaning more towards HTML5, and turning “Flash” into a bad word. I agree with some of my colleagues that Flash still has an appropriate place on the web, and heavens knows how many ActionScript developers are bummed about this decision that effectively eliminates them from developing on a platform that accounts for 45% of mobile browsing.

At the end of the day, when the dust of iPhone OS 4.0 finally settles, there will still be a plethora of apps (good and bad) in the iTunes App Store. This decision will be long forgotten by all those involved (well, except maybe Adobe), and the consumers will remain happy and buying phones.

As for CentreSource? Bring on Objective-C!

** Note: my opinions may be a bit biased… This whole post was written on my Apple iPad — which is awesome by the way… But that will be a saved for a separate blog post!

Share This
  • http://bizen.com Jackson Miller

    I think the jury is out on Titanium and 3.3.1. It looks like PhoneGap is in and I suspect Titanium will be too. But I came to the same conclusion as you, bring on the Obj C

  • http://jaxn.org jaxn

    I think the jury is out on Titanium and 3.3.1. It looks like PhoneGap is in and I suspect Titanium will be too. But I came to the same conclusion as you, bring on the Obj C

  • http://pinnix.net Jeremy Pinnix

    I completely agree with your stance.

    BTW, have you seen that PhoneGap has been contacted by Apple and is safe? http://j.mp/bxXGA6

    I would think this would bode well for Titanium as well since they share a similar method for creating iPhone apps. The same can not be said for Adobe’s Flash CS5.

    As for Pixelgrazer, we’re full steam ahead with straight up Obj-C.

    • http://www.lifeasachip.com chayner

      I did see that PhoneGap has been approved — primarily because they develop in Apple-approved languages (HTML+CSS+JavaScript). It will be interesting to see how the chips fall with Titanium and others…

  • jpinnix

    I completely agree with your stance.

    BTW, have you seen that PhoneGap has been contacted by Apple and is safe? http://j.mp/bxXGA6

    I would think this would bode well for Titanium as well since they share a similar method for creating iPhone apps. The same can not be said for Adobe's Flash CS5.

    As for Pixelgrazer, we're full steam ahead with straight up Obj-C.

    • http://www.lifeasachip.com chayner

      I did see that PhoneGap has been approved — primarily because they develop in Apple-approved languages (HTML+CSS+JavaScript). It will be interesting to see how the chips fall with Titanium and others…

  • EVula

    Another reason for this change has to do with Apple’s (deserved) obsession with the user experience: *real* native apps behave as Apple wants them to, which standardizes the user experience for the entire product line. I loved me some GPS Assassins, don’t get me wrong, but there were so many times where it just didn’t feel like a regular iPhone app. Apple is all about the user experience, from the layout of their stores down to the most minute details of the iPhone OS, and Flash-based apps would obliterate that. In conjunction with the dependency that Apple would then have on third parties (as mentioned above), that’s a huge deal-breaker.

    I think a lot of people getting up in arms about this are missing the point, and assuming this will hurt the end user. The consumer, on the other hand, will continue getting apps that actually behave correctly, so I doubt they care.

    • http://www.lifeasachip.com chayner

      Yes! Absolutely agree with you. I was trying to get at that in talking about cross-platform apps, and how they just don’t seem “right”. I’ll take a native app any day over one that is released cross-platform.

      • EVula

        In this same vein, I tried using, and liking, TweetDeck for the Mac. I just couldn’t do it; it broke from Mac standard processes in too many ways (having to copy and paste into Mail to right-click corrections on typos? screw that!).

        TweetDeck is touted as the best example of Adobe AIR’s cross-platform abilities, which has done little to give me any faith about Adobe’s auto-magically ported iPhone apps. :)

  • EVula

    Another reason for this change has to do with Apple's (deserved) obsession with the user experience: *real* native apps behave as Apple wants them to, which standardizes the user experience for the entire product line. I loved me some GPS Assassins, don't get me wrong, but there were so many times where it just didn't feel like a regular iPhone app. Apple is all about the user experience, from the layout of their stores down to the most minute details of the iPhone OS, and Flash-based apps would obliterate that. In conjunction with the dependency that Apple would then have on third parties (as mentioned above), that's a huge deal-breaker.

    I think a lot of people getting up in arms about this are missing the point, and assuming this will hurt the end user. The consumer, on the other hand, will continue getting apps that actually behave correctly, so I doubt they care.

    • http://www.lifeasachip.com chayner

      Yes! Absolutely agree with you. I was trying to get at that in talking about cross-platform apps, and how they just don't seem “right”. I'll take a native app any day over one that is released cross-platform.

      • EVula

        In this same vein, I tried using, and liking, TweetDeck for the Mac. I just couldn't do it; it broke from Mac standard processes in too many ways (having to copy and paste into Mail to right-click corrections on typos? screw that!).

        TweetDeck is touted as the best example of Adobe AIR's cross-platform abilities, which has done little to give me any faith about Adobe's auto-magically ported iPhone apps. :)

  • http://blog.benstucki.net Ben Stucki

    History shows that every major technology is democratized and segmented in the long run. This small fact of life is what has kept Flash and other cross platform tools relevant, and the idea that they’re not now is naive at best. Remember the browser wars? Where’s our defacto browsing platform? Which OS has won-out yet? Believing in a world where Apple holds the mobile market for an extended period of time is unrealistic. It didn’t work when they tried to control the hardware pipeline and a decade later they nearly went bankrupt. Why would it work when they try to control the software pipeline? They should have learned to make decisions that will extend their initial dominance, but 3.3.1 will only speed the progression towards other devices. Bad move Apple – and also, shame on you.

    • http://www.lifeasachip.com chayner

      Couldn’t it be argued, however, that Microsoft’s lack of control led to a platform that is known for its instability and vulnerabilities? One of things that has made Apple grow over the past 10 years (since Jobs’ return) HAS been their control of the hardware pipeline — their products maintain a level of quality, leading to a sense of reliability (true or not).

      If anything, I think Apple’s mistake has not been controlling what languages that the apps for their platform can go into, but rather not allowing their platform on more devices. Google, by the very fact that they’re making it easy and cheap to put Android on mobile devices, is gaining market-share like crazy — quickly becoming the Microsoft Windows of the mobile landscape. That said, Microsoft (and now Google) have had to deal with a similar problem of creating a generic enough platform to work on a variety of devices of different size, speed, and compatibility.

      I’m not faulting anyone… yet. I’m just excited to see how this all plays out.

  • http://blog.benstucki.net Ben Stucki

    History shows that every major technology is democratized and segmented in the long run. This small fact of life is what has kept Flash and other cross platform tools relevant, and the idea that they're not now is naive at best. Remember the browser wars? Where's our defacto browsing platform? Which OS has won-out yet? Believing in a world where Apple holds the mobile market for an extended period of time is unrealistic. It didn't work when they tried to control the hardware pipeline and a decade later they nearly went bankrupt. Why would it work when they try to control the software pipeline? They should have learned to make decisions that will extend their initial dominance, but 3.3.1 will only speed the progression towards other devices. Bad move Apple – and also, shame on you.

    • http://www.lifeasachip.com chayner

      Couldn't it be argued, however, that Microsoft's lack of control led to a platform that is known for its instability and vulnerabilities? One of things that has made Apple grow over the past 10 years (since Jobs' return) HAS been their control of the hardware pipeline — their products maintain a level of quality, leading to a sense of reliability (true or not).

      If anything, I think Apple's mistake has not been controlling what languages that the apps for their platform can go into, but rather not allowing their platform on more devices. Google, by the very fact that they're making it easy and cheap to put Android on mobile devices, is gaining market-share like crazy — quickly becoming the Microsoft Windows of the mobile landscape. That said, Microsoft (and now Google) have had to deal with a similar problem of creating a generic enough platform to work on a variety of devices of different size, speed, and compatibility.

      I'm not faulting anyone… yet. I'm just excited to see how this all plays out.

  • Pete

    I think this article has merit in terms of its argument especially when one considers the foot dragging by Adobe over Photoshop for OS X. That literally kept the Mac platform held back and it is likely something Apple plans to let happen again.

  • Pete

    I think this article has merit in terms of its argument especially when one considers the foot dragging by Adobe over Photoshop for OS X. That literally kept the Mac platform held back and it is likely something Apple plans to let happen again.

  • Paul Johnson

    It’s good to read a column from a developer who actually cares about the user experience for applications on Apple devices. After years of dealing with an Adobe Acrobat that turns a 16-page per minute printer into a 16-page per hour device, and a Microsoft Office without VB Macro support and lots of built-in quirks, most Mac users have had enough of applications that are not written in native code. There is no market solution to this problem, because iPhone and iPad users probably would not know until they had already purchased applications and experienced difficulties with them that those applications are cross-platform.

  • Paul Johnson

    It's good to read a column from a developer who actually cares about the user experience for applications on Apple devices. After years of dealing with an Adobe Acrobat that turns a 16-page per minute printer into a 16-page per hour device, and a Microsoft Office without VB Macro support and lots of built-in quirks, most Mac users have had enough of applications that are not written in native code. There is no market solution to this problem, because iPhone and iPad users probably would not know until they had already purchased applications and experienced difficulties with them that those applications are cross-platform.

  • http://www.lifeasachip.com chayner

    One of the strongest statements for Apple’s position from the man himself:

    “Our motivation is simple – we want to provide the most advanced and innovative platform to our developers, and we want them to stand directly on the shoulders of this platform and create the best apps the world has ever seen. We want to continually enhance the platform so developers can create even more amazing, powerful, fun and useful applications. Everyone wins – we sell more devices because we have the best apps, developers reach a wider and wider audience and customer base, and users are continually delighted by the best and broadest selection of apps on any platform.”

    Steve Jobs, http://www.apple.com/hotnews/thoughts-on-flash/

  • http://www.lifeasachip.com chayner

    One of the strongest statements for Apple's position from the man himself:

    “Our motivation is simple – we want to provide the most advanced and innovative platform to our developers, and we want them to stand directly on the shoulders of this platform and create the best apps the world has ever seen. We want to continually enhance the platform so developers can create even more amazing, powerful, fun and useful applications. Everyone wins – we sell more devices because we have the best apps, developers reach a wider and wider audience and customer base, and users are continually delighted by the best and broadest selection of apps on any platform.”

    Steve Jobs, http://www.apple.com/hotnews/thoughts-on-flash/