There is a cold chill in the air today. For those of you that don't pay attention in the developer world, there is a war brewing between Microsoft and a one-person ISV. At the center of the dispute is a ridiculously ambiguous portion of the Visual Studio Express EULA, which also happens to be at the center of the Microsoft/ISV relationship.
Here's a little backstory: TestDriven.NET is an add-in for Visual Studio that enables code testing with a particular set of open source tools. It hooks into Visual Studio to provide the glue by which the various open source components can work together. It's a pretty great tool, especially if you can't afford Microsoft's expensive Visual Studio package that includes unit testing (which is a more expensive SKU then their lowest paid version).
So what is the EULA section in question? Straight from Microsoft, below is the section in question (emphasis mine):
9. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. For more information, see www.microsoft.com/licensing/userights. You may not
• work around any technical limitations in the software;
• reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;
• make more copies of the software than specified in this agreement or allowed by applicable law, despite this limitation;
• publish the software for others to copy;
• rent, lease or lend the software; or
• use the software for commercial software hosting services.
This is a well-documented generality that a lot of people have a problem with, myself included. In the past, this clause has been used to prosecute software "crackers" who build tools to, for example, turn Windows XP Home into Windows XP Pro, or circumvent the software activation to steal a copy of Windows. This is the first time I've heard of this being used against a legitimate ISV. The repercussions for this are not to be underestimated. But I'll explain more about that in a minute.
Dan Fernandez, the PM for Visual Studio Express, has explained his position in a couple of posts. What I find kind of funny is that the letter sent from Microsoft's lawyers in the UK is pretty over-emotional for a legal notice. For example:
"Our client should not have to explain to you, a software developer, the significant commercial harm being caused by your unlawful activity. All software houses (to a greater or lesser degree) make available versions of their software which have limitations on their use, some often made available for free. It is for the software house to determine which of its software it wishes to make available to users and on what terms. A limited version of a piece of software may be given away as a marketing tool, or sold at a lower price to reflect its limited functionality; more sophisticated versions of the same software representing very valuable intellectual property may only be supplied at a higher price. Your activity subverts this model, depriving our client of very significant revenues. It is a model you will well appreciate as you employ it with your own products when you specify different licensing terms for three versions of your product, one for "Personal", one for "Professional", and one for "Enterprise". Your activity also causes wider damage in the marketplace by, amongst other things, creating dissatisfaction amongst Microsoft's many partners." (Emphasis mine)
And I thought I was long-winded. So in between a really ridiculous primer on how software is sold, we have this sob story on how much money Microsoft is losing because of their product. For starters, there is a measure of intent that has to be taken into account. People who crack Vista do so to steal the software. Jamie's software doesn't serve the same purpose. People aren't downloading his product so that they can enable add-ins in Visual Studio, they're downloading his software to be able to write code that lets you test code you've written. Furthermore, I challenge Microsoft to be able to prove that it has lost any money whatsoever in the matter.
In my opinion, the only one causing dissatisfaction among Microsoft's many partners is Microsoft, because their actions based on this clause throws the whole basis for Microsoft's ISV relationships into doubt. Microsoft is a huge company, and their software can't do *everything* people need it to do. Every day, ISVs build new software that build on or enhance Microsoft products by finding the functionality that Microsoft couldn't add in (for whatever reason), and fill in the gap.
Visual Studio Express doesn't specifically say anywhere "Don't use add-ins", the functionality is just not there. So how was anyone supposed to know that was intentional? Microsoft misses blatantly obvious functionality all the time. I used to be an ISV, but I got out of the business, because you have to charge too much for components to be taken seriously by big development shops. If I were still in that business, I'd have to start factoring the risk of being sued by Microsoft into my business plan every time I build a new component that fills in one of Microsoft's many gaps. And that might keep me from building that component.
All in all, this situation was handled badly by all parties involved. But the threat to sue was a *REALLY* dumb move on Microsoft's part, because it doesn't matter who was right, when Microsoft sues, they're wrong in the court of public opinion. Microsoft's team of 800 lawyers are supposedly pretty smart. Guys, it's time to put your heads together and clarify this part of the EULA for your products. And if there is specific techniques used to differentiate between your products, they should be clearly and succinctly defined. Then you would avoid ridiculous misunderstandings of unnecessarily obtuse agreements (is this a license agreement or a patent?) and, oh by the way, you wouldn't piss off the people who drive most of your sales in the first place.
In conclusion, both parties should retreat to their corners. Jamie should take that functionality out of the product, and Microsoft should clarify it's license. If the amended license sufficiently states the limitations of the product that should not be circumvented, then Jamie will have no choice but to keep that functionality. But Microsoft, if you can't give your supposed partners that courtesy, then why should they return the favor?
And here's the drill, Microsoft: if you're just doing this because you plan on putting unit testing in the core product with "Orcas", the sh!t will probably hit the fan. I highly doubt that your customers will take that lying down.