Your essay on "How Microsoft Lost the API War" argues that Web-based applications are winning out over desktop-based "rich client" programs. Is everything headed in that direction?
I don't know if Photoshop will ever quite go to the Web. There's two limitations to the Web: One is the quality of the user interface you can create, which is deliberately hobbled by incompatibilities between Javascript implementations and DOM and stuff like that, deliberately hobbled by Microsoft pulling the plug on Internet Explorer development. So it's interesting to see if that will ever get any better. I hope it will.
I think what's likely to happen is that Firefox right now already has enough market share, or will in the next couple of months, to make it a testing requirement for almost every serious Web developer. Which means that in the next six months, if there were any Web sites that aren't compatible with Firefox, they will rapidly disappear. Everybody says, "I gotta keep Internet Explorer around for my bank!" Those things are rapidly disappearing.
Once that falls away, you really will have a full choice, Firefox or Internet Explorer, so there will be zero reason left not to go to Firefox. And then you'll start to see a lot more of a real 50/50 kind of split, or 30/70, whatever. And so now there's actually a possibility that Firefox might be able to implement some innovations, as long as they downgrade gracefully on Internet Explorer somehow.
So one of the things that might be neat that they could do is, give me a text area, in the text area tag let me say "HTML = true" or something, and that text area becomes a rich edit, and it submits HTML, with little bold tags and italic tags. As a Web designer, I don't care what the user interface is, that's entirely up to the Web browser, so Web browsers could show me a little italic button, a bold button, maybe a toolbar and keyboard shortcuts -- that's something the browsers could compete with, how good an HTML editor they give you. So then anybody making any kind of content management system can instantly let you edit rich text, with just this one little tag.
Anyone who uses any kind of Web application would be very grateful.
As soon as you start doing things like that, then the limitations of the Web as a platform will start to fall away very quickly. I don't know if you'd ever get a serious word processor in a Web browser. Maybe you could.
There's a couple of other issues which would be nice to solve. One is to give you a way to work offline in limited circumstances. Let's say you wanted to make Gmail, but Gmail where you could actually take it on a plane and work offline, read your e-mail and send e-mail, queue it up for delivery. And so somebody could develop some kind of standardized system for doing that kind of offline work. Adam Bosworth has been working on this a lot -- we'll see if anything comes out of that, now that he's at Google. That would be cool.
But the funny thing is, Bosworth has been talking about this same problem for a long time -- he's just obsessed with the person on the airplane. And, lo and behold, airplanes are actually getting Internet connections. And Wi-Fi is spreading like crazy. What's kind of surprising is that it has turned out to be easier to rewire the entire world for high-bandwidth Internet than it is to make a good replication architecture so you can work disconnected! It's actually far more likely that this problem will be solved that way, oddly enough.
The other problem is the richness of the user interface. If you want to make an application like, say, Photoshop, doing it on the Web would really suck. But there are ways you could consider making that happen. If you could have billions of gallons of Javascript, and if the Web browser gave you simple drawing capabilities and a simple canvas to draw on, then you could implement Photoshop 100 percent in Javascript. Trouble is, it's a lot of code, and Javascript is not an efficient language; it's not fast, and for security reasons, it's actually hobbled in all kinds of ways that people don't even know about. For example, by the time you give it about 500,000 Javascript statements, the Web browser just turns it off.
It assumes either you're broken or you're hostile?
You're trying to attack it. So work around some of these other problems, figure out how to get Javascript compiled, and fast. If you could address every one of these issues -- which are not so hard to address, not more than a couple of years' development work for someone like Microsoft or Google or Netscape -- then that's it for the rich applications. It's over.
The reasons people like rich applications are like, "Look, you can multi-select seven things in a folder!" I know, I love that stuff, too. But you know what, there's a different Web interface for that -- you put little check boxes next to those seven things, and then you press a button saying "move," and then you choose a folder. OK, it's not super good, but for one, it's easier for most people to use. It's a bit of a step backward; I'm a little bit disappointed. There's latency on the Web where you wait for the next page to come on; you're always waiting for things. But those are things good programmers can work around. I'm sort of surprised they haven't. It's surprising what you can do with Javascript and Flash.
It feels like in the last year we've begun to see more of that, from Gmail --
Oddpost. Flickr. And there really is a large crowd of people who like having everything on the Web where they can access it everywhere. Not just college students. My dad travels a lot, giving lectures all over the world, and he has switched to Gmail.
There's more writing about programming on the Web today than ever before -- it seems like every developer on the planet has a blog. If this much expertise is being shared, won't that improve the quality of the software being built?
Partially yes. But the majority of people still don't read. Or write. The majority of developers don't read books about software development, they don't read Web sites about software development, they don't even read Slashdot. But it is true that Microsoft used to have some severe advantages. They knew this stuff, they'd figured it out, and lots of other people hadn't. Not just Microsoft -- Lotus, whatever.
Places with big groups of developers sharing their tricks.
Yeah. And Digital. That was Digital's great strength, in those years, though they were more engineering. But even in software, they had a culture of managing engineering. Today, as I look around, even though it's all on the Web, and there's a million things you can read about how to make your software project work well and so forth, you still see the same old characters in Silicon Valley that should know better by now, because it's their third company, making the same mistakes, doing the same things wrong. Making the same silly assumptions.
That's just human nature -- the march of folly.
It's not even folly. You can sit there and preach, "You should do this!" And even if it's a very convincing argument, that doesn't necessarily cause institutional knowledge of why you should do it to be transferred. There's much to be said for learning from experience.
And the truth is, things have changed so rapidly in programming and computer technology that a lot of the time, when you're learning from experience, it may be wrong. For example, I wanted to learn how to market software. There's this great book by this guy Rick Chapman, who has taken over Softletter, the software industry's newsletter. And he's got this big thick book -- he sells it for like $100 on his Web site -- and it's everything you need to know about marketing software. It's really great. It talks all about how to get into CompUSA and Egghead, and retail boxes, the companies that will make the boxes for you, and how you get your CDs duplicated, all this kind of stuff. Great details about all the incentive programs you use to make sure that CompUSA puts your box at eye level. All wrong!
All ancient history in the era of downloadable software.
So even if people hung around long enough in this industry to learn from them, you are right to be skeptical of your elders. Your elders may be wrong. I was writing about the benefits of the rich client years ago, and I was wrong. Not thoroughly wrong -- there are still benefits. But anybody who listened to me made a mistake.