Posts Tagged 'Development'

Apple, Adobe and developing for iPhone OS

A spat between Apple and Adobe has over the last few days become one of the biggest stories on tech blogs and forums across the internet.  There’s been so much written and argued about it that I almost feel this wouldn’t be a proper blog unless it included my take on things, so here goes…

The issue at hand is a change to Apple’s iPhone Developer Program Licence Agreement, which states:

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

This means that if developers want to create applications for the iPhone, iPod Touch or iPad, Apple essentially requires them to use Xcode, its very own integrated development environment (IDE).  Xcode includes a software development kit (SDK) for iPhone OS, which makes it easy for developers to write native applications that can take advantage of all of the technologies and broad range of application programming interfaces (APIs) that are included in the OS.  The APIs are well documented and registered members of the development program have access to many additional resources aimed at making the development process easier.

What developers are not permitted to do is write their code in another IDE using a non-native language and non-native APIs, and then have their code translated into Apple code by making use of an intermediary layer in their applications.  And that is something that Adobe is not happy about.  Why?  Well, Adobe have built a new feature into Flash which allows Flash developers to export their code to iPhone applications.  The new feature means that Flash devs can create iPhone apps from their ActionScript code without needing to know anything about Objective-C, Cocoa Touch or any of the frameworks or APIs that Apple includes in iPhone OS.  Apple’s new condition is bad timing for Adobe as the iPhone export feature is the new big thing in Flash CS5, due to be released shortly (they are already taking pre-orders).

There are all sorts of arguments and opinions flying about, hysteria, anger, accusations.  It’s all be rather dramatic.  Here are some points that I think are worth considering:

Flash devs would love to take advantage of the huge market for iPhone applications, but don’t want to have to move out of their comfort zone

Some Flash devs will argue that Apple is wrong to be ‘locking in’ developers to Apple’s APIs and that it is anti-competitive behaviour that will ultimately result in alienated developers, less development taking place and less choice for customers.  If that were the case, then surely the platform would be doomed to failure and worth avoiding at all costs, would it not?

I can understand their disappointment, having been promised free access to the iApp market by Adobe only to find out that Adobe’s solution has never had Apple’s blessing.  It must have been a dream come true to think that they could start selling applications through the iTunes App Store without having to spend any time at all on building an understanding of Apple’s frameworks.  Too good to be true, even.  Well that’s exactly how it’s turned out.  Adobe have really screwed over their own customers by making promises they couldn’t keep, so it’s probably just as well for them that this has surfaced before everyone rushes out to buy CS5.  Had Apple supported Adobe’s plans and then backed out, that would be a different story, but Apple and Adobe have not worked together on this at all (not that I have any insider knowledge, but from what I’ve read nobody has reported any such circumstance).

Learning another programming language, new frameworks and APIs, is an overhead, an investment one makes to increase skills and broaden abilities.  There are plenty out there to learn, all with different features, advantages and potential markets.  What you choose to learn has some impact on what markets are available to you, and of course the more you learn, the broader your options.  If you want to write applications for iPhone OS and take advantage of the huge market that Apple has created, then learning Objective-C and Apple’s IDE is an investment in time that you need to make.  Following Apple’s guidelines and programming natively with Apple’s APIs is a robust and informed way to develop good quality applications that can directly take advantage of all of the features included in the OS.  Many developers from non-Apple backgrounds have already started developing for iPhone OS and met with great success.  For developers experienced in object oriented program design, or C++, the transition isn’t that difficult.

Developers for iPhone OS have churned out over 145,000 applications since Apple released the first SDK in 2008.  That’s an impressive statistic.  Granted many of them would already have had knowledge of developing Cocoa apps for OS X, which is an advantage, but many others have not.  There has been some noise about the App Store approval process, but largely the existing iPhone developers do not seem to feel ‘locked in’ as some of the Flash mob would have us believe.  To have produced that many applications in under two years has certainly not limited customer choice either.  If any current Flash developers want to experiment with iPhone programming then they should take the plunge, join the Developer Program and start learning the ropes.  To gain access to a big new market for little to no effort is a bit unrealistic.

Apple wish to maintain quality

As a long time Mac user, I’ve experienced a lot of applications that have been straight ports from other platforms and they are, for the most part, pretty awful, so I can understand from this why Apple wants to keep these kinds of apps away from its mobile devices.  Apple have created a good SDK with APIs that help developers to produce applications that fit Apple’s style guidelines and ultimately provide a superior user experience.  Anyone familiar with OS X development will know how much Apple push their developers to produce clean and intuitive interfaces.  They even have a document entitled “Apple Human Interface Guidelines” which specifies how applications should be designed to fit visually and functionally with OS X.  This is not an attempt by them to control developers – anyone can release an OS X application – it’s just that those applications which follow the guidelines will be a better fit with other applications including the OS, and will have a more intuitive feel for the end user.  This is all good for developers as their apps will likely receive better reviews and recommendations, thus resulting in more sales (I know there’s more to making a successful app than just having an intuitive interface, but that’s another issue).  Apps that don’t follow these guidelines, like those that have been ported from other platforms and not coded natively, stick out like a sore thumb.  They are generally bland, clunky and difficult to understand.

Why would Apple, having gone to a lot of effort to produce a solid SDK, want apps being sold for their mobile devices that have not been developed natively?  They are going to want to keep a certain amount of control on what goes on to their devices, as if the floodgates opened and half the apps on the App Store ended up being substandard ports from Flash or other IDEs, it would reflect badly on Apple’s devices and result in fewer sales.

It could be argued that the App Store approval process should weed out any such apps.  It could also be said that some of the apps currently available in the App Store are not particularly good, even if they have been developed natively.  There is unfortunately always going to be a range of quality amongst applications, as with everything in the world.  That can’t be avoided.  But if Apple were to start rejecting apps purely on the basis of whether they liked them or not, they would eventually alienate a huge number of developers who had put time and effort into creating native applications.  That wouldn’t be fair.  Apple therefore need to maintain some objectivity in their approval process.  This new rule is one such flag of objectivity.  Apple wish to keep app quality high, and to that end they desire their developers to code natively for iPhone OS.  It’s perfectly reasonable.

Developers should not be reliant on Adobe for the feature set available to their apps

Imagine that Apple were to allow iApps to be ported from Flash.  The pool of developers would be distilled with the new Flash-based crowd.  Some existing developers could stop coding natively for iPhone OS as they would be able to create their apps in Flash and distribute them as web apps at the same time, reaching a greater audience.  Then Adobe would add Android, Blackberry & other export options to Flash.  Soon enough Flash would be the only IDE in use and platforms including, but not limited to, iPhone OS would be at the mercy of Adobe.

If Apple were to introduce new features and efficiencies to their hardware and APIs, they would have to wait for Adobe to implement them in its Flash translation layer before the features would really become available to developers and end users.  Even the most willing and motivated of developers would not be able to get around that, they would have to wait for Adobe to add the capabilities before they could take advantage of them in their apps.

In the end, Apple would lose sales and credibility, and good developers would get screwed because they wouldn’t be able to outpace their competitors in updating their apps to take advantage of new features.  Everyone would become ‘locked in’ to Adobe (so much for developers being locked in by Apple).  Given Adobe’s poor history when it comes to timely bug fixes and support of its OS X applications, I do not think that this ‘lock in’ would be a nice place to find yourself, whether you’re Apple, a developer or an end user.

Bear in mind also how Apple and Adobe make their money.  Apple sells hardware and software.  They sell the iPhone, the iPod Touch and the iPad, all of which run on iPhone OS, and they additionally take a 30% cut of App Store sales.  Apple needs to keep its products desirable so that they can keep sales up, so it’s in their best interests to ensure that what’s running on their products is a credit to them.

Adobe on the other hand, sells design software, including Flash.  They make no money from sales of Apple’s mobile devices.  They therefore have no motivation to ensure that Apple’s devices or the applications that run on them remain at a high standard.  The fact that they’ve produced a feature that can export ActionScript from Flash to iPhone applications has nothing to do with them wanting to support Apple’s platform, or work together with them to produce great products.  Adobe has just seen that the market for iApps is massive and that by including their new export feature in the next version of Flash they will generate substantial sales of CS5.  These would include sales to many existing customers that would not otherwise have found a compelling reason to upgrade from a previous version.

Another point to note is that if you are a UK customer, Adobe Flash CS5 will set you back £653.30 for the boxed edition or £672.76 for the download (which make no sense to me at all).  Apple’s Xcode, on the other hand, is free.  You just need to have a Macintosh.  Apple does not stand to make anything directly from Xcode, so this is not a battle against Adobe for commercial success in the iPhone OS developer tools market, as such a market does not exist.  They are therefore not abusing any monopoly as some people have been quick to insinuate.  Apple provides all of the tools that developers need to make good iPhone apps and Adobe’s meddling would do nothing but devalue the market that Apple has built from scratch.

Apple is completely within their rights to limit iPhone OS development to their IDE.  If developers don’t like Apple’s stance then they can happily go and develop for other platforms and buy other products.  But if they want to be in on the action and have a taste of the lucrative iPhone OS-based mobile application market that Apple has created, then they should take the plunge and move to Xcode.

These are my just views on the issue.  Many others have written on this topic far better than I.  Here are some links for further reading:

John Gruber at Daring Fireball

Thomas Fitzgerald

Jason Snell at Macworld (scroll down to the heading “Blocking out Adobe”)

Steve Cheney

Jean-Louis Gassée on Monday Note


Me elsewhere


Recent tweets

Error: Twitter did not respond. Please wait a few minutes and refresh this page.