Coinciding with Apple’s recent developer preview of iPhone OS 4 was a small and controversial change it made to the iPhone Developer Program License Agreement. Under the updated version, section 3.3.1 now reads:
Translation – If you want to develop for the iPhone, it has to be on Apple’s terms and Apple’s terms only. That said, anyone interested in using Adobe’s upcoming Flash to iPhone compiler as part of the soon to be released CS5 suite is plum out of luck. And oh yeah, any apps developed via C# to iPhone and .NET to iPhone compilers are similarly prohibited.
This move by Apple has naturally sparked a lot of outrage amongst developers, but John Gruber of Daring Fireball lays out an argument explaining Apple’s rationale.
So what Apple does not want is for some other company to establish a de facto standard software platform on top of Cocoa Touch. Not Adobe’s Flash. Not .NET (through MonoTouch). If that were to happen, there’s no lock-in advantage. If, say, a mobile Flash software platform — which encompassed multiple lower-level platforms, running on iPhone, Android, Windows Phone 7, and BlackBerry — were established, that app market would not give people a reason to prefer the iPhone.
And, obviously, such a meta-platform would be out of Apple’s control. Consider a world where some other company’s cross-platform toolkit proved wildly popular. Then Apple releases major new features to iPhone OS, and that other company’s toolkit is slow to adopt them. At that point, it’s the other company that controls when third-party apps can make use of these features.