But that the Mac offered no text mode or command-line — no stdin, no stdout — wasn’t just artistic purity. If the Mac had offered such a mode, even just as a secondary option behind the GUI, the temptation would have been perhaps irresistible for third-party developers to write character-based “Mac” software that wasn’t the least bit Mac-like at all, but instead was pretty much just like the software they’d been writing for DOS and the Apple II.
Since Apple provided no such mode, developers who wanted to write software for the Macintosh had to write Mac-like software.
That’s Chairman Gruber, in a six-year-old essay that manages the impressive feat of being insightful about the iPhone and iPad. Reflect on that a minute: developers who wanted to write software for the Mac had to write Mac-like software. You probably already see where this is going, don’t you?
The other day, Greg Slepak posted an email exchange he had with Steve Jobs about Apple’s new iPhone SDK terms, which basically prohibit developers from selling cross-compiled Flash or .NET apps on the App Store. This exchange is remarkable for two reasons:
It suggests that Steve Jobs is reading what John Gruber writes (or more likely, someone who works for Jobs is reading John’s work and passing along the really good stuff to Jobs). That’s got to feel good.
More important for what I’m trying to say here, Jobs’ last email contained a line that’s worth pondering. He said:
We’ve been there before, and intermediate layers between the platform and the developer ultimately produces sub-standard apps and hinders the progress of the platform.
As Slepak notes, we can only guess at what Jobs means by this. In particular, what does he mean that it “hinders the progress of the platform?”
I think Jobs’ concern is the same today as it was back when the original Mac came without any way to run old-style command line apps. There is a new user interface paradigm, which contains a new way to do things. Developers need to be forced to do it the new way at first because if they aren’t forced, they’ll be lazy and do it the old, worse way. On the Mac, this was about the transition from the command line to the mouse. The iPhone and iPad are about moving from the mouse to touch.
The simple effect of the new SDK is to announce, loud and clear, that developers who want to write iPhone and iPad software have to do it the iPhone and iPad way. You are supposed to use Xcode and Objective C and Webkit, just like Apple does. You are supposed to use Cocoa Touch and borrow the user interface metaphors that Apple has helpfully illustrated in their own apps. If you do anything else, Apple is going to try and stop you. That means no cross-compiling other languages; no cross-platform frameworks like Qt; nothing. Stop trying to get out of writing real iPhone apps, Apple seems to be saying.
To people who think of such things in a technical fashion, this is offensive: Why shouldn’t I be able to use whatever language and whatever tools that I want to write an app? And indeed, there is no technical argument for this at all. As long as an app isn’t linking to private APIs, and is going through the same App Store approval process as every other app, there is no technical reason that it shouldn’t be able to be written in ActionScript or based on Qt or whatever. If it provides a horrible user experience, well, let the market decide.
But the reason isn’t technical. It’s partly business (Apple doesn’t want another company to control any important part of the iPhone platform), but it’s also in no small part grounded in aesthetics and the progress of the platform. Apple wants developers to do things the iPhone and iPad Way because they believe it will result in a better user experience and better designed apps. That’s an aesthetic, design-centered argument about how touch apps should be done. Apple has created tools customized to the iPhone and iPad; hell, they built a whole new touch-based operating system. They created a whole set of user interface metaphors that are supposed to be standard and system-wide, and they want developers to do things the new way not because Apple just loves power, but because they believe it’s necessary to force developers to think about the new world of touch-based computing correctly. All of this in service of giving users who are taking their first steps into touch-based computing a great experience.
In his already infamous “go screw yourself Apple” rant, Adobe “platform evangelist” Lee Brimelow sums up Adobe’s objections to the new policy this way:
The fact that Apple would make such a hostile and despicable move like this clearly shows the difference between our two companies. All we want is to provide creative professionals an avenue to deploy their work to as many devices as possible.
I actually agree with Brimelow. This does indeed perfectly sum up the difference between the two companies. Adobe wants to sell tools to developers that allow them to create their content once and run it anywhere; Apple wants to sell users a seamless, well-designed experience.
Neither company is doing this out of a pure-hearted love for users or developers. They both want to make as much money as they can. They’ve just got different models for doing that. The Apple model is now, and always has been, to provide the best experience for end users of hardware, and to charge a premium for it. Remember, Apple didn’t create “MacOS”; they created the Mac and wrote the software needed to power it (much of which was baked into hardware as ROM). “iPhone OS” wasn’t cooked up in the abstract as an OS, the way Android was; it was created to be the OS that ran the iPhone. iPhone OS and MacOS are bespoke; Android and MS-DOS and Windows are off-the-rack. So is Flash.
The Adobe model is now, and always has been, to provide the best content creation tools for authors and artists of all stripes, and to charge a premium for that. And there isn’t anything wrong with that. A clothing designer can make a lot of money designing a pair of commodity pants once and selling it in a few standard sizes.
Similarly, life is probably easier as a developer if you can write your Flash app once and run it on the Web, on Android, on the iPhone, on the JooJoo. But life is easier as a user if everything on your iPhone works as you expect, using common interface metaphors that you’ve grown to understand. Apple’s view is simple. To mash-up John and Steve:
Developers who want to write software for the iPhone have to write iPhone-like software. To do otherwise will hinder the progress of the platform.