Let me just gush for a moment and say that Joel Spolsky is a God. I have long extolled the virtues of every programmer reading Joel on Software religiously. It is the #1 programming blog by a country mile because it is the best bar none.
Just today I came across How Microsoft Lost the API War. In it Joel questions the sanity of breaking backward compatibility with the (then) upcoming Windows Vista (then codenamed Longhorn). He also states that the desktop just doesn't matter anymore because it's all about the Web.
This is pretty much accepted wisdom now but what makes this posting amazing is that it was written in 2004.
Microsoft is fighting a desperate rearguard action on two fronts. Firstly, it is struggling to stay relevant as a Web content delivery platform, which with ASP.NET it's doing a fairly reasonable job on. Love it or hate it, ASP.NET is popular but with PHP, Java, Ruby and Django (pretty much in that order) all vying for that particular crown, the battle is far from won.
The second--arguably more interesting--front is for the rich client. This space is currently dominated by Adobe with Flash/Flex. Sun in the last year made a stillborn play for this market with JavaFX. Microsoft has a far more plausible solution with Silverlight.
Silverlight on paper has a lot going for it. It leverages the .Net platform, you can write Silverlight applications in any .Net language and (more importantly) you can use the same code in the client and the server (within the constraints of the Silverlight subset of APIs). This last point is a compelling advantage over Flash/Flex where you have one (arguably rudimentary) language for the client and something else (eg Java) on the server.
I have said--and maintain--that "Windows is by far .Net's biggest Achilles heel". .Net is designed to sell Windows licenses so it's no surprise that it is Windows-centric. So desperate is Microsoft is to succeed here that they took the unprecedented move of supporting the Moonlight project and an Eclipse plugin for development.
The desperation is more apparent with the Silverlight 3 announcement and how it cannibalizes WPF.
Two important events have happened recently that have knocked the wind out of Microsoft:
- NBC dumps Microsoft Silverlight after Olympics Note: Not everyone agrees with this characterization; and
- New York Times Dropping WPF/Silverlight for Adobe AIR.
On the Times:
Unfortunately the Silverlight version has been plagued with problems, both political and technical. The biggest hurdle was the lack of cross-platform support. Though based on WPF or Windows Presentation Foundation, Silverlight only has a subset of WPF’s capabilities. This makes writing code that works on both difficult and most developers seem to end up maintaining two separate code bases. Silverlight 2.0 is designed to run within a browser, a limitation not found in WPF. Apple users, who tend to be sensitive to such issues, rightfully complained about not having all the same features as Windows users.
Whether true or not, justified or not or overblown or not, this is a big deal and alarm bells should be ringing in Redmond. The problem, as I see it, is that Microsoft lacks singularity of purpose.
The ipod became the behemoth of portable music in part because Apple decided to make the best digital music player they could (although it was originally--briefly--Mac only). Sony's Playstation 3 shipped late and is struggling against the Xbox 360 and Nintendo Wii in part because they used it as a pawn against Toshiba for the next-gen optical format (and that may yet turn into winning the battle but losing the war). Internet Explorer 4 decimated Netscape because Microsoft had decided to make the best browser they could that ran as fast as possible while Netscape were trying to build a communications platform.
The common theme here is singularity of purpose. Those who have it tend to succeed against those who don't. Every competing goal is a compromise.
Microsoft may yet succeed with Silverlight but the price of victory might be Windows. Is Redmond willing to pay that price?