There's been a lotofnoise 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. He starts by painting Flash as a closed system -- Adobe controls the authoring tools and the play environment. He contrasts this with the open standards of HTML5, CSS, and JavaScript, the technologies at the front of most websites. The great thing about HTML is that anyone can create stuff in it and anyone can access it with a browser tailored to their device's peculiarities. So far, so good.

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 to make the JavaScript work for all browsers. So if somebody wants to write an app that can run on iPhones, Androids, BlackBerries, and who knows what else, their choices are to write it twice: once for the iPhone and once for everything else. Or they can take Steve Jobs's advice and write it once for the web and bypass Apple's restricted platform. If they do the latter, they don't have to wait in App Store limbo, they can include porn if they want, and Apple doesn't take a cut of their profits. What's the down side?

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.