Joel on Software has an excellent (long) article entitled
How Microsoft Lost the API War, which chronicles why Windows API (the "crown jewel") is losing share.
This is a really great article. Asks and answers some good questions. (It also pointed me to another interesting blog: Raymond Chen's
The Old New Thing.)
Joel's article is basically about the backwards-compatibility "camp" versus the "latest and greatest whizbang" camp within Microsoft. The author postulates that the whizbang camp (which he hilariously calls the "MSDN Magazine" camp) has won.
Some excerpts:
The first big win was making Visual Basic.NET not backwards-compatible with VB 6.0. This was literally the first time in living memory that when you bought an upgrade to a Microsoft product, your old data (i.e. the code you had written in VB6) could not be imported perfectly and silently. It was the first time a Microsoft upgrade did not respect the work that users did using the previous version of a product.
And the sky didn't seem to fall, not inside Microsoft. VB6 developers were up in arms, but they were disappearing anyway, because most of them were corporate developers who were migrating to web development anyway. The real long term damage was hidden.
Amen, my brother. But try explaining that VB is dead to number-crunchers using monster.com searches as the Final Authority as to technology greatness. Sigh.
Outside developers, who were never particularly happy with the complexity of Windows development, have defected from the Microsoft platform en-masse and are now developing for the web. Paul Graham, who created Yahoo! Stores in the early days of the dotcom boom, summarized it eloquently: "There is all the more reason for startups to write Web-based software now, because writing desktop software has become a lot less fun. If you want to write desktop software now you do it on Microsoft's terms, calling their APIs and working around their buggy OS."
Preach it.
And now, he goes off on a tangent which I really love:
A lot of us thought in the 1990s that the big battle would be between procedural and object oriented programming, and we thought that object oriented programming would provide a big boost in programmer productivity. I thought that, too. Some people still think that. It turns out we were wrong. Object oriented programming is handy dandy, but it's not really the productivity booster that was promised. The real significant productivity advance we've had in programming has been from languages which manage memory for you automatically.
Hallelujah! This is why perl and java succeed even in the face of their "slow as a dog's hindquarters" reputations.
And now I have to stop because the article at this point goes off on so many valid, cool points that I can't even transcribe them all. Here's a teaser, then you must
go read this for yourself.
So the Web user interface is about 80% there, and even without new web browsers we can probably get 95% there. This is Good Enough for most people and it's certainly good enough for developers, who have voted to develop almost every significant new application as a web application.
Which means, suddenly, Microsoft's API doesn't matter so much. Web applications don't require Windows.
Go, go, go.
Go read it. And open your eyes...