Agree or Disagree with a Software License You Must Abide By It
Yes. This is the follow up to a post yesterday about the TestDriven.NET spat with Microsoft. I have thought a lot about this and it wasn't difficult for me to digest. Though I am sympathetic to a TestDriven.NET for Visual Studio Express after reading the letters from the attorneys outlining the claimed breach I can't help but agree that TestDriven.NET in its current incarnation for Visual Studio Express would likely be a violation of the license agreement.
Whether or not I agree with the rational that it is in the best interest of Microsoft to create such terms in it licensing agreement for express those are the terms they set forth. For the record, I do think it probably is in their best interest and our as well and that's all I'll say about that. There are a lot of open source or closed source free or inexpensive IDE's and those are viable targets for implementation as are the for-pay versions of Visual Studio.
Obviously Jamie doesn't believe he has violated the licensing terms and that is his right to assert as well. He could be right. That's what attorneys and courts and IP law are all about. I wish Microsoft could just turn a blind eye but we all know they can't. That's how IP works- if you don't enforce your intellectual property rights you lose them. You aren't officially allowed to let them sit around or enforce selectively or at some later time. If you don't attempt to enforce as you become aware of violations you effectively give up the right. Once you give up the right it's gone for good. It's a dangerous slope. Jamie has been caught on the slippery side of that slope in this one instance.
Regardless of how much we may like or dislike the terms we as consumers have the ultimate choice. Ask the open source community. You can select not accept the license agreement and not use the tool. Do I think there are abuses of power related to fair use in too many licensing agreements from too many companies- yes; but no one makes me accept them. I personally find most open source licenses to be incredibly draconian as well. They apply the same rules but with a different scheme. Your disincentive to use the code is that you agree to effectively abandon your own IP rights in its use. I am a strong believer that if you wish to place something in the effective public domain then it's fair game for anyone to use in anyway they wish. If they can take that open source code and charge someone for the exact same things that that you are giving away free then good on them. I am in the minority for that opinion. And yes I know that open source is 'not in the public domain' but that's my point. They have their own very restrictive use terms. They just let you see what you can't use except within those terms.
One of the areas that is a bit disconcerting to me in this is the potential flexing of muscles related to reverse engineering and decompiling. A free version of Visual Studio or a for-pay version I would expect to both contain the clauses related to decompiling and reverse engineering. Have I violated those terms in creating tools to add in to Visual Studio by taking the SDK and using reflector on it to see how something works and then using reflection to get to some part of the code that may not have been easy to get to via the public classes? Yes that is indeed a hack and very likely to break next release- and no this is not a public or commercial piece of software. I didn't add functionality that was disabled. The functionality is enabled and available to the user via some current mechanisms- I just I needed to get to a specific winform so that the look and feel is consistent for the user but via a different mechanism. Did I violate the license terms by using reflector on the SDK to do this? What about if I just studied how the classes were structured to figure out where to go to get to some functionality that didn't require reflection? I still decompiled the code to better understand the SDK. Though the latter no one would ever know the former would be very clear in the code.
All in all, as I said yesterday, I think it's unfortunate for everyone but these are the rules and we agree to them when we use the software.
*As an update: I like Phil's post.