This question was inspired by two interesting articles: "How Microsoft Lost the API War" by SO's very own Joel Spolsky, written in 2004, and "From Win32 to Cocoa: a Windows user's conversion to Mac OS X" [Part 2] [Part 3] by ArsTechnica's Peter Bright in 2008. These two authors believe that Microsoft has lost its focus on the API that made it the platform of choice for developers. As Spolsky writes:
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.
Bright says:
Windows is dying, Windows applications suck, and Microsoft is too blinkered to fix any of it—that's the argument. The truth is that Windows is hampered by 25-year old design decisions. These decisions mean that it's clunky to use and absolutely horrible to write applications for. The applications that people do write are almost universally terrible. They're ugly, they're inconsistent, they're disorganized; there's no finesse, no care lavished on them. Microsoft—surely the company with the greatest interest in making Windows and Windows applications exude quality—is, in fact, one of the worst perpetrators.
Considering Microsoft's recent software offerings with the Vista API, .NET 3.5, LINQ, and WPF, would you say this still true? Or does Microsoft's future lie with ASP.NET and MVC, and Silverlight (aka WPF Everywhere)?
In other words, if you could start a brand-new project from scratch, with no dependencies or old code to support, what would you choose to develop with (Win32, WPF, .NET, Cocoa, ASP.NET, etc)? Is Microsoft winning or losing the API war?