I've been following the total shit storm blowing all over the web re: the new iPhone OS 4 ToS and the dreaded clause 3.3.1 from my favorite perch at HN. Been mulling a post since this whole thing started and all of a sudden posterous gives me a reason to do it. Everyone who knows me knows that I am totally into Apple and their products. Unfortunately, I love their Products but hate their Policies. For those not in the know lets take a look at the latest wrinkle in the Emperor's finest robe:
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).
Oy, where to begin... Ok, lets start with some programming 101. Virtually everything that you and I do on a modern computer is written in a language the computer does not understand. Programmers write programs in many, many, many, many different languages. Almost too many to count. Simply, what happens next is that these programs are translated into machine code that the physical computer actually knows what to do with. Further, programmers are know to program in one language to translate into another and so on for a long time now. The fact that Apple has unanimously decided to usurp the practice of programming for it's product is, simply, outrageous. On its face this ToS change is ridiculous, counter productive and a step backwards for the discipline. Also, I plainly do not believe it is enforceable at a technical level.
Most everybody who has even a passing interest in the iPhone knows that the only way to get a program onto an iPhone is via the prescribed anointed channel - The App Store. What is less known is that there are other ways to get illicit (from Apple's perspective) software on the iPhone by means of - what boils down to - exploiting software vulnerabilities in the iPhone OS. Apple succeeded in creating a closed ecosystem and justified it under the guise of securing their product on behalf of the users (Oh, the children! Save the children!). And now Apple is taking another step on the other side of the device by dictating more stringent terms to their developer community. Even before this latest encumberment, there was a lively discussion revolving around the seemingly capricious position Apple was taking by acting as judge, jury and executioner for all who wanted to deploy on iPhone OS. With this latest step I am here to tell you that Apple has officially crossed the line.
Lets talk in practicalities. Like everyone else, programmers have areas that they excel in. In particular programmers gravitate towards different languages for one reason or another and make their home in one or more language. By limiting which languages are acceptable, Apple is forcing those who want to program for the iPhone to become proficient in one of their anointed languages. According to these new rules, third party tools which allow a programmer to program in another fashion and produce output which will work on the iPhone OS are verboten. Unfortunately for Apple the world is a lot smaller than it was in the 1980's and 1990's. Word spreads, the few people who actually read ToS's tweet their findings from their android mobiles. Perhaps most corrosively, cultures evolve. The developer community today is not the same as decades past. Today's best and brightest are milling about the Google Code, Bitbucket and Github water coolers. Coding has moved from a solitary pursuit to a social engagement. Coders and hackers and programmers are actively seeking each other out and discussing the latest and greatest events of the day in real-time, all the time. This move seriously threatens to undermine Apple's credibility in this community. The very same community that can make or break the iPhone OS in all it's hardware manifestations.
At the end of the day, this rule change is not only bad for programmers, bad for consumers but most importantly it sets a terrible precedent for the future of programming. Where is the freedom to innovate when all directives come from a central command? Recent history has already shown us how IBM and Microsoft abused their position to their long term detriment and how a command economy can fail. My related comment on one of the HN threads regarding this issue had an interesting historical reply. Turns out AT&T tried a similar thing back when they ruled the roost. Imagine that you had to use one of AT&T's phone to make a phone call? Absurd? Not so. Ironic then that Steve and Woz got their start hacking hardware to scam long distance phone calls from AT&T! Meet the new boss, same as the old boss. I really want to see Apple win in the marketplace. They have been for a while now and I would like to see it continue - but at what price? I'll reserve judgement till iPhone OS 4 actually ships but developers have to agree to the terms now. I, for one, say that if things stay the way they are it is too high a price to pay and I'll just shift my stack and double down on Google.