Apple has stirred up a tempest in a teapot with its new restrictions on iPhone development. Their new iPhone OS 4 terms of service bans cross-compiled apps and forces developers to write their apps in C/C++/Objective-C.
While all software reflects the assumptions of the developer, Ruby on Rails is probably the only software that is explicit about being “opinionated”. While the “golden path” in Rails encourages you to construct your database and app following certain conventions people generally think this is a good thing.
Those who strongly disagree live a frustrating life or find another framework. Apple is no less opinionated than Rails. You can see it in every application they build. Music purchased from iTunes or ripped from a purchased CD and works seamlessly with your iPod. The software is designed to encourage exactly that easily monetizable workflow and discourage things that are difficult to monetize.
Want to get those lossless FLAC files you downloaded from PirateBay on your iPod? The average user is in for a painful experience. Stay on the path.
To me, Apples new terms of service really seems like Apple finally asserting a “golden path” for iPhone development, just as they have for digital media with iTunes. The difference between Rails “golden path” and the Apple “golden path” really seems to be one of magnitude. Rails is aimed at a niche, while Apple runs an entire platform. They make the language, the IDE, the OS, most of the software and the hardware. Each of them with their own paths, but collectively comprising a larger path. Surrounded by enough golden paths you will eventually have a gilded cage.
Want to make millions in the App store? Build an app in a way that benefits Apple or piss off and build a web app. Stay on the path.
My suspicion is, the App Store goldrush has brought a bunch of new developers to the Apple platform, ones for whom “Apple or piss off” probably doesn’t feel like anything than can rightfully be called a choice. When you start writing code for a certain platform, you are buying into the whole platform, philosophy and all. You are endorsing and encouraging its use by extending its capabilities. After embracing and extending the closed platform these developers seem offended by Apples move to shut down Adobe’s attempt to open up the platform a little.
To me it seems strange to complain when a restrictive platform restricts you. Apple strictly controls every other aspect of the platform, why not dictate what language developers “originally” write in? Or the tools they use? Or the colour underpants they can wear when coding? In a closed system, why is there even an expectation that these things WOULDN’T be dictated to you?
Considering you can’t even change a battery in an iPod, why would anyone expect Apple to let developers work in a non-Apple language or with a non-Apple tool? Expecting both seems like a big ask. Its a closed platform. After all a developer who has written a few iPhone apps in Flash has gained a lot of experience with Flash and related tools but probably very little about the Apple platform and its tools.
The skill-set a developer gains from repeated exposure to a language or platform is valuable.Very valuable. This is why Microsoft is so heavily involved in schools. Just another kind of vendor lock in. Why would Apple let Adobe (or any other company) prevent developers from tying themselves tightly to Apple?
For better or for worse, a gilded cage is what Apple is offering, both for its users and developers. I don’t want any part of it, but I can’t fault them for doing it. For those don’t mind bars, you really won’t find a nicer cage…