This article is more than 1 year old
Steve Jobs bans all apps from iPhone (or thereabouts)
Code translation verboten. Whatever that means
You could argue that the new Jobsian SDK bars developers from writing any application for the iPhone - unless they possess some sort of savant-like ability to think solely in Objective C.
The much-discussed software development kit for the upcoming iPhone OS 4.0 says that native applications must be "originally written" in Objective C, C, or C++, forbidding developers from using any sort of "translation or compatibility layer." If you take this legalese to its logical extreme, it rules out just about anything you can think of.
If you sketch out the idea for an application on a loose piece of paper - or simply dream it up one afternoon while sitting on the living room couch - don't you then have to convert it into Objective C? Do Apple's translation layers include ten fingers, a laptop keyboard, and some very hard thinking?
Apple, an artist's representation (artist unknown)
And what if you take an application that was already written in some other language for some other platform and rewrite it for the iPhone? Is that a translation too?
"Translation could mean many different things to many different reasonable people that read the agreement," says Jeff Haynie, CEO and co-founder of Appcelerator, the Silicon Valley startup whose Titanium development platform was sucked into the vortex of controversy surrounding Apple's new legalese. "What about ported apps? Was Yahoo! Messenger originally conceived and written for the iPhone? No, it was originally a desktop app."
It's no surprise then that Steve Jobs' latest effort to raise the walls around his garden has been met with a fair amount of digital hysteria. The world o' web pundits is guessing that the SDK will bar everything from Adobe's Packager for iPhone - a means of, yes, translating Flash script for the handset - to Appcelerator's Titanium to the multi-platform game development kit Unity3D and beyond. Well beyond. Adobe platform evangelist Lee Brimelow even told Apple to "Go screw yourself," arguing that the company is banning applications from its marketplace "solely [Yes, his emphasis. -Ed] because of what language was originally used to create them."
But as it stands, all we have are a few Jobsian sentences slipped into a licensing agreement. "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," are the famous words, "e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited."
They could mean almost anything. And in the end, it doesn't really matter what they mean.
You can use OpenGL. Except you can't
You might also ask if those words forbid something like OpenGL, the industry standard graphics interface that, well, Apple officially recommends to developers. When you write a shader with an OpenGL script, you're not coding in Objective C. And what about XML? asks blogger Alex Blewiitt. JSON? Macros?
We could go on. But we won't.
The long and the short of it is that those few Jobsian sentences don't mean anything at all. Whatever Apple says elsewhere in the SDK, it also reserves the right to bar applications from the iPhone App Store for any other reason it might dream up. The real test of Apple's new policy will come when developers actually start submitting applications. "It doesn't really matter what the legal wording says, because they can always change it," says Haynie. "What really matters is what Apple's intention is...
"What it comes down to is how Apple will accept or reject applications. And that hasn't changed. Apple has always had the ability to reject any app, based on many things that are not even written in the terms of services. Now they're rejecting apps that have 'pad' in the name."
Apparently, Steve Jobs has hinted the new SDK language is an effort to prevent anyone else from establishing a de facto standard platform on top of his own tools - and to ensure that when Apple introduces new APIs, developers adopt them tout de suite. "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," Jobs supposedly said, in a priviate email exchange.
And now that's the standard take among the fanboi elite. "I imagine Apple is interested to ensure that developers always have access to tools that leverage their technology as it evolves. The most effective means to reach this goal is to have just one source for developer tools. Ultimately it is the customer who wins, as they will have access to applications that take advantage of the latest and greatest features of their devices," John Muchow, then man behind iPhoneDeveloperTips.com, tells The Reg.
"As Apple releases, or otherwise makes available new features in current/future versions of the iPhone OS, they are the only ones in a position to provide tools and documentation that align with the technology at the time the technology becomes available."
Fine. Jobs can do whatever he likes with his SDK. And though the change has surely ticked off any number of developers - well beyond Adobe - he can afford to tick them off. Developers aren't likely to depart the platform over the language - at least not in large numbers - and even if they did, there are plenty of others to pick any slack. The iPhone is in the hands of too many people and will reach too many more.
But it's still unclear how far Jobs will go. Is he simply banning the likes of Adobe's Packager for iPhone, which bypass his XCode IDE entirely? Or is he also bringing the hammer down on tools like Titanium? It operates in very different ways. And Appcelerator is not Adobe.