TestDriven.NET and Express – Technical Information


I quickly wanted to respond to questions or misconceptions raised in the comments of my previous blog post.


A common question or misconception in the comments is saying that if didn’t want extensibility we should have provided technical limitations to prevent extensibility (see comments:  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, and 18).


Express Extension Workarounds 
To respond, Visual Studio Express extensibility is limited in a number of ways. One way it is limited is that it does not permit extensibility through Macros, Add-Ins, or Packages. It attempts to reserve these limitations by technical means. Some examples of these technical limitations are that there is no Macros IDE, there is no Add-In manager, and registered Add-In’s and Packages are not loaded at startup. The only way to even extend Express is to work around these in-built technical limitations and that is prohibited by the License.


For a high-level overview on how TestDriven.NET works around technical limitations, here’s a response from our development team:


**
The TestDriven.NET product is implemented as a Visual Studio Add-In.  In the Visual Studio Standard, Professional, and Team System SKUs, TestDriven.NET is installed as an Add-In and gets loaded into the IDE through the Add-In Manager.  In the Visual Studio Express SKUs, because we disabled extensibility (macros, Add-ins, and VS Packages), the Add-In Manager is removed and therefore Add-Ins are not detected or loaded.  Jamie has created additional components specifically for the Express SKUs to work around this technical limitation.  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.  This explains why he instructs Visual Studio Express users to open the Properties window in order to enable TestDriven.NET.  Once his code is injected into the Express SKU’s running process it can add menu items, enable features that were disabled, and in general take over that instance of Express. These special loading mechanisms that Jamie has built exclusively for the Express SKUs are unauthorized workarounds to the SKUs’ technical limitations.
**


For an analogy, this would be comparable to someone working around the technical limitations in the personal version of TestDriven.NET to unlock features in the professional or enterprise versions for free.


What complicates this even further is that this isn’t a developer doing this for his or her personal use or experimenting with our product, this is a business trying to sell a product.  We tried for close to two years to get Jamie to stop releasing the Express version of TestDriven.NET without success.


I hope this helps clarify some of the questions or misconceptions surrounding this issue.

Comments (112)

  1. Jim Licks says:

    I had a feeling that somethign like this was happening.  My experimenting basically matches this.  Eveything I’ve tried shows that Add-Ins are turned off and blocked in Express.  As much as I hate Microsoft for charging so much for Studio there’s no way they can block hacks like this. Hacks will be hacks.

    I hope Jamie enjoyed his time in the spotlight as a hero crying wolf.

  2. You still haven’t pointed out which line of the EULA that would violate.

    Or is that going to be like with those 235 patents Guiterrez, Smith, Hilf & Ballmer made up? Is that the new Microsoft way? 😉

  3. Eric E says:

    Certainly you’re right to point out that Jamie has been circumventing mechanisms designed to block what he did, and you’re well within your rights to ask him to desist (especially to desist the part where he makes money out that circumvention).  Nonetheless, I’d call this an example of market pressure in action as much as the specifics of the case.  People wouldn’t be grumbling particularly loudly if Eclipse and NetBeans cost as much as VS Team Edition or if they delivered only as much functionality as VS Express.  But the fact that mature, robust products (and less mature ones like #Develop) are available for free changes the game.  And the .NET platform is packaged to look tantalizing like it keeps up with this trend, until soemthing makes it clear that it does not.  This is exactly what IBM would like – some event that crystallizes people’s view that an IDE shouldn’t cost hundreds or thousands of dollars anymore.  Your VS strategy is late to recognize that.

  4. danielfe says:

    It’s already been posted on Jamie’s blog, you can read the first page for the exact verbiage, then read this post for the full details.

    http://weblogs.asp.net/nunitaddin/pages/microsoft-lawyers-chapter-3.aspx

  5. Pete says:

    Dan

    Your still skirting the legal question. Is Microsoft happy to have the EULA tested in court and how does the license apply to the distribution of test driven.net? (not him running test driven under express or a user doing the same).

    You say the action is ‘illegal’ so which acts of Parliament (and specific subsections) is he breaking.

  6. danielfe says:

    Pete – I’m not trying to skirt anything, I am (thankfully) not a lawyer so I can’t comment on how I think Parliament or courts will interpret information.

    Sorry,

    -Dan

  7. Johan says:

    "Look! Microsoft is working hard on building a community!" http://weblogs.asp.net/fbouma/archive/2007/06/01/look-microsoft-is-working-hard-on-building-a-community.aspx

    omg dan, what have you done!?!

  8. jhale says:

    I agree 100% with you on this Dan.  I don’t see what possible complaint people have on this.  You are giving a product away for free!  You have every right to dictate limitations on the usage.

    When I was a poor college student learning to program, I managed to save enough money to buy a copy of Borland’s Turbo C compiler (for DOS).  There wasn’t even free documentation in those days because the web was still to come.  What I wouldn’t have given in those days to have had free access to the Express products and all of the documentation on MSDN.  It never occurred to me that someone "owed" me anything.

    The standard edition is a little over $200 on Amazon.  Factoring inflation, that is less than I paid for Turbo C many years ago.  Heck, I have even received two free copies of the standard edition from Microsoft for attending seminars.

    I would venture to guess the people complaining the loudest don’t even run the Express editions.

  9. Dalibor Topic says:

    So, let me try to make some sense of this mess : if I understand your last two blogs correctly, you’re personally making the claim in writing that some other guy in the UK is breaking local laws, but aren’t willing to back it up by providing specifics of what makes his activity allegedly criminal, or to retract that statement?

  10. Alan Schrank says:

    Dan,

    >>I am (thankfully) not a lawyer so I can’t comment on how I think Parliament.

    I don’t know you, but am guessing that, at least some where in your past, you are or were a developer.  If so, you are qualified to comment on how you think developers should react to these actions by MS?

    Do you think it should make us feel safe, if we continue to use MS technology?  I don’t have 50 billion dollars in cash to defend myself.

    Say Jamie, believes himself to be right and MS believes, as a corporate entity, itself to be right.  Which do you think can afford to continue to defend it’s position longest?

    Peace.

  11. Jonathon Lee says:

    >> # re: TestDriven.NET and Express – Technical Information

    >> Friday, June 01, 2007 7:07 PM by Dalibor Topic

    >> You still haven’t pointed out which line of the EULA that would violate.

    >>

    >> Or is that going to be like with those 235 patents >> Guiterrez, Smith, Hilf & Ballmer made up? Is that the new >> Microsoft way? 😉

    if you look at Dan’s response about technical limitations of the product, and what Jamie is doing  – you will see this is violates clause 9 of the EULA

    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 http://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.

    thanks

    Jonathon

  12. Fred Flintsonte says:

    I have read the license and have seen the clause about not circumventing technical limitations.  This clause may not be enforceable in the face of standard reverse engineering practice.  However, that may be a moot point unless one can prove that TestDriven.NET can only be produced by using software released under that license (or under a license with significantly equivalent terms).  If it were produced by any other tool, then the VS Express EULA would have no bearing.

    VS6 may not have that term.  (I haven’t checked the randomly located flock of EULAs scattered all over it.)  GCC does not.  Et c.  So it would appear that the first requirement is that MS show that the EULA term was in effect for the production of TestDriven.NET and the second requirement is for its developer to show that it wasn’t (or no longer is).

  13. kwilson says:

    You say you have been trying to get him to stop releasing the express version for 2 years and he says that he has never been told where in the EULA it states he cannot use add-ins.  Clear up this mystery and give us the pertinent EULA restrictions please.

  14. Bruno says:

    Eric E,

    If "market pressures" dictate that Microsoft should release its higher-end versions of VS for free, then they’ll address that.  Market pressures are not indicating that at the moment (see the profit Microsoft makes from development tools in their quarterly earnings), but if market pressures ever do, then it will be Microsoft’s decision as to whether to do release everything for free.  But until that time comes, Microsoft has the right to limit the features of VS Express.  

    The limiting of features is what allowed VS Express to be released for free in the first place.  I remember that at first VS Express was to be free only for a limited time (a year, or so), but it was so successful and enthusiastically received, that Microsoft went ahead and made it free permanently.  Now, you want to convince Microsoft’s upper management that it was a mistake to release it at all because people will hack ways to enable the previously disabled higher-end features?  And therefore, Microsoft stops releasing free dev tools?

    I agree with jhale that those complaining don’t use VS Express, and likely don’t use VS at all.  It’s just the same old slashdot peanut gallery.

  15. David Markle says:

    Dan,

    You’re more than in the right on this.  You have been more than patient with this guy.  I go into some detail about all of this in my blog (http://www.markleconsulting.com/blog).  

    Long story short, Jamie is using this whole "controversy" to line his pockets.  Ever wonder how many orders he’s taking during this whole flap?  And all the while making Microsoft’s reputation worse, not to mention dragging your colleagues personally through the mud, and making you all look like villains.  

  16. So just exactly where is the list of technical limitations enumerated?   I’ve found some web pages that talk about server products and such characteristics such as number of processors, but I’ve found no such list for VS.

    Eitherway this whole phrase stinks from high heaven for a product that is meant to be a development tool.  This is exactly the type of clever, creative engineering that developers should be encouraged to do.  Instead Microsoft punishes.

  17. Barney Rubble says:

    Everyone playing armchair lawyer (ahem, Fred Flintstone) should start ponying up their legal credentials.  I suspect none of you are lawyers, and therefore your theories about what is and is not enforceable via EULAs are moot and pointless.

    Facts thus far:

    – Jamie has a relatively popular product that fills a gap in all of Microsoft’s tools products.

    – Jamie has a heavier weight high-end version of his product, and he has a lighter-weight version of his product designed to plug into Microsoft’s Express products.

    – Microsoft’s Express products (and most companies’ products) have an end-user license agreement that must be agreed upon before using the product.

    – Microsoft believes Jamie is in the wrong, particularly violating Clause 9 of the EULA.

    – Microsoft has been "nice" for two years in asking Jamie to  stop distributing his Express products (nice being a relative term in asking an engineering guy to talk to him as opposed to a lawyer)

    – Jamie has ignored Microsoft’s requests to remove his Express version.

    – Jamie’s integration with VS is via the hack Dan describes in this blog.

    HERE’S THE CRUX:

    – Microsoft believes this hack is a violation of the EULA and therefore illegal.

    – Jamie believes his hack is not a violation of the EULA and therefore legal.

    Unless Jamie reneges, it appears the courts will decide the above disagreement.

    BOTTOM LINE:

    This product is not owned by the community.  It is not open source.  It is Microsoft’s product, and Microsoft alone has the right to license it the way it deems.  Microsoft alone has the right to determine which features are in or out of the product.  People who use the product must agree to that EULA.  What the courts will decide is whether or not Jamie’s product is within the confines of the EULA or not.

    Everything else about "big, bad Microsoft" or "poor little Jamie" is merely BS for the /. peanut gallery, as Bruno referred to it.

  18. Random Reader says:

    Thanks for getting details from the development team.  However, I still see some inconsistencies.

    "In the Visual Studio Express SKUs, because we disabled extensibility (macros, Add-ins, and VS Packages), the Add-In Manager is removed and therefore Add-Ins are not detected or loaded.  Jamie has created additional components specifically for the Express SKUs to work around this technical limitation.  He takes advantage of an extensibility point that allows user controls (such as a button class) to customize entries in the Properties window."

    It sounds as though extensibility is still present and not actually limited through technical means; only the main UI for it was removed.

    "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."

    This statement is curious to me.  Perhaps he does indeed do that for TestDriven.NET, but he doesn’t appear to need to.  The property extender is already loaded in process, so it is capable of doing whatever it wants.  Indeed, the sample code he posted uses no remote-process code injection method: http://www.mutantdesign.co.uk/downloads/ProjectReferences.zip

    It appears to me that some extensibility was deliberately left in Express without technical limitations, and that is what Jaimie is using.  I do not see any devious hacking or reverse engineering required for this to work.

    What am I missing?

  19. null says:

    The connection between "is a violation of the EULA" and "is illegal" is tenuous at best, but this ought to be resolved by the courts, assuming Jamie has the resolve. More importantly, the connection between "is a violation of the EULA" and "can be stopped" is very nearly nonexistent and will continue to be so for the forseeable future. Once code is on a user’s machine, they can and will alter it however they please; the amusing fiction that this may be prevented is just that – a fiction. This is a non-issue for everyone except Jamie (laughing all the way to the bank) and Microsoft (open mouth, insert foot).

  20. There is a cold chill in the air today. For those of you that don’t pay attention in the developer world,

  21. I understand that anyone using TestDriven.NET is almost certainly violating the MS EULA and you can probably legitimately sue them.

    Can you explain how TestDriven.NET developers have violated the EULA, however?

    Perhaps while they were testing… but in that case I suspect all you can sue them for is violating their individual EULAs, right?  

  22. Austin says:

    Disclaimer: IANAL

    Assuming that TD.NET violates Clause 9, all it means is that Jamie does not have a legal license to use *his* copy of VSE.  The only thing a lawsuit can legally accomplish is to prevent him from using his copy.  Now, Microsoft could go after his customers for violating their EULA, but that’s not what’s happening.  If this actually goes to trial, there’s no other possible outcome.  Of course, Microsoft’s attack dogs will do everything possible to prevent this from coming to trial (RIAA-style).

    Bottom line:  Microsoft lost an incredible amount of good will, in return for practically nothing (this coming from a .NET dev)

    Please, stop now.  Any more and you’ll look like AACS-LA.

  23. Mike Sax says:

    Hi Dan,

    A few comments/questions:

    1) How is the PopFly Explorer (which also extends VS Express) different?  Did the team do their own hack or did they get a special license?

    2) If I use the Express Edition with a program like QuicKeys, WindowBlins, an inline spellchecker, etc. that hook into the process and inject code, would I be in violation of the EULA?

    3) While I can see your main point, I also believe it’s important that the core value of TestDriven.NET is provided by the product itself, not by what it "unlocks" in VS.

    4) FWIW, as an ISV, I’ve been pretty annoyed by the fact that the Express Editions don’t support exensibility, because it reduces the market for your partners. You’re cutting off value that is not really your own, but that that we (third parties) are providing.

    – Mike

  24. Frans Bouma says:

    So… if there’s a flaw/glitch in this vs.net express product and I find a workaround, I can’t use it?

    What a load of crap. You can say all you want with ‘not work around technical limitations’ but unless you state them in full in your eula, it has no meaning.

    Furthermore, HE isn’t violating any eula. The EULA is between MS and the USER of vs.net express. If he compiles his code with vs.net pro or on the command line, the USER of TD.NET violates PERHAPS that clause (although I don’t see how).

    You gave the community a free tool. Now you’re crying foul that the community is actually using it. Oh my… who would have tought! a tool which is used to the max!

    :/

    Way to go, Dan. Really… in a few weeks we have DevDays here in the netherlands. We MVPs will be there with smiles on our faces talking how great C#, VS.NET etc. is to these (potential) developers.

    Should we add a phrase to our talks there which says: "but be careful… no-one knows what ‘working around technical limitations’ means but it can hurt you badly IF microsoft finds out that your product is hurting them financially and will use that vague eula clause to get back on you. So don’t write any code which could fix or make things more easier in vs.net or with .net, because that IS working around technical limitations. Happy coding".

    I’m a true software engineer and I hate to say it, but this whole mess Microsoft has now created really hurts my profession. That’s how I see it. You guys wonder why some people leave the MS platform for something else? Well, here’s part of your answer.

    Oh and Dan, you’re not a lawyer, but still you preach what Legal told you and you STATE things here which can only be stated IF you’re a lawyer. IF he violated anything, clearly state which clause he violated and how that clause applies.

    Because… technically, he doesn’t violate anything in the EULA, because… the eula isn’t in effect here: he could write the code in notepad and compile it on the command line. Then you still would go after him, while he doesn’t violate anything as he hasn’t agreed to any EULA. And if he wrote his code with express, then he can only be told to not use express anymore.

    THAT’S IT. Any other whining about violation of eula’s and other crap is moot. And you know that Dan, because this isnt about violating EULAs. It’s about Jamie cutting into your  business. Shame on you.

  25. Mike says:

    If there will be unit testing in Orcas (next Visual Studio) express versions, then we know what this is all about.

  26. Frans Bouma says:

    btw: I agree with random reader here: your reasoning is flawed, as the functionality is already there. Furthermore: BECAUSE The functionality is there, there’s no limitation! the road to get what you want is perhaps a bit long and a bit of a struggle, but it’s not a limitation.

    See how stupid the clause ‘thou shall not work around technical limitations’ is without naming them in detail? WHile everything else in a license is always named and described?

    Technical limitations can be anything, including a bad way of how MS’ designers work. Gee, offering a toolbox item which does a better job designing MS’ forms than your own, you also work around a technical limitation, Dan. And no, no lawyer or marketing drone will tell ME that that is something completely different without naming, IN DETAIL what the technical limitations really are.

  27. Jan Orsted says:

    > replacing the functionality of the removed Add-In Manager.

    Well, one can’t replace something which is not there. You get the idea? So you are accusing him of having written some code which does something similar to what another piece of software does, too?

    You say it is illegal? Microsoft does that all the time. Do I really have to mention BlueJ? Well, I guess I have to. Microsoft programmers under your very own guidance had not only blatantly copied another software’s features, but even tried to patent them (http://www.bluej.org/mrt/?p=21 http://www.bluej.org/vs/vs-bj.html). The Microsoft ethos at work.

    Now to the license:

    > Unless applicable law gives you more rights despite this limitation,

    Dan, IANAL, so I’d just say why not let your highly payed, blood thirsty landsharks have a look at the reverse engineering rights in the EU? Oh, in case you forgot, the UK is part of the EU (even if even UKians like to forget this). The UK operates under UK, not US law, and the UK has implemented EU directives.

    IANAL, but I would be rather careful to accuse someone in public of doing something illegal. You repeatedly state you are not a lawyer, so you state you have no fscking clue what you are talking about, but you still accuse him of doing something illegal. Great, slick move, Microsoft "ethos" at work.

    Would I be accused in public of doing something illegal, I would seriously consider suing the accuser, more precisely, I would consider suing your arse off. Ask your lawyers about that libel thing. And maybe you want to consider contacting Microsoft’s PR agency and admitting your blunder, so they can do some form of damage control and appeasement spinning.

  28. Shachar Shemesh says:

    Full disclosure – I’m a Linux advocate, and rarely use Windows at all these days. I am not a lawyer, but have studied EULAs in particular, and uniform contracts at large, a little.

    Dan, your argument seems to hinge on three legs.

    1. We gave it to you for free, so you owe it to us to play by our rules.

    2. Jamie refused to cooperate for two years with our requests.

    3. Jamie’s actions violate the EULA.

    1 is bullshit. You cannot give out a piece of software and then, retroactively, change the conditions under which it is given. If the conditions were not there initially (and I realize you say they were), you made a bad business decision, but are in no position to demand anything. You can ASK, but people can say "no". In other words, your business model is not binding to your software users.

    2 also seems to be totally off. According to Jamie’s blog, and I have seen nothing on this blog to refute this, he has been asking to see what legal standing you have for your requests for two years, and have only ever got the response yesterday. If your 1 was valid then you would still have a point. Since it is not, however, then you have only ever been really discussing the matter for one day.

    3 is where it gets interesting. This is also where my lack of formal education is most evident. What I do know is this:

    – An EULA has very complex point of acceptance by the user. It is extremely difficult to prove knowledgeable consent about it, or even consent at all.

    – Even if we assume consent, it is a "uniform contract". That is, contract drafted by one party, without giving the other party any chance to negotiate the terms. With such a contract, the other party can ask the court to strike out articles in the contract *merely for being unfair*.

    – Even if all articles of the EULA remain standing, courts are instructed to interpret the wording of the contract, any contract, in the way most favorable to the party who had no say in the wording of the actual contract.

    – Even if the contract resolves to mean what you think it means, certain laws take precedence over contracts. One such law is the one, in Europe, that allows reverse engineering for the sake of interoperability between software components.

    – Even if overriding laws do not apply, it is not at all clear that merely distributing a program (as opposed to, say, running) the program the does the bypass amounts to a contract violation.

    It seems to me that you have a very steep hurdle to cross here.

    On another matter, I should note that if it turns out that your business partners are handicapped when compared with independent software vendors, it is you and your own legal department that should receive pointed questions, not us, the community.

    Shachar

  29. Congrats says:

    Thanks a lot Dan. You *should* protect all of your products. Thanks a lot!

    BTW, I’m migrating to Linux.

    Cheers!

  30. MSAS says:

    Very well said, Frans.

    Of course Microsoft won’t do any legal action because the only feasible one would be – maybe – against VS Express users themselves, who are in “violation” of the EULA. I doubt Microsoft’s legal department recommend that course of action in the first place. So it must have been somebody else’s idea.

    It looks like somebody drank too much kool aid and thought that “the community” would “side with Microsoft” against this miscreant and started this clueless thing as a “PR campaign”.

    I  hope that some grown at Microsoft up step up soon and clean up the mess.

  31. Mike says:

    @Dan

    I am a VSIP, I am not at all scared of MS, in fact, after reading the emails Jamie posted I feel better than ever knowing that if someday I accidentially violate some part of the EULA, MS will be poilite, patient and give me evry chance in the world to get on track.

    Most and I mean Most companies would have just called up the lawers from day one. Hats off to MS for your patience with him.

    I read all the emails, and not many commenters on this talk about how Jamie was demanding his MVP back in "good faith" before he became compliant. I am sure the lawyers suggested they go after Jamie for "blackmail".

    I also got the sense from the emails that had Jamie simply complied 2 years ago he would have fantastic backing from MS.

    Jamie even wanted redist on API’s just for him, now thats unfair business practice. His entire tone was demanding and unreasonable.

    I also have free / demo versions of software and I would not be so nice if in this situation.

    VS Express exists as a learning tool, VS Standard is affordable for anyone wishing to develop a commercial product. When I read between the lines Jamies motivations apper to be selling software to a market of developers using express.  So who is in fantasy land, MS or Jamie?

  32. Aaron says:

    """

    9. SCOPE OF LICENSE.  … You may not

    • work around any technical limitations in the software;

    """

    That clause is so vauge.  Heck, you could make a case that using source control and the VS Express editions violates it!  After all, as there is no source control built into VS Express, its fair to call that a limitation, and if you use something like SVN or CVS or even VSS then arent you working around that limitation?

  33. eilert says:

    Reading comments and blogs relating to this insident I do get the impression that Jamie is not as bad victim as he might want us to believe. He claims since the EULA uses the term "technical limitation" which is vague, MS could now interpret this so that he is in violation. However his own EULA has very similar wording. I do’nt know what to make out of it.

    Also I have seen several coments actually critical to his version of the events, which somehow were blocked on his blog.

    But seriously Microsoft you could have avoided this whole PR debacle, if you were thinking a bit out of the box here. The Express editions are there to drive the .NET and VS ecosystems. Jamie is part of that ecosystem. He even has incentive to stay in there, since he actually profits from it. He also seems to be able to sell to the guys who are using the Express editions, which means there is actually a market.

    If, instead of going the route you were taking, you now would have graciously anounced that you will add the extensibility back into Express and simultaneously anounced that you would now also sell some of your tools (like your Unit Testing Tool) as a add-in or add-in packs (the pricing could be such that in gets progressivly more expensive until it is cheaper to get one of the other SKU’s), you would get extremely good PR and you also would further driven the ecosystem.

  34. sukru says:

    > If there will be unit testing in Orcas (next Visual Studio) express versions, then we know what this is all about.

    @Mike: As fas as I know this issue has been around for ~2 years, thus Orcas is not much relevant to the discussion.

    @Random Reader: Correct me if I’m wrong… The entire visual studio is built as plugins (like Eclipse), so for example you can take the Visual Studio "core" and deliver "Visual Python" or any other environment that you like. So they just "can’t" completely remove extensibility from VS (but they can limit user facilities).

  35. JavaRocket says:

    @Everyone

    Following the innocent until proven guilty and big-bad Microsoft mindset I was siding with Jamie until seeing this code. You can try to debate symantics but code doesn’t lie. Jamie hacked a loader for his add-in into Express. Plain and simple. Case closed. Game over. This guys is nuts. I hope he

    takes this to court and gets what he deserves.

    @Random Reader,

    Thanks for posting a link to the source code. That cleared things up for me.

    @ Dan,

    Thanks for being upfront with us. Apologies to you and the team who took the blunt of this  crap. We were mislead.

    – JR

  36. JavaRocket says:

    @Everyone

    Following the innocent until proven guilty and big-bad Microsoft mindset I was siding with Jamie until seeing this code. You can try to debate symantics but code doesn’t lie. Jamie hacked a loader for his add-in into Express. Plain and simple. Case closed. Game over. This guys is nuts. I hope he

    takes this to court and gets what he deserves.

    @Random Reader,

    Thanks for posting a link to the source code. That cleared things up for me.

    @ Dan,

    Thanks for being upfront with us. Apologies to you and the team who took the blunt of this  crap. We were mislead.

    – JR

  37. Scott says:

    From my POV, arguing about the wording of the EULA and whether or not it’s enforceable isn’t the point. The point is that the Express products shouldn’t be limited in the fashion that they are. In fact, MS should promote the development of add-ins for the Express products. There should be all sorts of add-ins that enable new programmers to create applications. MS should build a community around the Express products. In a lot of cases, todays Express user is tomorrows Windows platform developer or MVP or MS employee. Don’t you want to build a community around those people? Keep in touch with them so you can help them grow as developers?

    Making the Express line is only the first step. The dev tools aren’t the big money makers. The platform is. Anything that promotes the platform, IMO, should be either free or underpriced as cheap as possible. Eclipse is free. XCode is free and bundled with the OS X install DVD. The Rails tools are free. Netbeans is free.

    Lets pretend this isn’t about a Unit Testing add-in that a company is selling. Most newbie programmers aren’t going to get into Unit Testing for a while. Let’s pretend this is about an add-in that lets the new developer import their Windows Mail address book into their database for their soccer clubs website. Now how does everyone feel about disallowing add-ins in the Express products?

  38. Casey says:

    Sorry Dan, you lose on this one, whichever way you look at it.

    You left the functionality in that lets his product work. Just becasue you didn’t publish an article on MSDN telling people how to do it, and Jamie figured it out, isn;t his problem.

    MS own products do the same or similar, and if you remember your biggest court losses, it was due to you having unpublished APIs that your software could use, but competitors couldn’t.

    And I honestly thought you had learnt by now.

  39. frankies says:

    this looks straight forward to me. testdriven obviousely wants to play survivor so lets vote this guy off the island. give me a palm leaf and i’ll write his name on it.

  40. eilert says:

    Reading comments and blogs relating to this insident I do get the impression that Jamie is not as bad victim as he might want us to believe. He claims since the EULA uses the term "technical limitation" which is vague, MS could now interpret this so that he is in violation. However his own EULA has very similar wording. I do’nt know what to make out of it.

    Also I have seen several coments actually critical to his version of the events, which somehow were blocked on his blog.

    But seriously Microsoft you could have avoided this whole PR debacle, if you were thinking a bit out of the box here. The Express editions are there to drive the .NET and VS ecosystems. Jamie is part of that ecosystem. He even has incentive to stay in there, since he actually profits from it. He also seems to be able to sell to the guys who are using the Express editions, which means there is actually a market.

    If, instead of going the route you were taking, you now would have graciously anounced that you will add the extensibility back into Express and simultaneously anounced that you would now also sell some of your tools (like your Unit Testing Tool) as a add-in or add-in packs (the pricing could be such that in gets progressivly more expensive until it is cheaper to get one of the other SKU’s), you would get extremely good PR, you also would further drive the ecosystem and profit from it.

  41. mbergal says:

    Dan,

    I think this is not a question about legality and "technical limitations" any more. It is that you are trying to make money instead of improving a viability of platform. Getting more money for MS is a local maximum, in the grand scheme of things this optimization is going to hurt MS platform and it’s customers. If this is a prevailing  MS attitude, we (developers) are leaving.

  42. WhinyMS says:

    Dan, if you’re not a lawyer then how can you be so certain that the vague clause ("You may not work around technical limitations") applies to this issue, especially in the UK?  You do seem awfully certain for someone claiming ignorance.

    Moreover, you are doing shocking amounts of damage to your own community.  There is a massive shitstorm brewing here. Man you guys never could see the forest for the trees, could you?

  43. PMBCAN says:

    Hi Congrats !

    Q: How to mutate a programmer’s thinking to that of a system administrator?

    A: Give him a Linux.

    I have learnt it hard way, and moved back.

    Good luck !

  44. grauenwolf says:

    eilert,

    What you suggest it the absolute worse thing Microsoft could do if they want to prevent this sort of thing in the future.

    Reading through the emails, it is clear that one of Jamie’s goals was to make Microsoft chop up its SKUs and release them in the fashion that Jamie wanted.

  45. Joe Brinkman says:

    One thing that many people seem to ignore is not just whether Jaime is violating the terms of the EULA.  Even if he used notepad and the SDK to create his product, he is ultimately building a tool which requires his end-users to violate the license during normal use of his product.  As was the case with Napster, the US courts have held that creating a product or service whose normal use will result in a violation of another companies copyrights is in itself a unlawful.  It is possible that it may be different in UK, but somehow I doubt it.

  46. Joe Brinkman says:

    @Scott – What does the usefullness of the add-in have to do with whether Jaime’s product violates Microsoft’s IP rights.  The fact that you would like Microsoft to give away their more robust VS SKUs for free is also irrelevant.  As a company Microsoft has the sole right to determine how they will package and sell their products, which features to include and which not to include.  If we don’t like that decision or the license restrictions we are not free to violate them just because we don’t agree with them.

  47. Random Reader says:

    @sukru: Yes, I gather VS is built in a modular way like that, but even then there are some hard technical barriers that could be put in the way and don’t seem to have been.  For example, using digital signatures to verify that anything loaded came from an MS key just for the Express editions.

    Past a certain point it’s obviously not worth the effort, but it only takes one thing like this to make it crystal clear that third-party things are not meant to be loaded.

  48. TJ says:

    What strikes me by reading both sides of this case is that Jamie’s delusion is pathological.  He had to know that we would be able to determine exactly how he extended Express.  This takes me back to Psych 101.  His certainty (held with absolute conviction) incorrigibility (not changeable by compelling counterargument or proof to the contrary) and falsity of content (implausible, bizarre or patently untrue) all point to him not being able to comprehend the true implications of his actions.

  49. sukru says:

    @Random Reader: Yep you’re right. They could’ve included more mechanisms (like digital signitures as you say or something more) to the VS Express editions.

    However given sufficent time, even they would have been "cracked". (Every other application or game software, or consoles have already been). Any I believe more measures would only slow down or cripple the system in an unnecessary way

    Microsoft did what they thought to be "enough" to prevent 3rd party extensions in their products. And many people respected that. This doesn’t seem to be a technical issue any more, but an attitude one.

  50. wnight says:

    Who cares what Jamie wants, or if he dislikes MS? I do. Doesn’t change the legality of anything I’m doing.

    Who cares if MS asked him to stop? A hell of a lot of people have asked MS to stop doing far worse things.

    The law doesn’t allow you to forbid the possessor of a book from reading it.

    If I wrote a book and said that nobody who worked at MS could read it I would be unable to enforce that. I could choose not to sell it to MS employees, and even to make all buyers sign a contract agreeing not to give their copy to an MS employee. But if a copy fell out of someone’s pocket on the bus and an MS employee picked it up, nothing at all would prevent them from reading it. Not even if I had huge bold type all over informing them that they were not allowed.

    Do you see the connection? Once someone possesses Visual Studio they can use it however they like, even if this is to ignore the EULA (it’s not offering anything you don’t already have – no consideration means not valid, among other reasons), hack around it, pipe the executable to /dev/audio to listen for secret messages, whatever. Even if BillG himself calls you and asks you to stop, before you obtained the software, you still wouldn’t have to.

    You know, as if you were an author and you were trying to tell people to stop highlighting your books. They’d look at you like you were a nut.

    So here Microsoft is, trying to tell us that programs are nothing like books. That the standard laws don’t apply, wild claims become contracts, that war is peace, that EULA-encumbered is the new free.

    Just imagine this thread over at Stephen King’s blog if he tried to disallow someone reading his books over a negative review. Yet people who back MS here are supporting the same repressive and unfounded nonsense.

    I’ll ask Jamie to stop the day BillG writes a multi-billion dollar check to DR-DOS’s creators, SCO’s targets and innocent victims, etc. Until then it’s obvious how far basic politeness gets you around Redmond.

  51. David Markle says:

    Dan:

    Here are my thoughts on this: http://www.markleconsulting.com/blog

    The rumor is that MS is going to amend the EULA to make it a bit more specific.  I think that’s a good thing to do.

    I also want to extend my condolences to you and your team over this whole thing.  This has to suck for you — you guys are just doing your job, and to have to deal with this ridiculous drama instead of doing software development really stinks.  

  52. Wow. Amazing. I just got wind of this through Slashdot and I am absolutely astounded that Microsoft is actually pursuing this strategy.

    At a time that the development community is shrinking versus the inflow of projects (worldwide and especially in the US the number of graduates do not match the number of projects and the potential for projects to be assigned), Microsoft is actually discouraging its community from evolving and providing tools and support to grow its own user base.

    Look at the modding community surrounding some of the larger games out there — Tribes, BF series and even Half Life. Some of the mods for those games have in fact become the next generation game. BF1942:Desert Combat team moved into BF2 and 2142, for instance.

    Instead of taking a cooperative approach with this tool, Microsoft has gone corporate and hostile. This attitude is neither productive nor helpful. As the backlash has shown, this will only discourage potential users of the VS tools and encourage the competitors which have a stronger cooperative framework to continue to innovate. I’ve been watching the Ruby on Rails movement and I am a user of VSTS. I can assure you that if RoR gets good enough, I’d be the first one to jump. As a businessperson I have to watch my bottom line and I have to be able to innovate as quickly as possible for my customer’s sake.

    The most logical course to take with this testing tool would have been to simply incorporate the free version with the free product and to maybe even make a contest out of it to encourage people to develop similar tools so long as they are released for free. Google "summer of code" as an example is a brilliant campaign. Microsoft should have taken a cue from this and done something similar.

    Instead, this slap in the face to the development community will be long remembered. The folks that made the company in the beginning (developers) can be the one that destroys it in the end (by leaving). If no one writes for Microsoft, who will buy the OS?

    MD

  53. MR says:

    Dan,

    I was reading this thinking that you were making a pretty decent case.  However I think you may have pushed this a little too far and in doing so discredit the main point you were trying to make.

    1) According to the emails published on Jamie’s blog, when the team first contacted him, TestDriven.NET was available as a free product and not one that Jamie was making money from.  The code appears to have been hosted on  SourceForge (see http://sourceforge.net/projects/nunitaddin).

    2) As far as I am aware, there is no difference between the free, professional and enterprise versions of TestDriven.NET – only that the license terms are different.  For example the Enterprise version allows you to re-distribute the plug-in within your company.  Therefore your analogy comparing what he did to someone unlocking features of the enterprise version is not quite correct.

    Anyway, he isn’t actually unlocking any features in Express, he is adding them.

    You do a decent job of explaining why it is that you do not want people to ship extensions to Express – basically that it is your product and you want people to only use it to do what you enable them to do.  While I personally disagree with that approach it is not my place to criticise – this is your product and you should use it as you see best for whatever goals you are trying to achieve with it (and also with-in the limitations imposed on you by balancing the various commercial pressures inside Microsoft)  I am then free to make my decisions as to which technologies and tools I use based on your decisions.

    Personally, I’m just very sad at the whole situation.  I feel that both parties are loosing by the continued farce – however I do not see a way forward without one party backing down and the end result still being a loss on both sides.  Very sad.

  54. Old VSIP says:

    People love to hate Microsoft but you’re doing the right thing. Letting some spineless guy blackmail you will hurt the entire industry. If Microsoft can’t stop a one man show from blatent IP burglarizing then who can? Good luck.

  55. Annonomous says:

    In David’s blog http://executioniseverything.blogspot.com/ people pointed out inconcistencies in Jamie’s story. Please post the letter that Jamie sent you last week and the missing emails. It will help everyone form their own opinions.

  56. Adam says:

    I disagree with your interpretation of the situation. If you disabled a feature, then it is simply not available for use. Thus, it is impossible for him to work around something that does not exist. Working around your technological limitations would be like re-enabling the Add-In manager, which you say he has not done.

    Code injection is not a workaround, nor is it a hack. It is a common developer technique used for a range of solutions. The end result may be about the same, but it is not a workaround. If you are unhappy with this, then disable it (somehow) in a service pack or future version.

    I have read the EULA several times now. In my non-lawyer opinion, I fail to see a problem.

    I am a professional developer. At work I use VS Pro. This is not by choice though. I must honestly say that I prefer to work with Express. It is a much cleaner, faster, and efficient interface. Most of my prototyping I do on my own time at home with Express. This is often later used in Pro. Many of my colleagues feel the same.

    I also must point that that the lack of addin functionality in Express has changed some things for me at work lately. In the last year, most of my division is moving from VS to Eclipse. The sole reason for this is to develop addins for a free platform without restriction. As much as I love .Net and have tried to move on from Java, my hands are tied. Microsoft has not given us much of an option.

    I think Microsoft is hurting themselves the most.

  57. Marcos Meli says:

    You must be kidding, the best thing that you all can do, is dont talk more, you dont see the passion in the comments

    WE DONT WANT TO HEAR YOU ANYMORE,

    IF YOU DONT HEAR ALL OUR PETITIONS ON .NET 3.0 and you name it that way

    WE CAN DO WHATEVER WE WANT, AND THE BEST PART IF THAT YOU ARE DEFENDING YOUR SELF BADLY BECAUSE YOU ONLY MAKE US HATE MICROSOFT MORE

    IF YOU WANT TO WIN… ANYWAY, you can win anything now, TO LATE M$ TO LATE !!!

    The best luck to Ballmer and all you with that stratergy, you get only loved, how many of the new genious in the comunity will want your MVP or work for you, too little in the future, to little !!

  58. Ian Chamberlain says:

    Whatever the rights and wrongs of Jamies behaviour this is a PR disaster for MS. Which is a real shame as there is a good technology story being lost behind the image of the M$ bully, playing straight into the hands of the OSS advocates.

    I’m not normally one for consipiracy theories but the news that Orcas will include functionality very similar to TestDriven.net I find very disturbing. Especially as these new features seem to be directed at MSTest unit tests only rather than embracing a number of frameworks as is the case with Jamies TestDriven.net (e.g. NUnit, MbUnit, etc). (see http://blogs.msdn.com/nnaderi/archive/2007/05/11/new-unit-testing-features-in-orcas-part-1.aspx)

  59. Ian Chamberlain says:

    Having read both of Dan’s posts, all the comments and done a little research and added a short comment I feel I’ve got to provide a more complete comment in the faint hopes that someone at MS will look beyond the corporate arrogance and see what they are doing to the developer community.

    I have been developing commercial software for well over 20 years, on all kinds of technology from mainframes to minis to micros to PCs. I made a decision a few years back to switch to .Net because I thought it was a great platform (I still think that). I want to continue with .Net but I’m getting incresing pressure from customers to move away and I don’t like the fact that I can’t win the argument on purley technical grounds. M$ always rears its ugly head.

    What MS is doing now is exhibiting exactly the same kind of behaviour as IBM did at the height of their power in the late 80s, early 90s. OS/2 would succeed because it was better than Windows. It was too, but Windows still won. Why was that? Because MS looked after the developer while IBM looked down their nose and said we know better than you what you need. They didn’t look after their partners or their developers.

    MS is now doing exactly the same thing. .Net and all the tools and capabilities around it has a very good technology story to tell. The server stack with Sharepoint, SQL, BizTalk, etc is great. Yet developers are switching away in droves. Why is that? Who would want to develop a complex UI in Flash actionscript when you have WPF? Who would want to build enterprise apps in Java and Websphere MQ instead of .Net and BizTalk through choice? Most people who have spent impartial time with the available technology stacks would choose MS I’m sure, except for one thing, the MS attitude.

    Can they be trusted? Are they going to turn on me if I step slightly out of line? Instead of being the purveyor of FUD MS are now on the receiving end because of their own behaviour.

    I’m sure for a few dollars (in M$ terms) MS could have bought Jamie out and embedded TestDriven.net in Orcas, instead of adding their own proprietary version that only works with their own tools. Jamie would have been happy cos he’d have made good bucks for developing a good product. The community would be encouraged by the thought that good work extending the toolset would be rewarded. Users would be happy with the great funtionality added to the product. And in all probability it would have been cheaper than MS developing it themselves. Why didn’t this happen? Because MS thinks it knows better. If it doesn’t wake up to the new reality soon it will suffer the same loss of control and prestige (and profit) as happened to IBM in the mid nineties.

    Google is already on the way (if it isn’t there already) to being the company everyone looks to for leadership. MS has a lot to do very quickly if it is to regain that leadership position. Jumping all over your development partners isn’t the way to go about it.

    Please, please, stop the idiotic behaviour that reinforces the M$ stereotype. Before its too late.

  60. Peter P. says:

    The amount of furor over nothing is really amazing.  If you use somebody’s software, you have the respect the license. It doesn’t matter who made it or what the license is.

    Why is this so hard for people to grasp?

  61. Austin says:

    Peter P. said:

    "The amount of furor over nothing is really amazing.  If you use somebody’s software, you have the respect the license. It doesn’t matter who made it or what the license is.

    Why is this so hard for people to grasp?"

    Because the license only applies to end-users! (*End-User* License Agreement).  Microsoft has no legal right to go after Jamie, only those customers who use VSE and TD.NET.  

    Why is this so hard for you to grasp?

  62. Scott says:

    @Joe Brinkman

    I tried to pick an example of a useful add-in that wouldn’t compete with an existing MS product to advance my idea that MS should promote the creation of add-ins for the Express products rather than lock them out all together.

    I’ve already said that Jamie is in the wrong for violating the EULA. Of course I’m not really qualified to speak to that because IANAL. However I am entitled to share with MS my opinions on the course of their products and where I think they should go in the future. They can, and will, ignore me as they choose.

    And I think that rather than limiting people new to programming, they should embrace them and give them as many tools as they can to enable them to grow as programmers.

  63. grauenwolf says:

    > I’m sure for a few dollars (in M$ terms) MS could have bought Jamie out and embedded TestDriven.net in Orcas, instead of adding their own proprietary version that only works with their own tools.

    Um, no. TestDriven.NET does nothing on its own, its just a wrapper. It relies on the test frameworks created Microsoft (MSTest) and open source developers (NUnit) to actually do anything.

    Microsoft doesn’t need to buy a wrapper for its own product, and is alergic to the open source products.

  64. Craig says:

    Peter P. ,

    I have read the license in full several times now. I also know exactly what part Microsoft claims is in violation:

    "You may not work around any technical limitations in the software".

    However, I do not think that he has worked around anything. As Dan explained, the add-in functionality has been disabled. Thus, it is impossible for him to work around something that is not functional. Nor has he re-enabled it. He supplemented this lack of functionality with his own. There is no hack or work around here.

    If Microsoft is unhappy about this, I suggest that they make changes to their software via either a service pack or a future version which may further restrict such functionality. That is not to say that another solution may not be found, though.

  65. CharlesH says:

    A little clearer what is the situation, but Microsoft’s conclusion is still disappointing.

    I’m sorry, I still don’t support their position, it’s quite obvious they simply want to drive sales of their VSTS SKUs.

    Thing is, I’m not about to drop 10k or whatever exorbitant amount it is now on that.

  66. FWLIW, I’ve just downloaded – using cvs from SourceForge – NUnitAddin.  It’s available under the zlib/libpng license, which does make that part of TestDriven.NET open source.

    Which would make it moot if someone did reverse-engineer TestDriven.NET, etc, as the NUnit driver functionality is already available.

    The importance of this whole storm-in-a-teacup isn’t so much what Jamie Cansdale is doing that might be disallowed by the EULA or whatever – that is for the lawyers to decide.  It is what people think of Microsoft now it is getting panicky about someone playing around with a well-liked Microsoft programming toolkit.

    IMHO, and if I was in charge of the relevant Microsoft team, I would be agitating for Microsoft to release the MS Visual [Programming Language] Express source tree under the Microsoft Community License, as damage control.  Since Microsoft isn’t making any money on Express, and since there are people dedicated to seriously playing around with it, I’d be trying to work that in my favour.

    But I’m not in that sort of position, and I seriously doubt Microsoft would do any such thing … so let it be, whatever happens.

  67. Roger Weems says:

    > We tried for close to two years to get Jamie to stop releasing the Express version of TestDriven.NET without success.

    I think it’s clear from even a casual reading of the actual correspondence, going back and forth between Jamie and the guys at Microsoft, available at Jamie’s website, that this whole thing could’ve been avoided if they had replied to his question about which particular part of the EULA he was supposedly violating. Indeed, he stated and restated that point enough times.

    This is the basis of all law; if you make a claim that somebody has done something it is up to you to supply evidence, and that cuts right across the board.

    Please believe me, I’m not one for bashing Microsoft, but I’m wondering if it’s endemic of Microsoft that it feels it’s now so big and important it doesn’t need to do adhere to this? I only mention it because it exactly mirrors the situation with the accusations that Linux infringes on Microsoft IP. Clearly someone at Microsoft believes there is a legal case, but where is the evidence?

    Certainly it’s incredibly rich to say "we tried for years to resolve this" now when there doesn’t appear to have been any real attempt to present that evidence. That only came with the legal notice he’s been recently sent, and when you look at that – also at his site – it gives a very short time for him to comply. It’s from the moment he recieves that information that you should start your watches to see how long it takes him to comply.

    It IS a shame that it comes to a legal standoff, when it could’ve been resolved a lot earlier. It MAY be that Microsoft is entirely right in all their assertions in this case, and if that’s so, I think even Jamie himself would welcome it. The way this situation has been mishandled, I only hope it hasn’t caused too much damage to Microsoft’s good name in the mean time.

  68. wnight says:

    Funny how everyone assumes EULAs are valid. How does a totally invalid contract suddenly become binding here?

    Don’t bother asking which part of the EULA is relevant. None of it is. I managed to download VSE without agreeing to a contract.

    In Firefox, with Javascript turned off, MS’s site wouldn’t even let me see the download link, so I had to manually parse the code myself. No contracts appeared when I used wget.

    When I got the software, well obviously I’m allowed to modify anything I own (I don’t own the copyright to my textbooks, but have underlined a passage in one without being arrested.)

    So I’m allowed to read it, and thus to execute it… At this point I have it, and am allowed to use it, so what can the EULA offer me? Nothing. So it’s not a valid contract.

    The other proof EULAs are worthless? Microsoft’s big push to get the UCITA passed in some states. Obviously there’d be no need for a law to expressly make EULAs legal unless they weren’t.

    But finally, how else does MS expect people to treat them, given MS’s horrible history of lies and anti-competitive behavior? If MS wants friendly treatment maybe it could try that first.

  69. Oran says:

    Dan, I sure hope you’re the poor sucker who is forced to play the bad cop and ScottGu comes along to be the good cop.  If Scott remains silent on this, he is implicitly condoning your behavior.  If he speaks in your defense, he tarnishes his great reputation with the developer community.  The only reasonable high-level choice is for Microsoft to make some concessions here.  There are more culture/brand issues as stake than legal/financial issues.  Don’t win the battle only to lose the war.

  70. Sean says:

    "The amount of furor over nothing is really amazing.  If you use somebody’s software, you have the respect the license. It doesn’t matter who made it or what the license is."

    I would agree by a license if the license explicitly tells me what is disallowed. "Technical Limitations" is much too vague — is writing a parser for .csproj files overcoming a technical limitation? Would writing my own IDE that has features that express doesn’t have that I would turn around and sell overcoming a technical limitation?

  71. Allan says:

    Is it just me or is everyone missing the point here. If you look at all source code provided on the net and open source software they all have something along the lines of ‘You may freely use and distribute this as is and NOT sell it or make profit off of it. This remains the intellectual property of the author and require their permission to modify it, etc’. Now people are saying to MS we are allowed to do what they want with it and make a profit from software that MS developed? Either the intellectual property of the software (VS) is the intellectual property of MS of it isn’t.

    MS owns VS and will do what they want with it. If they choose to do something you think is stupid then you can always use other software and if they do something stupid then the consequences of those actions are theirs. But until Jamie creates his own VS express and gives it to MS then they can tell him what he can and can’t do with their own products!

    By the way all the stuff about the EULA is stupid because the EULA is the user not the developer. But what Microsoft was trying to get at is this if you make a product that people buy and I create plugin to remove the software protection your saying that you are not legally allowed to do anything about it? Is anyone here going to give all the code they have ever developed to MS for them to make money off of it? Has Jamie provided his code on a silver platter to MS? No? Then why should they allow him to use his code in their free product? Because until you let someone else make money off of something you have provided for free (with them putting little effort into it) then please shut up.

    Finally to the people who say that MS is hurting the software development community then why are do developing MS software if it’s so bad. Why don’t you get your customers to use Linux instead and use OSS? It’s got to be cheaper for them, easier for you to develop in and surely easier for customers to use than windows. Are MS charging people to use the express version? The fact you can get something for nothing and with no hassles is good in my books.

    In the end it is the customers that decide and if they side against Microsoft then the company will loose money. The fact that Microsoft provides these tools for free has a higher cost to benefit ratio that other software I have seen.

  72. Bruno says:

    @CharlesH

    "I’m sorry, I still don’t support their position, it’s quite obvious they simply want to drive sales of their VSTS SKUs."

    God forbid that Microsoft doesn’t want VS Express to cannibalize VS Standard, VS Pro, and VS Team.

    "Thing is, I’m not about to drop 10k or whatever exorbitant amount it is now on that."

    VS Standard costs $200.  From what orifice did you pull "10k" from?

  73. Jeswin P says:

    I’m missing why you (not you, the Company) would want to alienate the community, when the VS toolset itself contributes little to your bottom-line compared to Windows/Office/Other Servers.

    And, idiotic to get into a game you can’t win.

    1. MS wins the legal case. MS loses.

    2. Jamie wins the case. MS loses.

    As for me, I can’t figure out how removing a UI constitutes a technical limitation – like many others. Just feel like saying "Good Hack." [To the first commenter, a "hack" is a good/clever idea.]

  74. carlivar says:

    All Jamie asked for is a statement from Microsoft for his users. That’s all. Read the emails; it’s all it would have taken for him to fully comply — not legal action. Since his users are Microsoft CUSTOMERS, essentially he was simply asking that Microsoft clarify their position to Microsoft’s OWN CUSTOMERS.

    I find it ironic that your blog entries of the past couple days are ALL JAMIE WANTED all along! In fact Jamie might as well just link to your blog entry in his explanation to his users.

    Is Microsoft in the legal right? Yes. Was it handled properly? No, in staggeringly bad proportions. The stuff of business school cases in how not to work with partners & customers.

  75. Sam Spade says:

    If people like Jamie are not willing to do the right thing, then perhaps you should withdraw Express and have done with it.

    You tried to do a good thing; it didn’t work because some won’t play an ethical game, skirting around the edges and quibbling about the nitty gritty of an EULA.

    It’s quite simple to me; you took out some abilities especially so that you could provide the product for free; Jamie does the dirty and puts the ability back – some support his behaviour – so, if you can’t trust people to do the right thing you will have to withdraw Express and tell all who complaint to go chat with Jamie.

  76. MikeX says:

    @Joe Brinkman:

    "As was the case with Napster, the US courts have held that creating a product or service whose normal use will result in a violation of another companies copyrights is in itself a unlawful.  "

    Copyright has nothing to do with it.

  77. pavera says:

    Mike,

    I understand you’ve drunk the kool aid, but seriously, if you spend hours building an integration with XYZ product, and that company (after giving you an award for said product) calls you and says "Hey, its violating our EULA" and they can’t or won’t tell you which clause you are violating, and you get advice from an attorney and he says you aren’t violating the license… You are going to just lay down and surrender without even trying to fight?  Just throw your work away?  You must be french.

    You state that VS Express is supposed to be an educational tool.  You don’t think its valuable that students learn unit testing?!  I never want to develop with you!  I’ve worked with enough crappy MS only programmers to know that this lack of focus on modern test driven development in MS products seriously degrades anything they produce.  Basically you are saying "If you want to learn real programming, and use best practices, write code in java, python, or ruby where the languages have built in unit testing and the IDEs are functional in this regard"

  78. Kolja says:

    I do not see what the EULA has to do with it.

    Maybe it forbids extending the software, but the act of distributing a tool that allows this extension is something different. After all, daniel might not even have Visual Studio installed himself. (We know he has, because he said so, but he could hand over distribution to someone else who has not)

    Someone who never read the EULA cannot be bound by the EULA.

    However there might be laws in the UK that prevent distribution of circumvention software (Like in the US). A law applies even if you have not read it 😉

  79. David Bond says:

    Wow!  What a great argument going on here!  Who is right?!  Who is wrong?! One thing’s for sure, my recent attempt to migrate to VS via VS Express have been cut short  and I’ve returned to SharpDevelop, which offers NUnit integration.

    MS were steadily gaining goodwill with me and it’s all been shot to pieces by this incident.  I may even revert to testing all my code against Mono and make sure it still runs on Linux as well.

    What grand muppetry MS is exhibiting here.  Have they not heard of goodwill?  The accountants have.

    David

  80. OMG says:

    @Dan Markle

    "I also want to extend my condolences to you and your team over this whole thing.  This has to suck for you — you guys are just doing your job, and to have to deal with this ridiculous drama instead of doing software development really stinks."

    This is what MS has a legal department for. It IS their job to do this. It’s Jamie who is a developer who has to wrestle with legal letters. You got it backwards.

  81. Mike says:

    Dan, I have a question (if you actually bother to read your comments):

    What is your view on Eclipse, NetBeans and XCode? Did you know they are actually free? How come it is so hard to release Visual Studio for free, but these other companies can release their IDE for free? In this light, don’t you agree that your company is doing the wrong thing by discouraging freedom and plugins for your IDE?

    Would you rather have a healthy community and 3000 plugins (and even beginners doing TDD) than make 1 million dollars profit and lose mindshare? Be honest about this, please.

  82. Pendriver says:

    Microsoft are going to have a difficult time making a case against Mr Cansdale.

    There is considerable doubt whether the Express EULA can even be said to be binding. I can’t imagine that Microsoft are willing to risk invalidating a key tool in their business model over something so trivial. I doubt they will pursue this angle in court.

    I would be slightly more concerned regarding the UK implementation of the EUCD – the CRRR 2003 – which states that you infringe a copyright owner’s right by producing a device

     "the sole intended purpose of which is to facilitate the

      unauthorised removal or circumvention of the technical

      device."

    It seems obvious that Mr. Cansdale has altered nothing in the shipping Express executables, and has only created a new tool that supplies functionality similar to the tool that Microsoft amputated. It is, in simple terms, an extension.

    Has Microsoft patented the plugin logic of this extension? If not, then what possible grounds do they have to enjoin Mr. Cansdale from following his muse?

    Does the extension in question subvert some part of a security tool? Does it expose hidden information, or allow remote control of programs not owned by an intruder?

    No?

    It seems to me that Microsoft has not got a leg to stand on.

  83. Jason W says:

    This sounds like the same thing as WinAmp suing a developer, for creating an extension to make their free version, of WinAmp, rip at full speed. Sure your legal team has a budget larger than the GNP of some countries, and you now think that by holding this over him you can make him stop distributing a  free extension for your software. You guys are making a big mistake, trying to take him out, using legal might, after you gave him an award for writing the software. Your only LEGAL option is to make you software not work with his, this is something you company does have a large amount of experience with. The dog is wagging the tail on this one Microsoft!

  84. Segedunum says:

    <i>HERE’S THE CRUX:

    – Microsoft believes this hack is a violation of the EULA and therefore illegal.

    – Jamie believes his hack is not a violation of the EULA and therefore legal.

    Unless Jamie reneges, it appears the courts will decide the above disagreement.</i>

    Well that’s juts it, isn’t it? Jamie has asked for about two years what specific part of the EULA (is that not a *End User( License Agreement?) and license it violates so he can inform users about it and clarify it it for others. In fact, he asked that in about the second or third e-mail of correspondence.

    The response was that Jason Weber isn’t a lawyer – so why is he contacting Jamie for two years about something he knows nothing about? The e-mail correspondence is bizarre and quite funny if you read it. At various points Microsoft and Jason Weber actually seem to be trying to sell things to Jamie:

    http://www.mutantdesign.co.uk/downloads/ExpressEmails1.html

    http://www.mutantdesign.co.uk/downloads/ExpressEmails2.html

    The crux is, unless Jason and Microsoft respond to that there was absolutely nothing else to talk about. The absolute bottom line crux is that unless Microsoft clarifies this and how it violates the EULA, or any other license, then legally there is not a thing they can do. They could have done this in an e-mail reply to Jamie by quoting part of the EULA or license and saying "You are breaching this because….."

    That is *all* there was to discuss.

    It just goes to highlight that if you’re an ISV collaborating with Microsoft then all you’re doing is helping them sell the full versions of Visual Studio. If you don’t want any hassle then use SharpDevelop and NUnit, or move away from Microsoft development tools.

  85. Andy says:

    Dan,

    MS’s case that he’s violated the EULA seems to revolve around this clause "work around any technical limitations in the software", and that as add-ins aren’t supported then that’s a technical limitation.

    As MS has released add-ins for Visual Studio Express (popfly) it’s clear add-ins are supported so how can he be working around a technical limitation.

    Even if he does rely on a hack/reverse engineering, you need to remember this EULA will be interpreted under UK/EU law and EU law allows reverse engineering for the purpose of interoperability.

    Neither side in this case coming out looking good and I for one actually hope it goes to court so we can get some clarity on the legitimacy or EULA, which are full of all sorts of dodgy and vague clauses

  86. fred says:

    The installation programs for VC++ Express and VB Express locked up on me unless I temporarily disabled my wireless network connection (wtf?).  So it seems that I too am guilty of circumventing "technical limitations."  

  87. SomeStrageThings says:

    So…

    it seems that is a technical limitation to be able to do things that you are able to do?

    weird world is this where we live

    Oh! I rememeber now! Is cheaper to change a label and sell a product like it is a different one… some of this lazy programmer philisophy that lets Micro$oft keeping selling us Windows 2000 at a price of Vista

    EULAS and patents suck!!

  88. ynohoo says:

    You really should run this stuff past your PR department before unleashing the lawyers.

    Nobody reads your EULAs except US lawyers, since they are not legally binding in th EU anyway, but more to the point you end up looking like bully boys to the amateur developer, scaring them away from your products.

    Whether you call this an "own goal" or "shooting yourself in the foot" depends on which side of the pond you are on.

    As an amateur (and professional) developer I did check out a VS Express install a while back, but deleted it fairly quickly when I realised most of the components I needed were not present, with no means of adding 3rd party offerings.

  89. Babson says:

    1. "We tried for close to two years…..".  As has been pointed out by others, this is disingenuous. Jamie asked politely, and repeatedly, for the part of the EULA which MS felt he had breached. Answer : silence. Common courtesy could have avoided this whole thing.

    2. My new laptop came with Vista. My old printer would not work with Vista. I downloaded a driver from my printer manufacturer, installed it, and now my printer works. I have installed software to overcome a technical limitation of Vista which is in breach of the Vista Eula. Should I proceed directly to the nearest police station and turn myself in?

    3. In reverse-engineering Jamie’s code while investigating his "hacks", MS has violated the TestDriven.NET Eula. Please report to the nearest police station.

  90. T-Dog says:

    Come over to Java.  Everyone uses the open source Eclipse IDE, you’re not beholden to a sole entity that dictates everything about the language.  You have actual compedition for the web application servers.

  91. Mike says:

    Perhaps MS will use the same tactics on Linux and FOSS.  They’re claiming 100’s of patents were violated, yet they won’t say which ones.

    Years will go by, and then MS will claim that the FOSS community has been in violation for years.

    These evil tactics come from the top down.  Mr Ballmer himself.  Him and Mr McCain hopefully will stay out of upper government.

  92. Mike says:

    I wonder why Microsoft doesn’t just  buy his company and kill the product?

  93. Kip P. says:

    I’m not pro-little guy or pro-Microsoft at this point, although it seems both have a little going for them and a little going against them, but I do have this to say about "working around the technical limitations…"…

    What is an addon?  Aren’t "most" addons allowing you to do something that the IDE doesn’t do and/or limits you?  Doesn’t an addon extend functionality?

    Now, I haven’t read any of the EULA’s (I might be violating one…two…all because I didn’t read them in the first place) so I really can’t say I’m correct in that addon’s in themselves might be violating the EULA’s, but I thought I might point it out that all addon’s "might" be in violation of the VS.Net Express and non-Express versions if the clause that was broken by TestDrive.NET is in effect for all types of VS.Net.

    <shrug> Oh well..

  94. Anonymous Coward says:

    Maybe you should just hire some thugs to break his kneecaps?  It would be much less of a hassle for Jaime and yourself.

  95. eulas, express, and lawyers oh my

  96. Ricardo Stuven says:

    So, will you sue me if I workaround the technical limitation of Visual C++ Express to support Platform SDK?

    http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/

  97. Michael Latta says:

    I see this situation as an unfortunate result of having lawyers doing technical tasks.  In particular the EULA clause of "not circumventing technical limitations".  That clause is so general as to be unenforceable.  In particular given that there appears to be a desire to support third party controls.  Had the clause been more specific about what types of extensions were supported (third party controls), and what were not (adding menus, enabling any MS created features, loading of assemblies other than those containing just third party controls and editing UIs for those controls), then it would be much clearer what was supported use and what was not supported use.

    Also as pointed out, it is not the software author that is in violation of the ELUA, but a user that installs the software.  While I support the right of MS to release a restricted product, they need to add more technical restrictions to enforce the ELUA, rather than threatening a developer that is merely being more creative than they like.

  98. John says:

    Good Gosh, even as a long-time Microsoft stalwart, I have a hard time synthesizing any sympathy whatsoever.

    Do you realistically think that droves of people will be ‘hacking’ the Express versions to avoid buying a standard or enterprise version?  And even if they were willing to go through that much trouble to break the rules, wouldn’t it just be easier for them to pirate the non-express versions to begin with?

  99. CharlesH says:

    @Bruno:

    "VS Standard costs $200.  From what orifice did you pull "10k" from?"

    You having trouble determining context? I was referring to VSTS, the version you list do not have the features (testing) this whole argument is about, since some idiots at Microsoft decided testing (and other things like profiling) is only for "Enterprise" class environments. I have no need to make up numbers, refer to http://msdn.microsoft.com/howtobuy/ for your fantasy land to come, crashing down. Idiot.

    I’m aware of how much the other SKUs cost since we develop with them. I can’t be bothered going through the approval the cost of VSTS would require when there is no evidence of compelling features that are not provided by projects such as TestDriven.NET.

    Needless to say, given recent theatrics, I’m not about to change that point of view, since Subversion + Trac + TestDriven.NET + VisualSVN works just fine on Pro, sans an additional server cluster to power TFS.

  100. Wesley Parish says:

    Allan, you are missing the point:

    "If you look at all source code provided on the net and open source software they all have something along the lines of ‘You may freely use and distribute this as is and NOT sell it or make profit off of it. This remains the intellectual property of the author and require their permission to modify it, etc’."

    There is a formal definition of Open Source which you should read before you miss the point and stick your foot any further in your mouth:

    http://www.opensource.org/docs/definition.php

    FWIW, the concept of open source includes the explicit permission to modify, and I quote, verbatim:

    3. Derived Works

    The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.

    Rationale: The mere ability to read source isn’t enough to support independent peer review and rapid evolutionary selection. For rapid evolution to happen, people need to be able to experiment with and redistribute modifications.

    Endquote.

    And there is another point.  In the Open Source world, we’re very strong on non-discrimination, and making software explicitly anti-commercial, as in "if you run a business, you are not allowed to use our software", is very definitely discriminatory, so, again, quoting verbatim:

    5. No Discrimination Against Persons or Groups

    The license must not discriminate against any person or group of persons.

    Rationale: In order to get the maximum benefit from the process, the maximum diversity of persons and groups should be equally eligible to contribute to open sources. Therefore we forbid any open-source license from locking anybody out of the process.

    6. No Discrimination Against Fields of Endeavor

    The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.

    Rationale: The major intention of this clause is to prohibit license traps that prevent open source from being used commercially. We want commercial users to join our community, not feel excluded from it.

    Endquote.

    What you’re getting confused about, is the idea that to make commercial use of something, you have to file off the "attribution to author" and claim it all as your own work.  It doesn’t work like that.

    FWIW, the template Microsoft Community License and the template Microsoft Permissive License:

    http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx

    http://www.microsoft.com/resources/sharedsource/licensingbasics/communitylicense.mspx

    http://www.microsoft.com/resources/sharedsource/licensingbasics/permissivelicense.mspx

    do fit the definition of Open Source licenses, so IMHO, Microsoft should submit them to the OSI and the FSF for formal recognition as such.

    And that is why I suggested above, that Microsoft take the hitherto-unthinkable step of releasing the Visual [PL] Express source trees under the aforementioned template MsCL, and allowing everybody the chance to be a contributor.  It was the impression that Microsoft was apparently keen to give in the early nineties, that everybody was welcome to join in, according to what I remember of Jerry Pournelle’s Chaos Manor columns in BYTE Magazine, and it worked then, so why not now?

  101. ars says:

    After reading the string of emails on Jamie’s site, it’s hard to understand your position here. It seems that it would have been far easier to demonstrate he was in the wrong by simply citing chapter and verse from the EULA regarding allgeged violations. Frankly, it seems disingenuous to claim he’s wrong without citing why.

    Also, you say that he removed the product and put it back up. But you had never explained why he was in the wrong, and instead decided to begin stripping him of his MVP status, etc. Which is fairly typical of the sharp elbowed, we-will-bury-you Microsoft that everyone loves so much.

  102. ruby says:

    Microsoft is just losing it. Microsoft has already lost a huge amount of respect amongst many in the open source community due to their ham-fisted attitude towards the GPL and open source. Cases like this prove that Microsoft can lose respect even amongst their own MVPs. Once developers lose respect for them, there will be no more "Developers! Developers! Developers! Developers!"

  103. Scott says:

    So what you are saying is that he worked around an intended limitation but not a technical limitation.  If it were truly a technical limitation then he wouldn’t have been able to do it without modifying the Express product by replacing a MS dll with one of his own, etc.

    Since he, by your own description, was able to implement the feature using the APIs that VS Express exposed to him he didn’t work around a technical limitation did he?  The product is technically capable of doing what asked it to do.

    That may not be what you intended but it is the reality of the situation.   DOH!  

    It looks to me like the only way MS will win this one is through the burden of legal expenses.

  104. prognosis_zero says:

    You should be offering to hire James.

    Six months ago, I would have said MS was starting to turn around. Now, it seems like all of that goodwill you invested is for naught.

    How sad…

  105. Marius says:

    M$ wont buy him out becuase they want his product for free. As has already been stated a suprising number of similar features are present in the new product.

    Whether right or wrong (I believe right) Jamie is a dangerous man to M$ as he is clearly talented and as we all know, we vant have talented people running around the software/developer world without them having a M$ collor on :)

  106. Igor says:

    I do not see microsoft sueing virus, spyware and malware writers around the clock for "working around technical limitations" in their product’s security.

  107. Isn’t the point of writing programs in the first place to work around a technical limitation? Your computer can’t compress files? Ok, I’ll work around that by writing WinZip!

  108. Andrew says:

    if("business trying to sell a product"==true)

    {

    jamieWrong;

    }

    if("someone working around the technical limitations in the personal version of TestDriven.NET to unlock features in the professional or enterprise versions for free"==true)

    {

    if(isLocked(lock)==false)

    {

       lockYourProductBetter;

    }

    }

    back on track please, i want to see orcas express !!!

    not this stupid case between a giant and an ant

  109. So by now most people would have heard about the ruckus that’s going on in the blogosphere regarding…

  110. iyuen says:

    Hey Dan what happened to you?  You haven’t post in a month?  Besides addressing all the latest dev with TestDriven can you also update us on your latest work (popfly)?