Microsoft’s Windows API has been on the majority of desktop computers for most of the past two decades – in fact, many computer users have never used anything else.
About four years ago, Joel Spolksy wrote a blog post entitled “How Microsoft Lost the API War”. It has an excellent description of what an API is (see the sidebar entitled “What is this “API” thing?”) and why it is so important. Here are some excerpts:
Remember the definition of an operating system? It’s the thing that manages a computer’s resources so that application programs can run. People don’t really care much about operating systems; they care about those application programs that the operating system makes possible….
It is a positive feedback loop. When one operating system becomes more popular than the others, more developers will write applications for it – which, in turn, makes it become even more popular. This has been the dynamic of the Windows near-monopoly (and MSDOS before it) since the 1980’s.
Making it easy to upgrade applications accross multilple generations of MS operating systems (see my post about running four generations of applications on Vista) has taken enormous amounts of engineering resources. Joel gives us this example:
I first heard about this from one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: it used memory right after freeing it, a major no-no that happened to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away. The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
So, probably somewhere deep in the Vista operating system on my computer, there is a piece of software that checks to see if I am running a 16-bit version of SimCity and will make the necessary adjustments to ensure that it works properly.
In recent years, Internet applications have been gaining market share from traditional desktop applications, and so the Windows API is losing much of its relevence. As Joel says:
Microsoft’s crown strategic jewel, the Windows API, is lost. The cornerstone of Microsoft’s monopoly power and incredibly profitable Windows and Office franchises, which account for virtually all of Microsoft’s income and covers up a huge array of unprofitable or marginally profitable product lines, the Windows API is no longer of much interest to developers. The goose that lays the golden eggs is not quite dead, but it does have a terminal disease, one that nobody noticed yet.
We are in the early stages of computers becoming as simple to use as other consumer appliances (eg radios, televisions, iPods, etc). Paul Graham states it well:
When we look back on the desktop software era, I think we’ll marvel at the inconveniences people put up with, just as we marvel now at what early car owners put up with. For the first twenty or thirty years, you had to be a car expert to own a car. But cars were such a big win that lots of people who weren’t car experts wanted to have them as well.
….
With Web-based software, most users won’t have to think about anything except the applications they use. All the messy, changing stuff will be sitting on a server somewhere, maintained by the kind of people who are good at that kind of thing. And so you won’t ordinarily need a computer, per se, to use software. All you’ll need will be something with a keyboard, a screen, and a Web browser. Maybe it will have wireless Internet access. Maybe it will also be your cell phone. Whatever it is, it will be consumer electronics: something that costs about $200, and that people choose mostly based on how the case looks. You’ll pay more for Internet services than you do for the hardware, just as you do now with telephones.
Microsoft faces a problem today that is not so much technical as it is cultural. Many (probably most) people today use computers primarily as a way of accessing the Internet and, for them the browser is more important than the desktop. What people want to do is search for information (Google, RSS), share opinions (newsgroups, blogs), be entertained (YouTube), join others in online activities (EverQuest, World of Warcraft, Second Life), or just stay in contact (email).
The Internet has a social dimension that desktop computing never had.
If Microsoft brings out products that are technically advanced but cannot be widely used, they may fail because developers will see the potential market as being too limited. But, if they follow commonly accepted standards, they won’t be able to enjoy their customary profits.
Exporting the Windows desktop monopoly to the Internet arena is likely going to prove impossible. The acronym “RIA” is commonly taken to mean “Rich Internet Application” whereas Microsoft likes to interpret it as “Rich Interactive Application” – superior user experience may be their hoped-for advantage in the emerging online applications market.
When Steve Ballmer was jumping around on stage shouting “Developers, Developers, Developers”, I think that he had it backwards. Look at how many developers there are for HTML and Javascript. Why, because these technologies are widely deployed and the market is huge. Steve should have been shouting “Deployment, Deployment, Deployment”. Put your technology on 800 million computers and you will soon have lots of developers.
Microsoft understood the desktop; I don’t think that they understand the Internet.