TestDriven.net-Gate: Don't Blame Microsoft, Blame Jason Weber
There's a kerfuffle about Microsoft vs TestDriven.Net Express at the moment.
It's interesting stuff, to say the least!
Many of the comments are prefaced with comments like "I haven't read everything about this, but I feel..." and this is a shame because opinions became too polarised, and leap for tabloid explanations such as "Microsoft is Evil" when the truth, as always, is far murkier.
If you have time, you really ought to read the whole thing.
I've read as much as I can, and here's my analysis.
Right from the start, before tempers flared, Microsoft's representative, Jason Weber should've done a much better job of convincing Jamie not to release the express sku. Jason did put a lot of effort in, and Microsoft spent a lot of effort on this, but Jason sabotaged his own sides efforts right throughout.
The first clear mistake is that Jason should've never referred to Jamie's work as a "hack". He did this repeatedly -- and it seems to have greatly exacerbated the situation.
What did that wording gain Jason (or Microsoft)? It only worked to insult the person he was trying to come to agreement with. Name calling doesn't aid negotiation.
When Jamie finally agreed to remove the express version, he wanted a credible reason to put on his website. Note that Jamie had backed down now, and with good treatment the thing should've been resolved at that point. Here's the wording that Jason recommended:
"After speaking with Jason Weber from Microsoft I realized that by
adding features to Visual Studio Express I was in breach of the Visual
Studio license agreements and copyrights. I have therefore decided to
remove support for the Visual Studio Express SKU's from TestDriven.Net.
Jason was very supportive of TestDriven.Net's integration into the other
Visual Studio 2005 products and I was invited to join the VSIP program.
This would allow me to fly to Redmond each quarter and work closely with
the Visual Studio development team on deeper integration."
This wording is offensive on four levels. One Two Three Four. That's a lot of offense!
Firstly -- it acts as an advertisement for Jason Weber. Why? Arrogance maybe? He's lording it over Jamie.
Second -- it supposes that Jason should publicly admit to violations. He need never admit such a thing.
Third -- it includes mention of breach of "copyright". I don't think such an allegation ever came up until that point. So this was a fresh insult.
Fourth -- it stings Jamie's pride, by suggesting that he was bribed into agreement. Ouch
So just when they got close to agreement, Jason effectively kicked Jamie in the nuts, pissed in his face, poked him in the eye, and danced on his grave.
That's not a winning technique in negotiations.
Oh, I admit it -- I've made similar mistakes myself in the past. Recently, even. Sorry :-(
But is Jamie in the wrong? Of course he is. It's Microsoft's product -- if they say you can't work around limitations, then good for them. And they can pick and choose what limitations they mean. When you're using their product, you're a guest. You leave when you're asked.
But it's such a touchy topic, that Jamie deserved to be treated with respect the whole way.
One other big no-no from the Microsoft side of the fence is worth pointing out:
When Jamie disabled the express feature, how did Redmond respond? Read this:
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 gives away that they reverse-engineered his product, to check that he'd really removed support. Ouch! Dirty dirty play! Bad Microsoft!
Oops, that was a tabloid ending, sorry.
How about this:
Test-Driven.Net in Drive-By Shooting!
'Mike Gale' on Fri, 01 Jun 2007 00:14:49 GMT, sez:
Thanks for analysing some of Jason's actions. You're on the money.
MS talks about allowing innovation and encouraging progress. I think they mean it and they certainly have gotten done over by legal nonsense and ignorant law makers. I imagine their sympathies are with get up and go developers. That makes me think that Jason is in the wrong here. He is not (I hope) expressing the letter or spirit of MS's intent.
Seems to me that Jason is one of those negative employees. The damage he does far outweighs any good that comes from him. (Exactly the type of person you get recommended to your opposition, so they sneak up and hire him!!)
'lb' on Fri, 01 Jun 2007 00:22:09 GMT, sez:
@Mike: but to be fair to Jason, the leadership from Ballmer isn't gonna inspire him to better behaviour.
Remember a few years ago when all the devs had to down tools and learn "Secure Programming".
Maybe the whole company (Ballmer first) should down tools and learn "Good Global Citizenship" and "How to win friends and influence people".
'Marcos' on Fri, 01 Jun 2007 00:50:06 GMT, sez:
Excellent post Leon
I understand now much more all your frustration =(
They make her slave comunitty angry, an a lot, I cant stop to read post about that all around the globe, and only in 24 hs !!
That the force be with us
'Aaron' on Fri, 01 Jun 2007 01:21:56 GMT, sez:
Developers are not exactly known for their tack. So this sordid soga shouldn't surprise us. It would have been nice if Jason tried a little harder to represent Good side of Microsoft. On the other hand Jason(testdriven) could have been a little more respectful to the concerns of the company that produces the software his add ons were meant for.
'Mike Gunderloy' on Fri, 01 Jun 2007 03:57:51 GMT, sez:
So by your reading of the "limitations" clause, at any point Microsoft can tell any add-in developer "sorry, your add-in works around a limitation in the product - we didn't mean to have people able to do all THOSE refactorings" and they have to go out of business? Sounds like a pretty effective way to discourage a developer community from even existing.
'lb' on Fri, 01 Jun 2007 04:03:02 GMT, sez:
@Mike:Yep, yep and yes, definitely.
I think they probably have the power to do this quite legally.
Doesn't mean they ever should! And yet, they did.
Making bad business decisions isn't illegal. It ought to have repercussions though. And Developer Exodus seems like an appropriate response.
'Johan Idstam' on Fri, 01 Jun 2007 06:12:07 GMT, sez:
I can't really see what Microsoft gains from removing support for the Express SKU's.
The companies that are so cheap that they don’t use the ‘real’ Visual Studio SKU’s now will probably not buy them anyway.
'AndyJ' on Fri, 01 Jun 2007 06:51:08 GMT, sez:
The express editions are designed for hobbyist coders, those who want to get into programming but don't want to pay out hundreds for something they'll play with.
Originally Microsoft were going to start charging for the Express editions but they decided that they were such a success with the community they'd make them free permanently.
Obviously if your going to have a free version of a product it's going to be cut back and have a few things missing, and rightly so the vendor is going to expect you to pay for upgrading to a version with more features.
One of the "Limitations" that was put into the Express versions was that add-in's were disabled. The license clearly states you shouldn't work around any of these built-in "Limitations". Now as nice as it would be to have everything for free we don't live in hippie commune and business do have to think about making money (if your annoyed with that maybe we should form a revolution and overthrow the capatalists :P).
Now having said all this Microsoft/Jason could have been way more understanding and actually pointed out, straight away, exactly what he was doing wrong and avoided all this hastle.
At the end of the day the license was violated as it clearly states that one of the limitations is no add-ins and that working around limitations isn't allowed.
'http://' on Fri, 01 Jun 2007 06:59:42 GMT, sez:
Oh any btw ... the times displayed on your posts are wrong :O it seems it's 2 hrs slow :P
should have been
'David Mohundro' on Fri, 01 Jun 2007 10:47:49 GMT, sez:
Interestingly enough, a commenter on John Lam's blog just left a note about this whole fiasco, asking John to bring this up with ScottGu and others at Microsoft. John left a comment agreeing to this (see http://www.iunknown.com/2007/05/microsoft_and_i.html#comment-71255788).
I would really like to see some sort of response from ScottGu or someone with some power and influence at Microsoft about this. We know there are good people at Microsoft - I'd just like to hear something from them about this, too!
'Steve Bohlen' on Fri, 01 Jun 2007 11:43:27 GMT, sez:
This is really a re-hash of the same problem that Autodesk created for themselves years ago in re: AutoCAD vs. AutoCAD LT (light) when it was released.
Tho AutoCAD LT isn't free like the VS Express SKUs, its literally sub-$500 vs. about $3,500 for full AutoCAD (so 1/7th the cost) and they have been similarly concerned about the lower-cost SKU eating into their profits on the big-addy SKU ever since.
AutoCAD's internal support of AutoLISP (a LISP-variant tweaked for AutoCAD) and VBA is deliberately absent from AutoCAD LT and so there is literally no extensibility API provided for AutoCAD LT as there is in AutoCAD and this is (one of tho not the only) significant differentiators that Autodesk has relied on to ensure continued sales of full-power AutoCAD.
Even in this case tho 3rd-parties have found ways around this and developed ways for users to extend AutoCAD LT. To-date, Autodesk hasn't (generally) spent much effort fighting these people because A) AutoCAD LT users aren't (usually) candidates for purchasing full AutoCAD anyway and B) they have better things to do with their time and energy.
What I really cannot figure out is that if Autodesk (whose flagsip product and primary breadwinner *is* under attack by this) doesn't bother to pursue it, why does Microsoft (whose primary income source has NOTHING --directly-- to do with Visual Studio) seem so intent on pursuing it?
This really represents evidence of a serious sea-change in MS perspective in re: its development tools, I think: as its revenues around its OS and Office products are under increasing attack, business units (like the VS team) are under increasing pressure to deliver income and so have to change their focus from 'deliver tools that can indirectly increase sales of other MS products' to 'deliver tools people will pay for and we can make money on'.
Does anyone recall that before the first (way back when) release of Visual Studio, there was actually debate within MS about whether even that should have been free from the beginning so that it would spur sales of other MS products?
My, how far we have come; what wonderful progress (that's sarcasm, BTW).
'Wesley Shephard' on Fri, 01 Jun 2007 14:01:10 GMT, sez:
This whole thing comes about simply because developers are now a profit center for Microsoft.
Once upon a time, they needed us: we made the software that brought customers to the platform.
Now they have decided that we need them more than they need us. With that in mind, they do things like this and the whole "let's fubar the MSDN Universal pricing" act.
If you won't classify yourself as a "developer", "architect", "tester" or "database guy", you are looking at $10,939.00 for the Visual Studio 2005 Team Suite with MSDN. If you will take 1/4 of the roles you have as an independent developer... we will give you that at $5,469.00.
Then they wonder why open source is so attractive to so many developers these days. Long gone are the NT 3.51 days where the top end development tools were available for a song.
'Gulli Briem' on Fri, 01 Jun 2007 14:36:08 GMT, sez:
Niggle: "Second -- it supposes that Jason should publicly admit to violations. He need never admit such a thing."
You mean Jamie, not Jason.
'Blame Jamie Not Jason' on Fri, 01 Jun 2007 21:16:16 GMT, sez:
I just wasted two hours reading about this mess and I have to say that Jason was probably receiving legal guidance and was unable to tell Jamie what his lawyers said. Microsoft lawyers aren't going to give Jamie free legal advice and they're Jamie's not going to blame them even if they did. This mess appears to be Jamie's own doing.
'Elisabeth' on Sat, 02 Jun 2007 15:04:20 GMT, sez:
On http://www.mutantdesign.co.uk/downloads/ExpressEmails2.html, Jamie includes an email in which he stated: "All of the interfaces and methods I used to extend the Express SKU are public and documented on the MSDN website."
Jason says TestDriven.Net implemented a "hack" (8 times in 5 separate emails as if he was trying to get the word prominently on the record in case, oh, I dunno, the correspondence ended up in court?)
Jamie disagrees with that characterization saying he wrote code against public, documented APIs.
Without having done a thorough independent code review myself, my bet's on Jamie. I believe him when he says, "All of the interfaces and methods I used to extend the Express SKU are public and documented on the MSDN website."
This leaves me wondering what part of PUBLIC API Microsoft isn't getting?
'Adi' on Sun, 03 Jun 2007 19:01:19 GMT, sez:
Trackback from http://dotmad.blogspot.com/2007/06/high-cost-of-visual-studio-express.html
'Jonathan Allen' on Mon, 04 Jun 2007 21:27:56 GMT, sez:
The problem is that Jamie and Jason were often talking about two different things.
Jamie employed a hack that used the Properties window extension point to load his add-on. Once loaded, he used public APIs to do the rest of the work.
You can read more of the details on Dan's blog.
'Scott' on Tue, 05 Jun 2007 03:44:48 GMT, sez:
"One of the "Limitations" that was put into the Express versions was that add-in's were disabled. "
See, this is the one thing I'm trying to get out of Microsoft's mouth.
Why are the add-ins disabled?
They should be promoting add-in development for the Express products. Express add-ins should be hosted on CodePlex or at an Express community site. I still haven't read a really good reason anywhere for disabling add-ins. The "make them buy the Standard edition" reason really doesn't fly with me. If that's what you want to do, why put out Express products at all?
'lb' on Tue, 05 Jun 2007 04:17:00 GMT, sez:
@Scott -- Hello
I was going to reply that 'Express' is, like many cut-down versions, a 'Loss-leader'.
And that allowing add-ons means that people could program their way around all the other limitations of the product.
But 'Express' is more of a gateway drug than a loss leader.
Get em addicted to the cheap stuff and then when their dependency is strong enough they'll move onto the harder stuff without helping themselves.
So the "make them buy the Standard edition" excuse *does* fly with me, in the sense that I believe that it microsoft's true intent. As to whether it's a sound business strategy, I have my doubts.
There's something a bit half-hearted about express really, this is all just a symptom of that. Not included it in Vista is another symptom.
'Daniel' on Tue, 05 Jun 2007 10:02:46 GMT, sez:
Perhaps this really illustrates what a hateful little hive of fiefdoms the Visual Studio division really is. For every Scott Guthrie, there's an Eric Rudder or a Somasegar, and there are many dead bodies within the so-called 'Engineering Excellence' division who proudly bang on about being 'Developers'.
To be honest Jason Weber sounds as though he belongs to the 'part of the problem' crowd at Redmond, right now, rather than the 'part of the solution' lobby.
'Aaron' on Tue, 05 Jun 2007 12:51:57 GMT, sez:
I still dont agree that Microsoft is in the right here. I dont think Jamies violated the EULA for the Express editions. After all, he could have created his program without even installing VS Express and agreeing to the EULA.
It is actually the normal Express users that are in violation of the EULA when they install the TD.NET add-on. They are the ones working around a limitation, which they agreed not to do. Jamie may have made no such agreement.
'lb' on Tue, 05 Jun 2007 20:52:34 GMT, sez:
@Aaron: "After all, he could have created his program without even installing VS Express "
On his blog Jamie said that he wrote the whole thing using Visual Studio Express. So this ends that whole line of thinking unfortunately.
'anon' on Wed, 06 Jun 2007 02:17:07 GMT, sez:
One legal point, that is confusing me, given there was never any payment from Jamie to Microsft for the product ( or even the subsequent normally paid for versions he was given free), is there any contract to speak off ? _ I was always under the impression that to have a real contract you needed some "consideration" a.k.a. payment (e.g. a peppercorn rent) to bind either party into the contract, and that all these Shrink - wrapped, online click to accept forms, were legally worthless ( especially in the UK )
'lb' on Wed, 06 Jun 2007 02:21:23 GMT, sez:
@anon: "needed some "consideration" a.k.a. payment (e.g. a peppercorn rent) to bind either party"
actually hey, that's what i learnt at uni too.
maybe the transfer of bits of data is the peppercorn in this case?
so far i've only seen a dispute over the meaning of the terms of the contract, not the existence of a contract in the first place.
'ag' on Wed, 06 Jun 2007 05:55:18 GMT, sez:
So you mean that the GPL is not enforceable either in the UK (since it doesn't involve exchange of payment)?
I wonder what the reaction to all this would be if it was MS that was violating the GPL... Would someone from the FSF take *two years* to explain to MS what they had done wrong before intiating legal proceedings?
'http://' on Wed, 06 Jun 2007 08:13:43 GMT, sez:
This whole mess is ridiculous.
Jamie says he used public API and then there are those who claim Jamie used HACK(s) to get the thing work but they do not actually SPECIFY what "hack" was used.
Either __NAME the hack__, or accept the fact that any of you can be accused of using "hacks" when you use public API when ever microsoft pleases.
So, POINT that used "HACK" out, or admit it's using publick APIs.
'AndyJ' on Wed, 06 Jun 2007 14:10:07 GMT, sez:
There were people at MS who did want to bundle VS Express in with Windows. I can't find the link now but there was a long discussion on the forums.
In the end it came down to the fear of being sued by other IDE makers. Just like Real Media sued them over including WMP.
(On a side note it's funny how for once everyone was in agreement and sided with MS ... WMP wasn't the reason people didn't use RM ... it was becauase RM is crap ;))
It's another case of damned if you do and damned if you don't.
'Stefan P' on Wed, 06 Jun 2007 17:42:32 GMT, sez:
I suggest swapping to Linux and GPL, the tools are there but we need more programmers and developers. The Linux and GPL community will never annoy good programmers.
'Jason R Briggs' on Thu, 07 Jun 2007 05:56:15 GMT, sez:
In my opinion, Weber handled the situation -incredibly- badly. Reading through the emails, I became annoyed myself. If he's that annoying in person, I imagine he wanders around with a permanent set of shiners.
But having said that, he's following standard Microsoft practice -- FUD. He wouldn't name the "hack", because that's not the way they do things.
Just look at the whole Linux patent issue.
'Hawkeye' on Thu, 07 Jun 2007 06:57:49 GMT, sez:
I've been reading many of the blogs, comments etc. about this and I am not a lawyer.
Firstly, I think your article is one of the most reasoned I've seen.
BUT... I strongly disagree that Microsoft can retrospectively clarify/expand licence agreements. Yes, they are within their rights to put any clauses and restrictions they want into their licence, and I'm within my right to accept or reject (in which case I'm not entitled to use the software). But whatever I agree to, when I agree to it, can not retrospectively be changed (well, I guess it can be if such allowance is written into the licence in the first place... but it's not).
So this purely comes down to whether this breaks the licence agreement as it was at the point in time the software was installed.
It *really* annoys me in reading comments which state (see above):
"At the end of the day the license was violated as it clearly states that one of the limitations is no add-ins and that working around limitations isn't allowed."
The licence does NOT clearly state that one of the limitations is that add-ins are not allowed.
I'm desperately trying not to take sides here. It's a legal dispute and the only resolution can be if one side backs down or it is settled in a court. As I don't work with either side, and I'm not in the legal profession, I'm not going to take sides.
'ars' on Mon, 11 Jun 2007 12:36:16 GMT, sez:
@lb: "I think they probably have the power to do this quite legally. "
I'm not so sure it's that clear cut. It certainly wasn't clear cut enough for MS to simply cite a specific clause of the EULA that Jamie was allegedly violating.
Perhaps the oddest part of this affair is how everyone except Jamie and Microsoft seem to have developed expert legal opinions on the EULA wording.
All we really know is that MS claims he's in violation, but won't cite exactly why, and that Jamie's lawyer think he's not in violation. If you allowed for liberal interpretations of these documents, then hundreds of silicon valley startups wouldn't get off the ground just through anti-competitive clauses. I hope this matter isn't as clear cut as some of you are making it out to be.
'ars' on Mon, 11 Jun 2007 12:39:01 GMT, sez:
"I hope this matter isn't as clear cut as some of you are making it out to be."
I didn't really mean to write "some of you" since I was really thinking of people commenting on another post at Dan Fernandez's blog. Sorry.
'Renko' on Sat, 16 Apr 2011 07:33:05 GMT, sez:
Many people keep on debating if Jamie used a "hack" or a publicly specified API and wonder why no one names the hack. Personally I wondered why Jamie didn’t name the used API, and came to the following conclusion: No one is naming the hack because naming it would mean trouble for either party!
Jamie cannot name the API used because it would reveal that the way the API is used is actually what many developers would call "a hack".
Microsoft doesn’t want to be too specific, because the hack is not easily pluggable. Naming it could result in more Jamie like cases.
So let me be the one to clear this matter up. VS Express does not have the DLL installed that gives plug-ins access to the IDE. Furthermore this DLL is only allowed to be redistributed using the official MS installer, which does not install on Visual Studio Express of course. So apparently we have a system that cannot run useful plug-ins right? If we load a plug-in in VS Express that integrates with the IDE, the DLL supplying access to the IDE will fail to load.
Now Jamies hack: The DLL that fails to load in visual studio express is available on the file system, it’s just not available to the plug-ins. The DLL is available because it’s a main part of the Visual Studio IDE. There is also an event/callback in .NET that gets invoked when a DLL fails to load. This is supplied in case that you want to run/load DLL’s from other locations than the file system (e.g. SQL server CLR procedures). Jamie simply hooks this event to overwrite/change the path of the DLL from the bin folder of the plug-in to the bin folder of the IDE.
Now even though it’s true that the API’s used are publicly documented. Claiming that you did not use a hack to load an unavailable and non-distributable DLL, is at the least misleading. If something is publicly documented does not matter actually, what matters is if you reverse engineered something (looked inside) to gain knowledge that you used. Example: If I disassemble an executable to circumvent some security measure, this is called hacking. However, machine instructions and their corresponding assembly language instructions are publicly documented… Jamie used knowledge about locations of DLL’s (which requires reverse engineering) to replace at runtime the state of the application in such a way that the application starts doing something it was never intended to do. This is VERY similar to what cracks, loaders and serial generators do! Jamies trick is a school book example of a "Hack" with capital H!