Did Microsoft Violate TestDriven.NET's EULA in Enforcing Its Own EULA?

0 comments suggest edit

r_takeoff Jamie Cansdale recently wrote about some legal troubles he has with Microsoft. We were in the middle of an email correspondence on an unrelated topic when he told me about the new chapter in this long saga.

Jamie posted the entire email history and the three (so far) letters received from Microsoft’s legal team. Rather than jump to any conclusions, let’s dig into this a bit.

The Claim

First, let’s examine the claim. In the first letter from OLSWANG, the legal team representing Microsoft, the portion of the EULA for the Visual Studio Express suite of products that Jaime is allegedly in violation of is the following:

…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… You may not work around any technical limitations in the software.

The letter continues with…

Your product enables users of Express to access Visual Studio functionality that has been de-activated in Express and to add new features of your own design to the product, thereby circumventing the measures put in place to prevent these scenarios.

What Technical Limitation?

The interesting thing about all this is that nowhere in all the emails is it specific about which “technical limitation” Jaime is supposedly working around. Exactly what functionality has been “de-activated”?

So I decided to take a look around to see what I could find. The best I could find is this feature comparison chart.

In the row with the heading Extensibility,it says this about the Express Products.

Use 3rd party controls and content. No Macros, Add-ins or Packages

So 3rd party controls and content are enabled, but Macros and Add-ins or packages are not enabled in this product.

When I pointed this out to Jaime, he pointed out that this is not true. If the Express editions could not support Add-Ins, how does Microsoft release a Reporting Add-in for Microsoft Visual Web Developer 2005 Express or the Popfly for Visual Studio Express Users?

I imagine that Microsoft is probably not bound by their own EULA and would be allowed to work around technical limitations in their own product to create these Add-Ins. But another potential interpretation is that creating these add-ins is possible and that there is no technical limitation in the Express products.

The problem here is how do you define a technical limitation. It’s obvious that the Express product did not remove support for add-ins in the compiled code. In fact, it seems it didn’t remove add-in support at all, it just didn’t provide a convenient manner for registering add-ins. Is an omission the same thing as technical limitation?

Jamie sent me some code samples to demonstrate that he is in fact only using public well documented APIs to get TestDriven.NET to work to show up in the Express menus. He’s not decompiling the code, using any crazy hacks or workarounds. It’s very simple straightforward code.

The only thing he does which might be interpreted as questionable is to write a specific registry setting so that the TestDriven.NET menu options show up within Visual Studio Express.

So it seems that supporting Add-Ins does not require any decompilation. All it requires is adding a specific registry entry. Does that violate the EULA? Well whether I think so or not doesn’t really matter. I’m not a lawyer and I’m pretty sure Microsoft’s lawyers would have no problem convincing a judge that this is the case.

I would hope that we should have a higher standard for technical limitation than something so obvious as a registry setting. If rooting around the registry can be considered decompilation and violate EULAs, we’ve got issues.

The Kicker

Also, if that is the case, then you have to wonder about this section in Microsoft’s letter to Jamie, which I glossed over until I noticed Leon Bambrick mention it

Thank you for not registering your project extender during installation and turning off your hacks by default. It appears that by setting a registry key your hacks can still be enabled. When do you plan to remove the Visual Studio express hacks, including your addin activator, from your product.

This is interesting on a couple levels.

First, if the lack of a registry entry is sufficient to count as a “technical limitation” and “de-activation” of a feature in Visual Studio Express, why doesn’t that standard also apply to TestDriven.NET? Having removed the registry setting that lets TD.NET work in Express, hasn’t Jamie complied?

Second, take a look at this snippet from TestDriven.NET’s EULA

Except as expressly permitted in this Agreement, Licensee shall not, and shall not permit \ others to: …

​(ii) reverse engineer, decompile, disassemble or otherwise reduce the Software to source code form;

…\ (v) use the Software in any manner not expressly \ authorised by this Agreement.

It seems that by Microsoft’s own logic of what counts as a license violation, Microsoft itself has committed such a violation by reverse engineering TestDriven.NET to enable a feature that was purposefully disabled via a registry hack.

The Heart Of The Matter

All this legal posturing and gamesmanship aside, let’s get to the heart of the matter. So it may well be that Microsoft is in its legal right (I’m no lawyer, so I don’t know for sure, but stick with me here). Hooray for you Microsoft. Being in the right is nice, but knowing when to exercise that right is a true sign of wisdom. Is this the time to exercise that right?

You’ve recently given yourself one black eye in the developer community. Are you prepared to give yourself yet another and continue to erode your reputation?

The justification you give is that products like this that enable disabled features in Visual Studio Express (a dubious claim) will hurt sales of the full featured Visual Studio.NET. Really?! If I were you, I’d worry more about the loss in sales represented by the potential exodus developers leaving due to your heavy handed tactics and missteps.

Found a typo or error? Suggest an edit! If accepted, your contribution is listed automatically here.



33 responses

  1. Avatar for Isaac
    Isaac May 31st, 2007

    Thanks for such a throughout analysis and giving an alternative perspective on the issue.
    VS Express, in terms of extensibility, will never catch up to Eclipse unless MS also opens up the add-in/extensions. I guess, the real lesson to learn is, maybe it's time MS opens up the VS API and the platform or else it will generate more buzz and erode all the good will it has just accumulated.

  2. Avatar for Mason
    Mason May 31st, 2007

    This just burns me. Why is Msft doing this? What a waste of time. This completely falls in line with David Heinemeier Hansson's statement in Scott Hanselman's interview podcast about Msft talking a good game but its actions not being consistent with that language.

  3. Avatar for Joe Brinkman
    Joe Brinkman May 31st, 2007

    I think we can all agree, based on the information available, that Microsoft did not intend for add-ons to be created and distributed for the Express SKUs. The documentation and lack of registry keys, which exist in the other products clearly indicates that this was Microsoft's intention.
    If we agree on that, then why does nobody seem to care that TDD.Net is violating the IP rights of another software company? How hard of a technical challenge must you create in order to be able to legally defend your IP? People hate DRM, yet if you don't go to that level of technical sophistication then you end up in this situation, where getting around the technical obstacle is trivial and therefore, in some people's reckoning, not worthy of being afforded legal protection.
    To me, this is not much different than the thousands of people who freely traded copyrighted music on Napster. They were clearly violating the IP rights of others but it was somehow OK because prices were too high or there were too many restrictions placed on them by the recording studios.
    Would you be OK with TDD.Net if it was in violation of the licensing agreements for Koders.com? What if I create a website that spiders Koders and presents the information as my own? Not much of a technical challenge, but is it right?

  4. Avatar for Scott Schecter
    Scott Schecter May 31st, 2007

    No one is debating whether they had the legal right to do what they did. It's their tactics that are so telling for someone who 'supports' open source development.

  5. Avatar for Jay Kimble
    Jay Kimble May 31st, 2007

    I still think you missed Phil's point. I think Phil is mainly rising above the whole dialog and is asking the more important question of should MS do this? Not are they right? Not did Jamie violate something...
    The bigger question is that in my mind Jamie didn't set out to violate EULA (I think that's fairly clear). Jamie's just wanted to make his product/freebie available to everyone.
    I'm not a TDD guy, but those TDD guys that I know think that TDD is so essential that we should teach people TDD at the very beginning of learning to code... The Express product lines are for learning...
    Again it's more an issue of "Should MS do this?" In my mind they should simply ask Jamie to no longer sell a product for Express (let him continue to distribute a personal version for Express because it makes sense for a hobbyist who is learning TDD).
    This is of course my opinion. But as a business owner I can tell you that being perceived in a bad light can potentially harm you especially when you are offending the people who you credit as selling your products (MS has always prided itself as a Developer's company... because Developer's create products that sell more copies of Windows and Office).

  6. Avatar for Ryan
    Ryan May 31st, 2007

    @Mason - I thought exactly the same thing. For the longest time I just thought DHH was whining. After the last month of Microsoft's actions, I am becoming a believer.
    @Joe - There is not much I can say to counter your point - IP is being violated, however I think that the part that burns me here is that Jamie is bringing more people into the .Net platform. This is a stepping stone into getting deeper into using greater .Net tools later. I am starting to think that Mike Gunderloy is right about Microsoft's intentions....

  7. Avatar for Carl Camera
    Carl Camera May 31st, 2007

    Phil, you asked...

    Being in the right is nice, but knowing when to exercise that right is a true sign of wisdom. Is this the time to exercise that right?

    The legal unpleasantness about this situation (I'm not a lawyer either but this is my understanding of general legal principle) is that companies cannot be selective about who is allowed and who is not allowed to violate end-user agreements.
    If MSFT were to knowingly allow Jamie's plug-in to work around the limitations of their de-featured product, then MSFT would have no legal basis to go after other third-party add-ons that also violated the EULA.
    As selective and heavy-handed as it may seem, MSFT must enforce the EULA uniformly in order to maintain any legal grounds against all other plug-in software products.

  8. Avatar for Vadim
    Vadim May 31st, 2007

    Excellent explanation of TD.Net vs MS issue.
    You ask a good question. Even if MS has the right to go after Jamie, why to do so?
    Do they (MS) believe that by putting TD.Net in free version of VS will convince people not to buy Professional and Enterprise versions.
    Do MS think that may be allowing Jamie to enable his add-in, will set precedence for other people to extend VS Express?
    What really Microsoft is afraid of?

  9. Avatar for Joe Brinkman
    Joe Brinkman May 31st, 2007

    @Jay - As I look through the emails, I see Microsoft repeatedly asking Jaime not to provide his add-on for the Express SKUs. I see comments by Jaime first saying he will comply and then saying he doesn't see a violation. Microsoft even offered additional support and assistance over and above what they normally offer to members of VSIP program. Should they have done more? Maybe. Could they have done more? Certainly. But in the end, it was made crystal clear by Jaime that he would not change his position. What choice did Microsoft have? Allow a developer to continue to violate the MS license and undermine their product sales or take legal action. Even the initial legal action was nothing more than a cease and desist letter. The least onerous legal step they could take. The legal equivelent of "Please stop doing this." While Jaime may not have started out with the intent of violating the IP rights of Microsoft, the end result is that he was and continues to do so.
    @Ryan - Bringing more people to .Net is not any different than exposing more people to some radical new rock band. Stealing songs on Napster wasn't right, and violating a companies software IP rights is also wrong. "Hey all those Catholic priests abusing young boys is ok because they are doing so many other good things for the community." Is that the standard we want to use? When Microsoft does wrong we don't give them a pass just because Bill and Melinda give billions to charity.
    So none of this answers my basic question - why are we so willing to dump on Microsoft in this case, yet are willing to overlook the willful violation of Microsoft's IP rights. Why is Microsoft in the wrong for taking legal action to protect their property when all other efforts to work this out were ignored? Should Microsoft have setup a meeting with BillG or SteveB instead of a lowly VP? To me the reaction of the community on this issue is not much different than the typical MAC/Linux fanboy response I would expect to find on Slashdot.

  10. Avatar for Sam Smoot
    Sam Smoot May 31st, 2007

    This situation is just absurd.
    It's naive to think that MS's hand was in any way "forced". This isn't trade-marks. It's not an issue until MS makes it an issue. You're right about one thing. At this point, MS is probably _required_ to pursue a legal resolution. There was no reason it had to get this far though.
    MS still has another alternative. License or out-right buy TestDriven.NET. It's in MS's own interests to do so. Not just so they can turn a bad PR situation around, but because Jamie's solution is obviously superior to their own to the people it matters to: The Developers using TDD practices.
    What I don't get is why you're apologizing for MS, and flat-out misrepresenting the facts. You stated Jamie first agreed to remove support, but this is a rather... convenient interpretation. At several points yes, it seemed he would cave to the threats, but he maintained through-out and interest in understanding what the supposed violations actually were, and stood more firm than any of us would I'm sure in his conviction that if he wasn't in violation, he would not be simply bullied into submission.
    That deserves respect in my opinion. Misrepresenting the situation should be beneath us.
    The straw-man arguments about pedophiles and file-sharing should be beneath us.

  11. Avatar for Joe Brinkman
    Joe Brinkman May 31st, 2007

    @Sam - My interpretation is based on this email:
    From: Jamie Cansdale
    To: Jason Weber
    Cc: Lorna Williamson, Ben Miller
    Date: Jan 6, 2006 1:03 PM
    Subject: Re: Discuss TestDrive.Net
    I am sorry I was unable to get back to you yesterday. I have given
    more thought to the issue of TestDriven.NET's integration into the
    Express SKU. I remain of the opinion that I'm not technically in
    breach of the licence. However I do not want the shadow of legal
    action hanging over me, especially as I intend to release a commercial
    version in the Spring.
    I have therefore decided to drop support for the Express SKU, provided
    that we're able to draft an acceptable announcement for my users. This
    has not been an easy decision to make as I have invested a
    considerable amount of time into developing and testing this feature
    (on all of the Express languages).
    I would appreciate it if you could draft an announcement stating
    Microsoft's position towards TestDriven.NET and its integration into
    the various SKUs, including the fact that Microsoft doesn't consider
    unit testing integration appropriate for the Express SKU target users.
    I am also keen to reassure my users that Microsoft is fully
    supportive of TestDriven.NET's future integration with VSTS.
    Regards, Jamie.

    Or also this comment from his Jan 23rd email:
    "The code you believe violates the Visual Studio SDK licence agreement
    is present in all versions of TestDriven.NET (but is only actually
    invoked when executing inside a Visual Studio 2005 Team Edition). It
    is therefore the case that removing support for the Express SKU
    wouldn't remedy the licence situation. Even if Microsoft chose not to
    pursue this perceived licence breach, it would still leave any future
    versions of TestDriven.NET in a vulnerable position.
    I have therefore decided to remove all references to Visual Studio SDK
    assemblies. I find this situation regrettable as it does limit
    integration possibilities. I'm planning to discuss the issues raised
    and find out how other add-in developers interface with the Visual
    Studio SDK. I have seen many blog entries that seem to encourage
    add-in developers to circumvent the PLK mechanism (assuming that is
    what casting the DTE object to IServiceProvider does)."
    The arguments I made are not strawmen at all. They are meant to highlight the fact that no matter what other redeaming qualities Jaime and his work have, it does not relieve him of the obligation to respect Microsoft's IP, just as Jaime expects others not to violate his license terms.
    Suggesting that a company should buy you out just because you violate their IP rights is absurd. It rewards bad behavior and sets a horrible precedent.

  12. Avatar for Sam Smoot
    Sam Smoot May 31st, 2007

    You're cherry-picking again.
    Jamie's email had a clear proviso MS failed to provide. The later email was obviously an amicable technical query.
    The buy-out suggestion was again misinterpreted. He never suggested that. In fact, I think he might have already dismissed the idea. It was my own suggestion. Not because he violated their IP. Because he has a better product and it would serve MS well to license it even if this had not blown up. People have been saying that since the release of VS2K5.
    Right now it just so happens to carry the bonus of turning a PR negative into a positive.
    Your arguments _are_ straw-men. They're the very definition of straw-men. Jamie giving away his own hard work for free, has nothing to do with Catholic Preists molesting boys. There are no parallels to be drawn. You're just being ridiculous.

  13. Avatar for Ryan
    Ryan May 31st, 2007

    @Joe -
    Sharing music illegally or sexually abusing children is a poor comparison to the situation. Those both CLEARLY violate the law, the latter to fullest extent. There are different severities in criminal law (misdemeanor, felony), how about in civil law? Are all violations of the EULA weighted the same? Should he face the same penalty as someone who reverse engineered the IDE and put it out as their own?
    I personally see this situation more of a gray area of the IP vacuum because you can spin this in either direction too easily. Is the "technical limitation" meaning the ability to do it or the intent. Microsoft should have written it as "You may not work around any technical limitations, actual or intended in the software."

  14. Avatar for Joe Brinkman
    Joe Brinkman May 31st, 2007

    @Sam - I am not equating Jaime's action to those of pedophiles. I am saying that to excuse someones illegal activity because of good works is not correct. It was previously stated that Microsoft should have allowed Jaime to continue his actions because he brings so many people to .Net. Even if he gives away his work for free, if that work still violates the license it is still wrong. If his actions are wrong, they are wrong, no matter how many other good things he may do.
    @Ryan - The technical limitation is that registry entries were specifically removed, and assemblies specifically not distributed with VS Express. Neither of these are hard to overcome, but they were done by Micrsoft to prevent add-ins from running.

  15. Avatar for Haacked
    Haacked May 31st, 2007

    > is that companies cannot be selective about who is
    > allowed and who is not allowed to violate end-user
    > agreements.
    Certainly true in trademark law, but not necessarily in licensing. Companies can offer dual licensing, etc... Also, Microsoft has leeway in choosing how strictly to interpret their license.
    The EULA doesn't expressly forbid add-ins. If, for example, they put code in there to ignore the registry settings for add-ins, it would be crystal clear that providing an add-in would be working around a technical limitation.
    However, the Express edition does have code to support plug-ins. Whether they *intended* for add-ins to work is irrelevant. They didn't forbid it, and thus leave room for interpretation.
    @Joe: That would probably be an explicit violation of koders.com license and copyright. I'd have to look at that to be sure.
    However, this situation is different. Suppose you download our Pro edition onto your computer and notice that with a minor tweak, you can make it search compiled assemblies as well as source files. We didn't intend for that usage, but *should&* we interpret the license after-the-fact to forbid your action and go after you? I think not.
    Also, what about my very last point? What gives Microsoft the right to violate TD.NET's EULA?
    Jamie removed the registry setting that allows TD.NET to work with Express. Doesn't that fulfill his obligation to Microsoft?
    At that point, to get TD.NET to work with Express requires the end user, not TD.NET, to use same method to "workaround" the "technical limitation" in Express, which would be in violation of both Microsoft's EULA as well as TD.NET's EULA.

  16. Avatar for Frans Bouma
    Frans Bouma May 31st, 2007

    If adding a single registry key is equal to violating IP we as developers are all doomed. That's the point here...
    The strong-arm tactics from MS show that every ISV should be afraid that some day, this can happen to them as well, because they too can violate some strange EULA clause because they added a regkey or an ini file or a dll in a folder which wasn't allowed :-/
    DRM, child abuse, mp3 sharing... they have nothing to do with adding a regkey and this case. This case also has nothing to do with copyright infrigment. It has something to do with a clause in an EULA which is irrelevant, as he uses public APIs and normal code.
    THAT's what's important here: If using normal public APIs and stupid things like registry keys (and trust me, you have to add regkeys to make some things happen in VS.NET as an ISV, also in express, like make it find your dlls when you open the add reference dialog), can suddenly make you end up in court, demolish your good name among your peers and customers... I don't think I would like writing software in that environment anymore.
    Software engineers should be focussing on writing software, not having to worry at every line they write if it might violate some STUPID patents or some EULA no-one knows if it's legal or not.
    IF microsoft doesn't want any add-in in express, they could have disabled the functionality in the IDE. Jamie didn't alter any dll, he didn't alter any code, he didn't run a dongle service to work around a protection, he didn't fake serial numbers nor did he copy a copyrighted file or other material. He added a regkey.
    Whoever it is at microsoft who started this crusade: get the hell out of my profession, you're not worth it to be in software development land.
    Before someone thinks s/he has to bash me and tell me that copyright and copy protection and IP protection is important: YES I know that, as an ISV owner who sells software worldwide and has suffered several cases of IP theft, copyright infrigment, license purchases with stolen CC's and other crap: I definitely know what copyright and IP protection means. But don't come to me that adding a regkey is violating IP or copyright theft/infrigment! It's not violating anything. It might hurt MS' business. Though then again, this stupidity hurts them more, it will make more people re-think if they really want to be in the MS community, if they really want to invest a lot of time in a free toolkit for the ecosystem of .NET. With this out in the open, they might reconsider and invest their time into something else.
    Way to go... MS. We really needed this community boost. :-/

  17. Avatar for Jamie Cansdale
    Jamie Cansdale May 31st, 2007

    @Joe - you say "registry entries were specifically removed, and assemblies specifically not distributed with VS Express".
    This isn't correct. When the Express SKU is installed you can find all of the required assemblies here:
    \Program Files\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\
    They are specifically:
    I list these in my email to Jason on Jan 3, 2006:

  18. Avatar for The Other Steve
    The Other Steve May 31st, 2007

    Comparing EULA to taking songs off Napster defies credibility.
    Nobody is violating copyright law here.
    What we're talking about here is basically the equivalent of a record label releasing music with an EULA that prohibits you from singing along.
    Does that sound silly?
    Well so does violating an EULA by tweaking a setting in the registry.

  19. Avatar for Clifton
    Clifton June 1st, 2007

    Maybe I'm missing something but if a simple registry setting holds the key to add-in support in VS Express, where is the Napster-like site housing all the hacks?

  20. Avatar for Scott
    Scott June 1st, 2007

    Joe B:
    I have the legal right to pass gas in an elevator, that doesn't absolve my responsibility to the other elevator riders.
    Maybe MS should reconsider the EULA and the restriction given the effect on the community?

  21. Avatar for Joe Brinkman
    Joe Brinkman June 1st, 2007

    @Jamie - You also list other assemblies which are not part of the express SKUs, but which were linked to. So I'll concede the assembly issue for sake of argument, that still doesn't address the specific absense of the registry key or the intent of the Epxress SKUs not to provide add-in functionality. My first comment here was specifically about how high a hurdle a company must impose before we would consider it a technical limitation? Do we have to go all the way to a DRM solution? Do they have to obfuscate code, hide the registry entry, specifically code the app to break if someone tries some action they don't like? No matter what the hurdle is, there is almost always some bit so code that can be written to overcome the obstacle.
    @Scott - Given the reaction of the community, Microsoft is more likely to write this off as a failed experiment and not continue to support or provide free versions of their product.
    @Clifton - There is no napster like site of Express add-ins because most companies have accepted the restriction - whether explicitely spelled out in the EULA or not. If you look around at the various blogs on this topic you will see other ISVs who have stated that they refrained from this because it was considered by them to be a violation.
    @The Other Steve - The relevance to copyright law is applicable. Every company specifically owns the copyrights to both the binary and source forms of their software. An EULA defines the specific rights that a company confers on a person receiving the License, whether that license is granted based on a purchase or is freely distributed.
    @Frans - If you, as a copyright owner, choose to limit your product by supplying or not supplying registry keys, and then stipulate in your license agreement that people are not authorized to work around your limitations, then you are absolutely within your rights to do so. Was Microsoft stupid for not making the feature more difficult to enable? Absolutely. Should Microsoft have been more clear in the EULA and other communications that this behavior was strictly forbidden. Certainly. But you cannot say that Microsoft did not make an effort to try and resolve this long before it became a legal matter. This was not a case of Microsoft one day seeing an add-in and the next day sending out the lawyers. Once Jaime and Microsoft came to the point where they disputed whether it was a violation or not, the only remedy to resolve the dispute was a third party. In the US that usually involves legal action since that is the only legally binding recourse.
    @Phil - As to your last point you are correct. That once Jaime removed the ability of his product to work with Express then that should have been sufficient. And maybe I am missing something from the email exchange, but it appears that the feature was re-enabled in a later release of the product.

  22. Avatar for Frans Bouma
    Frans Bouma June 1st, 2007

    Joe: A company can jump up and down in their EULA all they want, but if they claim that I can't work around technical limitations and that claim is stupid, I don't have to obey that clause.
    What does that clause say actually? That if a bug ABC is in the tool, I can't work around it? uhoh. I work around several bugs in the .NET framework in my product, am I now also in violation of the eula of the vs.net express eula because it cleary says I can't do so?
    If you buy a tool, ANY tool, at a store and YOU as a person want to apply that tool in any way you see fit, you find yourself legally able to so, right? Why is it then out of the question that a vendor of a given tool ABC says: "No, you can't use our tool in combination of that other tool, that's illegal". They can say that all they want, but that doesn't make it true: they don't have the right to tell you what to do. It's like me saying to my customers not to write a template for an nhibernate mapping file and generated code to support nhibernate. I could even put that in the EULA that they shouldn't do it, but is it legal? Should they obey that clause?
    Of course not. MS should have disabled add-in support in the toolkit. OF course they were tool lazy to do so or technically unable to do so, so they thought they could hide behind a silly phrase in an EULA which isn't even applicable here (as the EULA has no right on what Jamie distributes to OTHERS). If Jamie compiles his code on teh command line the whole EULA argument is moot, just to illustrate the point.

  23. Avatar for Sam Smoot
    Sam Smoot June 1st, 2007

    "Given the reaction of the community, Microsoft is more likely to write this off as a failed experiment and not continue to support or provide free versions of their product."
    Microsoft doesn't give away Express Editions out of the kindness of their hearts. If developers see the cost of VS.NET and SQL-Server as a barrier to entry, they'll go develop in Ruby, or PHP, or Java, or Python, etc.
    Microsoft doesn't have the choice "to take their ball and go home".

  24. Avatar for Scott
    Scott June 1st, 2007

    Exactly. Their "first one is free kid." tactic is a valid one. Proven again and again by drug dealers the world over.

  25. Avatar for Aaron
    Aaron June 1st, 2007

    Its funny Microsoft violates TestDriven.nets EULA in order to see if TestDriven.net still violates their EULA.
    Not sure where this attitude that MS need to some how better disable this add-on support in Express, Its their product they get to set the terms (you don't have to accept them). Honestly if Jamie wasn't selling his software things might be different. But he bit the hand that fed him and to MS credit they asked him not to continue doing it before sending in the lawyers.
    Also I think one must keep in mind that we only see the email not a record of these conference calls. Who knows what was said as part of those conversations.

  26. Avatar for Haacked
    Haacked June 1st, 2007

    @Joe: I quoted the relevant portion of the lawyer's letter. I'll put it here, emphasis mine:

    hank you for not registering your project extender during installation and turning off your hacks by default. It appears that by setting a registry key your hacks can still be enabled. When do you plan to remove the Visual Studio express hacks, including your addin activator, from your product.

    Again, the code Jamie wrote is not a hack and does not get around any technical limitation. It's creating this registry setting that suddenly makes his plugin appear in Express. So by any reasonable interpretation, they are claiming that the registry setting is the hack.
    I did an experiment. I installed TestDriven.NET on a Virtual PC and TD.NET didn't show up in Express. I looked at the registry settings, went in and renamed the HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\8.0 key to 9.0. Restarted VS.NET Express and suddenly the TD.NET menu showed up. I need to double confirm that was all I needed to do to have TD.NET show up in Express.
    Jamie could probably elaborate, but from my unscientific experiment, it seems that Jamie would have to explicitly test for Express in his code to disable this potential registry hack. Jamie, correct me if I'm wrong.

  27. Avatar for Anastasiosyal
    Anastasiosyal June 1st, 2007

    This is Microsofts side of things as posted on Dan Fernandez's blog.
    According to the post (link below) MS has removed the add-in manager from the express edition and is claiming that Jamie executes his own code specifically for the express edition that finds his assembly and loads it in the menu. Part from the MS developer team response:
    "He takes advantage of an extensibility point that allows user controls (such as a button class) to customize entries in the Properties window. When his property extender gets called, he executes code that finds, loads and injects the TestDriven.Net assembly into the Express SKU’s running process, thus replacing the functionality of the removed Add-In Manager."
    Here is the link with the fuller story:

  28. Avatar for opello
    opello June 3rd, 2007
    I have seen many blog entries that seem to encourage add-in developers to circumvent the PLK mechanism (assuming that is what casting the DTE object to IServiceProvider does).

    I thought that was the 'hack'?

  29. Avatar for if ( ! blogClogged )
    if ( ! blogClogged ) June 4th, 2007

    Yes. This is the follow up to a post yesterday about the TestDriven.NET spat with Microsoft. I have thought

  30. Avatar for Marcos
    Marcos June 5th, 2007

    Im so sick with that !! I hate all this !!
    Im an open source .NET developer, and I must to addmit that this make me COMPLETELY ANGRY !!!
    I lost my motivation, and I dont want to use too much of my little free time, working to make .NET world better.
    Im thinking in begin with Ruby or try the new Java version, and with this idiot move from MS, the things get more clear to me.
    What are thinking other open source developers ?? what not ask them what they feel ?? sure they are not good with this move
    @Joe: you understand now, where the problem is going ??, the MS vs TD.NET is the little fire that make a big explosion in the communty, dont matter too much if they are right or not, they fail to us too much.

    Best Regards

  31. Avatar for commenter
    commenter June 6th, 2007

    So if I read this right, Express is listed as not supporting add-ins, and there are modifications to it to disable the usual UI for registering add-ins.
    Seems like an open and shut case that they dont allow add-ins in Express. Since it's their application they are perfectly justified in enabling their own extensions to it if they want without this justifying others bypassing the disabling measures.

  32. Avatar for Greg C
    Greg C June 7th, 2007

    I intended to learn Java back in 1997 and make a bazillion dollars before everyone else got on the bandwagon.
    I intended to buy Microsoft stock in 1994 and sell in early 2001 to make a bazillion dollars before the market crashed.
    I intended to stop drinking before I got behind the wheel and crashed.
    Microsoft's INTENT with the VS Express product line is irrelevant. The EULA itself states that it is the ONLY RELEVANT agreement. Almost any contract says that any promises and agreements not in writing (and included in the contract) are not valid.
    I think it's reasonable to ask Microsoft to clearly define what parts of the agreement are being violated. The only weakness Jamie has at this point is that it looks like he had offered to completely remove the code and then backed away from the offer.
    Obviously there's more behind the scenes that I am aware of...and the truth is usually somewhere in between, but I would think that it's fair to ask Microsoft to cite specific infringements rather than the "ethos" of the product or that the "intent" of the product was to not allow add-ins.
    When we're licensing Windows or Office, any verbal promises or other documents do not matter; the EULA is all we've got. I'm not sure how statements of "intent" are applicable here.
    It's like me saying I didn't mean to write that exploit.

  33. Avatar for Asher
    Asher August 18th, 2010

    Maybe post the code he uses to "hack" Express then we can judge better