I read Joel Spolsky's How Microsoft Lost the API War yesterday and found it pleasantly coincidental. Some of the issues Joel brings are questions I've begun asking myself and others at work so I definitely agree with a lot of the sentiments in the article. My main problem with Joel's piece is that it doesn't have a central theme but instead meanders a little and lumps together some related but distinct issues. From where I sit, Joel's article made a few different major & minor points which bear being teased out and talked about separately. The points I found most interesting were

Major Points

  1. The primary value of a platform is how productive it makes developers, its ubiquity and how much of a stable environment it provides for them over time. Microsoft's actions in how has released both the .NET Framework and its upcoming plans for Longhorn run counter to this conventional wisdom.
  2. Microsoft used to be religious about backwards compatibility, now it no longer is.

Minor Points 

  1. The trend in application development is moving to Web applications instead of desktop applications.
  2. A lot of developers using the .NET Framework use ASP.NET, client developers haven't yet embraced the .NET Framework.
  3. The primary goal of WinFS (making search better)  can be acheived by less intrusive, simpler mechanisms.

So now to dive into his points in more detail.

.NET and Longhorn as Fire & Motion

The primary value of a platform is how productive it makes developers, its ubiquity and how much of a stable environment it provides for them over time. Microsoft's actions in how has released both the .NET Framework and its upcoming plans for Longhorn run counter to this conventional wisdom.

Joel approaches this point from two angles. First of all he rhapsodizes about how the Windows team bends over backwards to achieve backwards compatibility in their APIs even when this means keeping bug compatibility with old versions or adding code to handle specific badly written applications . This means users can migrate applications from OS release to OS release thus widening the pool of applications that can be used per OS. This is in contrast to the actions of competitors like Apple. 

Secondly, he argues that Microsoft is trying to force too many paradigm shifts on developers in too short a time.  First of all, developers have to make the leap from native code (Win32/COM/ASP/ADO) to managed code (ASP.NET/ADO.NET) but now Microsoft has already telegraphed that another paradigm shift is coming in the shape of Longhorn and WinFX. Even if you've made the leap to using the .NET Framework, Microsoft has already stated that technologies in the next release of the .Net Framework (Winforms, ASP.NET Web Services) are already outclassed by technologies in the pipeline (Avalon, Indigo). However to get these later benefits one not only needs to upgrade the development platform but the operating system as well. This second point bothers me a lot and I actually shot a mail to some MSFT VPs about 2 weeks ago raising a similar point with regards to certain upcoming technologies. I expected to get ignored but actually got a reasonable response from Soma with pointers on folks to have followup discussions with. So the folks above are aware of the concerns in this space. Duh!

The only problem I have with Joel's argument in this regard is that I think he connects the dots incorrectly. He agrees that Windows programming was getting too complex and years of cruft  eventually begins to become difficult to manage.  He also thinks the .NET Framework makes developers more productive. So it seems introducing the .NET Framework was the smart thing for Microsoft to do. However he argues that not many people are using it (actually that not many desktop developers are using it) . There are two reasons for this which I know first hand as a developer of a desktop application that runs in the .NET Framework (RSS Bandit)

  • The .NET Framework isn't ubiqitous on Windows platforms
  • The .NET Framework does not expose enough Windows functionality to build a full fledged Windows application with only managed code.

Both of these issues are why Microsoft is working on WinFX. Again, the elepahant in the living room issue is that it seems that Microsoft's current plans are fix these issues for developing on Longhorn not all supported Windows platforms.

Losing the Backwards Compatibility Religion

Microsoft used to be religious about backwards compatibility, now it no longer is.

Based on my experience as a program Manager for the System.Xml namespace in the .NET Framework I'd say the above statement isn't entirely accurate. Granted, the .NET Framework hasn't been around long enough to acquire a lot of cruft we do already have to be careful about breaking changes. In fact, I'm currently in the process of organizing backing out a change we made in Whidbey to make our W3C XML Schema validation more compliant in a particular case because it broke a number of major XML Web Services on the Web.

However I don't think I've seen anyone go above and beyond to keep bug compatibility in the way Raymond Chen describes in his blog. But then again I don't have insight into what every team working on the .NET

WinFS, Just About Search?

The primary goal of WinFS (making search better)  can be acheived by less intrusive, simpler mechanisms.

I'd actually had a couple of conversations this week with folks related to WinFS, including Mike Deem and Scoble.  We talked about the fact that external perceptions of the whats and whys of WinFS don't really jibe with what's being built. A lot of people think WinFS is about making search better [even a number of Longorn evangelists and marketing folks]. WinFS is really a data storage and data access platform that aims to enable a lot of scenarios, one of which just so happens to be better search. In addition, whether you improve full text search and the indexing service used by the operating system is really orthogonal to WinFS.

The main problem is that what the WinFS designers think WinFS should be, what customers and competitors expect it to be and what has actually been shown to developers in various public Longhorn builds are all different. It makes it hard to talk about what WinFS is or should be when your everyone's mental image of it is slightly different.

Disclaimer: The above statements are my personal opinions and do not reflect the intentions, strategies, plans or opinions of my employer.


 

Monday, 21 June 2004 05:44:20 (GMT Daylight Time, UTC+01:00)
Don't forget about the 24MB runtime download.
http://tidbits.ashvil.net/index.php?p=92

Would like to see Microsoft take care of this issue.

- Ashvil
Monday, 21 June 2004 23:04:51 (GMT Daylight Time, UTC+01:00)
Above you make the statement "The .NET Framework does not expose enough Windows functionality to build a full fledged Windows application with only managed code."

Could you expand on that? We are looking at porting some Windows applications written in Delphi to .NET (using Delphi for .NET) and I have seen similar comments to yours in other weblog postings, but have never seen anything specific. Any specificity you can added to that comment would be appreciated.
Howard Dunlavy
Wednesday, 23 June 2004 14:16:10 (GMT Daylight Time, UTC+01:00)
Try looking at some of the RSS Bandit code where we use Win32 interop to get an idea of what I mean. See http://cvs.sourceforge.net/viewcvs.py/*checkout*/rssbandit/CurrentWork/Source/RssBandit/WinGui/Utility/Win32.cs?content-type=text%2Fplain&rev=1.12
Thursday, 24 June 2004 18:27:53 (GMT Daylight Time, UTC+01:00)
If MS is planning to give XP SP2 on CD, it would be a very good question to ask whether (some version of) .NET framework could not be included on that CD, even if not installed by default along with the SP2. Maybe it is going to get old in few months when NET 2.0 comes, but better than not including it in the supposed SP2 CD. If there is no SP2 CD, then it would be better to have the .NET, even if older version, included in the SP2 download, as when it is a 200+ MB download anyway, what a couple more megs will do? Modem users download it from their work or friend anyway.
Joku
Sunday, 27 June 2004 21:35:38 (GMT Daylight Time, UTC+01:00)
"Microsoft Losing the API War"
give linker to the man. ;)

http://www.joelonsoftware.com/articles/PleaseLinker.html
ace
Comments are closed.