Joel puts it so much more eloquently than I: How Microsoft Lost the API War
Some bits for discussion:
A lot of developers and engineers don't agree with this way of working. If the application did something bad, or relied on some undocumented behavior, they think, it should just break when the OS gets upgraded.
I'd noticed this creeping into MS weblogs, or more accurately, statements that backwards compatibility was impossible. A statement I'd always viewed as odd given the history of MS.
One runtime to rule them all. It was beautiful. And they pulled it off, technically. .NET is a great programming environment that manages your memory and has a rich, complete, and consistent interface to the operating system and a rich, super complete, and elegant object library for basic operations.
Here I disagree, it doesn't have a complete ... interface to the operating system - its one of the problems (OK probably fixed in Whidbey, or at least better, but see previous post about Not writing apps with WinForms).
And yet, people aren't really using .NET much.
Oh sure, some of them are.
Interesting, reading MS weblogs etc one gets the impression that everyone is using it and yet there doesn't seem to be much eveidence for it - just looking in the wrong place I kept telling myself.
And the ones that are using .NET are using ASP.NET to develop web applications, which run on a Windows server but don't require Windows clients
Much the real world impression I was getting.
No developer with a day job has time to keep up with all the new development tools coming out of Redmond, if only because there are too many dang employees at Microsoft making development tools!
Yup, agree there - and they don't document properly what they do so the time required goes through the roof.
Promising new technologies like HTAs and DHTML were stopped in their tracks.
Yup, agree there, but there is Zeepe.
I'm actually a little bit sad about this, myself. To me the Web is great but Web-based applications with their sucky, high-latency, inconsistent user interfaces are a huge step backwards in daily usability.
But they needn't be. I have been amazed that people have been able top describe WinForms/Avalon as rich with the implication that HTML is poor. This misses two points:
HTML is very rich and can be very dynamic (alot of what XAML/Avalon do can be done now in DHMTL + appropriate browser)
XHTML is incredibly extensible by the <object> tag and by namespaces - I call this astonishingly rich. Why did components become so unfashionable and yet downloading .NET libraries become so fashionable.