So by now most people would have heard about the ruckus that’s going on in the blogosphere regarding Microsoft and Jamie Cansdale’s TestDriven.NET tool. In case you haven’t heard, the issue, as I read it, is that Jamie found a way to make the TD.NET add-in run inside VS Express and Microsoft sent him a formal letter asking him to stop making this available. The issue Microsoft has is not with TD.NET as an add-in or whether its a free or commercial tool but the fact that it is being used with Express and that’s something they don’t want to encourage and have said that extensibility is disabled by default in Express.
Predictably, this issue raised a lot of hackles in the community and many people took this as an opportunity to aim more broadsides at Microsoft. There were some good points in some blogs (check out one here and look for some of the posts and comments on Oren Eini’s blog here and also Dan Fernandez’s blog -one of the posts being this and Jamie himself lists the communications here) but amongst those pearls I was disappointed (but not surprised) to find just loads of vitriol. Some people see it as a hack and some as a legitimate back-door and some say that if there is an API on the machine, they are going to use it and MS cannot stop them. (By that logic, you could be releasing any additions to windows that were unsupported just because the system DLLs are on c:\ drive, and expect MS to sit back and smile indulgently)
Now let me state first of all that I really appreciate Jamie’s add-in. I cut my teeth on unit testing and TDD with that tool (nowadays i use JetBrains UnitRun), and it was very useful indeed. I can see how using this in express will open up the world of TDD to hobbyist developers and others who don’t use the higher end editions, and this can only be good for the programming community in general. However, i can also see Microsoft’s points. I have written a couple of small add-ins for my team and find VS Extensibility quite easy and the possibilities are almost limitless. If MS were to allow Jamie’s tool, lots of other tool developers will jump on the bandwagon and write add-ins for Express and pretty soon it will become a little Eclipse-like ecosystem on its own. If that happens, where will that leave VS Standard and higher end editions? (Yes, there is an argument for supporting unit testing in express and exposing newbie’s and non-pro dev’s to good programming practices, but how do you draw the line?)
This is just plain business considerations folks. Microsoft is not running a charity. Sure, there are good groups in MS like PAG who want to make things easier for architects and developers and are producing a ton of free stuff that helps us get better at what we do (yeah, so some people don’t like the patterns and the wizards, but there’s a rather large part of the .net world that does), but MS is first and foremost a business and profit is primary and there’s nothing wrong with that. How will they sell Visual Studio commercial editions if Express could be used to do everything that, say, Team System does? Of course, not all third party add-ins are going to be free and ISV’s are bound to continue the tradition of having some free editions and some paid for ‘rich functionality’ editions, but there are some top notch developers in the open source community who could whistle up some free add-ins that trump the commercial ones. So where will that leave MS? What about all the hard work the IDE team is putting into Orcas and Rosario and whatever comes after? Does it have to be free? (Okay, so I benefit from a corporate MSDN subscription and should i ever have to pay for the tool myself then shelling out for VS,especially some features of VSTS, would burn a rather large hole in my pocket, but that’s another story).
Express is Microsoft’s entry point into the non-pro developer world. They could have engineered a completely new locked down product where there were no DLLs in the GAC or anything for people to tap into, but perhaps that would have cost more than just stripping out some functionality and making a “lite” edition like Express is. As someone pointed out (cant remember where), this could well result in MS pulling the express line completely and that wouldn’t be good at all.
Anyway, that’s my two cents worth (and no, I’m not getting paid to write this !!). In summary I’d say to these parties , “Jamie, well done with TD.NET and well done on getting a huge groundswell of support especially from some of the more articulate developers around”, “Microsoft, there are folks who understand your position, but it could be made a bit more clear without bringing in lawyers against well meaning developers” and to the general community “Folks, there’s always a wide audience for well written comments no matter whose side they are on. Make a clear stand and stop the sniping and broadsides just because MS is a huge,obvious target.”.