There's been a lot of noise
in developer circles recently about Apple's new unusual iPhone developers agreement, particularly section 3.3.1. Briefly, Apple declared that you're not allowed to write iPhone/iPad/iPod software unless you use their tools to do it. Specifically, you're not allowed to write it using a level of abstraction that lets the application easily run on other devices like Androids, Windows Mobile phones, and BlackBerries.
A lot of people said this new change was targeted at Adobe, creators of Flash, a system for creating multimedia content that will work the same on any browser with their plugin installed. While the sorts of folks who comment loudly on this sort of thing have no love lost for Flash, being told how not to write software is a good way to rile up whole nests of developers.Steve Jobs recently wrote an explanation of why he doesn't want Flash on the iPhone.
But then Jobs completely undermines his discussion of the openness of the web by saying the most important reason they don't want Flash is that they think the applications with the best user experiences were written to take advantage of everything the iPhone (or Mac or whatever) offers. He suggests that it's best for the users if all iPhone apps are developed using Apple's tools:
Our motivation is simple – we want to provide the most advanced and innovative platform to our deAvelopers, and we want them to stand directly on the shoulders of this platform and create the best apps the world has ever seen.
In other words, you can stand directly on Apple's shoulders, but you'd better not stand on the shoulders of someone standing on Apple's shoulders. If some clever company invents a new way of writing really great apps, the only way iPhone users will get the benefit of that innovation is if Apple deigns to adopt it.
Yet when you visit a website on the iPad, Apple doesn't stop you because the site's designers didn't adhere to Apple's user interface guidelines or because they used a tool like GWT
So which is it, Steve? Are open standards the key to a good development environment and a good software ecosystem? Or is a single company controlling the platform the way to go?
Personally, I'm happy with my Android device
which allows you to stand on as many shoulders as you like. It's shoulders all the way down.