Top

Microsoft Gets it Right (almost)

March 3, 2008

Microsoft gets a lot of criticism from the world at large, and to be honest, a lot of it is justified.

Some of it, though, isn’t.  The win32 API is a major gripe for a lot of Windows programmers — indeed, MFC, .NET and even C# were all created to get around the complaints of programmers who found it clunky, non-intuitive and confusing.

Me?  I love it.  Many people know me as the guy who wrote the C++/Win32 tutorials found here at Stromcode, but since writing those I’ve logged countless hours with the API and built dozens of applications using raw win32.  And the more I used it, the more I liked it.  Sure, there may be better, faster ways of getting something done, but overall, I found the API to be a pleasure to use, mostly because it was assembled more or less how I assumed I would have done it.  I’ll leave it to you to decide if that’s a good thing or a bad thing, but the fact is, having the same sort of coder mentality is important when basing your code off of someone else’s.

One place where this becomes abundantly clear is when working in PHP.  There are so many ways of accomplishing the same task in PHP that several nearly exclusive coding standards have been adopted.  I’ve seen PHP that looked so alien to me it took a day to figure out what was going on.

But the biggest area in which Microsoft falls flat is in not understanding the key benefit of open source software.  Open source succeeds in three key areas, as far as I’m concerned:

  1. Free software attracts a higher number of users, and a higher number of users is able to root out problems in the code faster.
  2. Open source allows problems to be fixed extremely quickly.  Moreover, open source allows those fixes to reach the users just as quickly.  As in, as soon as the fix is committed.
  3. Open source software is written by people who love to write code, not people who get paid to write code.

A recent example of Microsoft failing at points 1 and 2 came when I investigated the ClickOnce distribution method for .NET applications.  In theory, ClickOnce should be an amazing thing.  .NET apps can be installed from the web, remember where they were installed from, and update themselves if that initial location contains new objects.

The problem?  It doesn’t work with FireFox.  It may or may not work with any other browser other than IE.  So you think, ok, just let your users know that they need to load the install page in IE.  Wrong.  Your users would actually have to change their default browser to IE, because the problem occurs when a downloaded installer is clicked.  Yikes.

A lot of people complained.  Microsoft acknowledged the problem.  And then… they said the fix would be in the next release.  The next release.  The problem is, the world doesn’t spin at the speed of Microsoft.  We needed a solid deployment solution now, not by the next release.  So we looked elsewhere.  ClickOnce may very well be dead in the water as a result.  Other, better, faster, likely open source solutions will step up to fill the void while Microsoft waits for the next release to fix a major, showstopping problem.

But this post is called Microsoft Gets it Right.  And they got it right by getting point 3: Good code is written by people who love to write code.  XNA is a reflection of this understanding.

Microsoft has been on a tear trying to get people to adopt .NET, C# and the idea of managed code.  As a longtime C++ programmer, this has been a hard sell. Not only am I quite comfortable with the way I work (having been doing it for years), its tough to swallow a new platform in which performance is degraded from the get go.  Not only that, managed code means years of mastering memory management was, now, all for nothing.

But Microsoft has done two very smart things to promote the .NET platform.  One was the release of the Microsoft Robotics Studio, and the second was the release of XNA Game Studio.  Both are targeted at the hobbyist (for the most part) and both capitalize on a group of people who write code for the love of writing code.  And by targeting the hobbyist, they’ve insured that point 1 is satisfied.  XNA is already enjoying a wide user base, and a very active, supportive community.

Reading over the XNA forums, its clear that Microsoft still has a long way to go towards grasping the importance of point 2.  People are already griping about issues in XNA that need fixing, or features that don’t exist altogether.  If XNA was an open source project, the community could have already provided their own fixes to these gripes.  Instead, they have to hear Microsoft developers telling them the reasons why feature x wasn’t included in this release, that it will be included in the next release, and everyone will just have to wait.

Two out of three ain’t bad, especially when talking about Microsoft.  Hey, it’s a start.

Comments

Got something to say?





Bottom