Home > Blogs > iPhone OS 4.0 SDK License Controversy

iPhone OS 4.0 SDK License Controversy

By  Apr 17, 2010

Topics: Programming, C/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." This legalese seems to rule out just about anything you can think of -- translating an application written in any other language to C++. However, this stern interpretation is probably exaggerated. Besides, when you consider the outcry and criticism with which Apple's license was greeted, you can't help but wondering where all these freedom of expression activists were when Sun -- and later Microsoft and Google -- imposed similar draconian restrictions on developers.

What Apple had in mind (if I may guess) is something a bit different -- they want developers to write iPhone apps in one of these three languages (JavaScript is also permitted). The philosophical question: "what constitutes 'translation'?" is interesting but in the software world it usually means: machine translation (e.g., Facebook's HipHip for PHP project which automatically translates PHP code to C++), and not a porting project whereby human programmers are writing new code that's roughly equivalent in terms of functionality.

In an ideal world, developers would be allowed to use whatever programming language they desire. Alas, that ideal world ceased to exist sometime in the mid 1990s when Sun started to push its Java programming language (sorry, platform) aggressively. They pretended that they cared about security but the real reason was obvious: locking users in Sun's proprietary programming language, which has never been exactly the picture of top-notch performance. Sun may have set the bluntest example of such lock-in policy but Microsoft and Google have exercised a similar strategy, each trying to promote its proprietary development tools, languages and platforms.

It's therefore interesting to observe the clamor and outcry that IT experts have expressed regarding Apple's policy. Aren't these the same people who lauded and bowed to Sun's monopolistic behavior some 15 years ago? And aren't these the same people who have been praising and adoring Google for Android? So what has transformed them into bleeding-heart activists of freedom of expression and democratic values all of a sudden?

I wholeheartedly believe in letting developers use the programming language they desire. However, the rules of the game changed some 15 years ago. It's hypocritical to criticize Apple just because your pet language isn't included in iPhone's developer's license while practicing the silence of the lambs when other manufacturers impose draconian restrictions on C++ developers for ages. Apple's considerations are not that off the wall, by the way. They want developers to use Apple's proprietary language (Objective-C), which is more less what all other major players have been doing. Additionally, Apple also lets developers use truly open and no-strings-attached languages such as C and C++.  Very few programming languages these days are as free as C and C++, I regret to say.

I bet that had Apple chosen Java or Ruby as their pet language, Steve Jobs would have been greeted with praise and admiration for his innovative and brave decision.