Wednesday, June 23, 2004

Web Applications and the API War

Joel Spolsky’s essay on how Microsoft lost the API war is typical Joel. It’s informed and well-written, and yet because some of the minor points and assumptions are unsupported, I don’t quite believe the conclusion. When I read an essay at Daring Fireball (which you should support), the points usually click into place. I can often see early on where Gruber is going to take an argument and how he’ll get there. Then it’s just a matter of watching the exquisitely crafted dominos fall. Would Joel on Software read like that if I had a Windows background instead of a Mac background?

In any case, my main problem with Spolsky’s argument is that he sees .Net as almost a Netscape 6 kind of rewrite. But imagine if Mac OS 9 applications ran as first-class citizens on Mac OS X and if Carbon had automatic memory management and were accessible from a variety of modern languages. Now, maybe I’m all wrong, but I see this as good for Microsoft. They’ve maintained compatibility for Win32 applications. If there’s no return on your investment for porting to .Net, then don’t do it. At the same time, it is now much more attractive for developers to write new applications that will only work on Longhorn. Good developers like good tools; by providing good tools (and lots of marketshare—large numbers of people will upgrade to Longhorn), Microsoft will ensure that Windows development remains vibrant.

The “MSDN Magazine” technologies that Microsoft is always trying to sell to developers sound like QuickDraw GX, OpenDoc, and PowerTalk. Nice as these technologies were, Apple was never fully behind them. But by Spolsky’s own admission, the MSDN Magazine Camp has won. .Net is not a novelty, but a bet-the-company initiative. And not a very risky bet at that—unlike sticking with Win32 forever. Long-term, Win32 is a lose, and not just because of the Web. Microsoft realized this before most people. There was no way to restore the old jewel’s luster, so they built a new one, .Net, to keep desktop developers locked in, and to try to lock in the Web developers as well.

Speaking of Web developers, John Gruber has some interesting thoughts about Web applications:

The persnickety little UI details I obsess over — these are nothing compared to the massive deficiencies of even the best web app. But most people don’t care, because web apps are just so damned easy to use. What’s interesting is that web apps are “easy” despite their glaring user experience limitations.

What I missed when I dismissed them a decade ago is that web apps don’t need to beat desktop apps on the same terms. What’s happened is that they’re beating them on an entirely different set of terms. It’s all about the fact that you just type the URL and there’s your email.

I have two things to say about Web applications. First, they will continue to only make sense for certain kinds of functionality. The Web is becoming more important, and yet desktop isn’t going away. This is because software isn’t a zero-sum game like mindshare is. New Web applications don’t necessarily mean fewer desktop applications. On the contrary, we’ll need more desktop applications just to help build Web applications, and wrappers like Watson and Netflix Freak to make them easier to use. These are, of course, markets that .Net is aimed at capturing.

Second, I think the interesting thing about Web applications is how they play with our expectations. As bad as even the best Web applications are, they somehow feel better than non-native Mac applications—because they’re good for what they are. Exclude, for the moment, the benefits of being able to use a Web application, with your data, on any computer. Would you rather use Gmail or Chandler? Yahoo! Calendar or the original Palm Desktop?

3 Comments RSS · Twitter

You assert that large numbers of people will upgrade to Longhorn. First, what is your basis for this assertion? Second, not to be antagonistic, but, um, Pot, meet Kettle. ;) Your very first statement brings Joel to task for asserting without proof.

Other than that, you also claim that web apps will only continue to make sense for certain kinds of functionality, a statement with which I disagree. From the work that's begun at, to the growing maturity of SVG et al., I think we are on the verge of a renaissance for web application functionality. For that matter, give it a few years, and Moore's Law will give us the processing power to handle desktop-app-level functionality through a browser. The inevitable standards battles with which we are intimately familiar will, I think, continue to hold us back, but I have faith that we can invent our way out of that particular mess.

On the other hand, I agree with you that we will see a greater number of internet-aware and -dependent desktop applications. And I also agree that web apps set expectations too low. I think our way forward is to concentrate on building easier means of creating network-aware applications. The key to the web in the past has been the combination of ubiquity of the runtime (the browser), and the ease of GUI construction using HTML.

Looking forward, if we can get similar ubiquity of a next-generation "runtime", one that is accepted as a de facto standard, and that uses something (nearly) as simple as HTML to construct GUI facades, we will... we will... um, I guess we will continue to rock, right? Or pick a suitable analog for succeeding.

Maybe the problem arises when you face the issue of complexity. In short, a good app is only as simple as it needs to be to get the job done, and no simpler. Which is why Photoshop is so huge; its job is huge. Part of the reason for the success of web apps is the low barrier to entry for creating the user interface. Part of the result of that success is the poor usability of the apps, caused by folks who don't know good interface design from a hole in the ground (myself included, unfortunately).

Good UIs are hard. Good software is hard. Good anything is likely to be hard.

The web is the world's central mainframe. That's valuable to a lot of people. Microsoft is going to lose on that basis unless the .NET APIs are available in every web browser.

As a longtime Mac developer, I don't always find myself agreeing with the Daring Fireball screeds. But it often turns out John was right and I was wrong, like when I had a more positive view of Andrew Stone's writings about Cocoa vs Carbon, and then Andrew Stone pretty much validated John's opinion on his website.

Peter: I didn't mean to imply that Joel should support all of his assertions and assumptions. That's probably not practical. Rather, I was trying to make the point that his arguments would probably be more convincing (to me), if we had more common background experience and outlook. No antagonism intended.

Joel's whole argument rests on the assertion that Longhorn won't have critical mass until it's too late. He may be right. But I'm not convinced that (a) lots of users won't upgrade for a long time, and that (b) these same reticent users will upgrade their browsers (to what?) and make the jump to Web applications. Also, millions of PCs with Longhorn will ship each year, and I think that will be an attractive market for developers to target.

Personally, I think that Web applications work because the requirements for them are relatively low. They're currently at a sweet spot in terms of what you get for a given amount of development work. Continuations are the most promising technology I've seen for scaling them up.

For desktop-level functionality in the browser, we already have Java. Everyone has theories for why that hasn't caught on.

Chris T: Does Microsoft lose if .Net is used to create the Web applications that run in today's browsers?

Leave a Comment