Ok, this will be my last post on the soap of TD.NET and MS (has anyone already called Hollywood? ). In the community there's some controversy starting to pop up here and there and I just want to make clear what my position is and will be. This to avoid getting pulled into any camp in this soap.
My sole motivation to step up and say something about the matter is based on the fact that I as a software engineer don't want to have my hands tied on my back just because a competitor doesn't like what I do and sends his lawyers. A software engineer should, within the boundaries of the law, be able to write the software that fits the problem to solve. If that solution isn't what a competitor would have liked to see, that's life, but that shouldn't matter. To me, what Microsoft is doing at the moment, is falling into that category: sending along the lawyers because they don't like what a competitor is doing. The core point is: should this be allowed as a normal practise or not. It doesn't matter if you like MS or find Jamie a great guy or not or hate his guts: it's about that core point. Imagine yourself behind the keyboard on monday, writing code. Do you want to be afraid that what you write at that moment could cause a lawyer attack? No, of course not. That's my core point and motivation.
Some people try to put words in my mouth as if I would propagate the authoring of software which violates license terms, or the authoring of cracks of copy protection. No, of course I don't propagate that, on the contrary. That's also why I put clearly in my posts: within the law. That's important: as long as a software engineer's code doesn't violate a law, there's nothing wrong with the code. Please realize that violating a license and its terms is violating a law. So staying within the boundaries of the law covers that too: if you agree to a license, you have to obey these terms. If you don't, you violate the license and therefore violate copyright laws.
Sure, it's fuzzy sometimes: a crack of a given copy protection mechanism isn't illegal on its own, it's just a program. However as soon as you run it, it is, as it then alters other people's code. So where to draw the line? It looks complicated but it's actually quite simple: as long as you don't violate a law when writing your code and your code doesn't violate a law as well, you're OK, whatever that code might be, why wouldn't you be OK, you and I write that kind of code every day. If your code uses public APIs, public documented code and simply utilizes what's there, even if you have to spend 2 weeks straight to write it, it's not illegal, as it doesn't violate any law. If it would: what is the difference with other code which also uses public APIs, public documented code and simply utilizes what's there? IMHO nothing.
This whole mess wouldn't have happened if MS would have closed the hole Jamie used in their public APIs. It also wouldn't have happened if the usage of their toolkit would clearly state that you can't extend VS.NET express, not manually, nor via external means: he then wouldn't have been able to test his work. Sure, some people claim that MS intended VS.NET express not to be extended and that we all knew that that was the case. I fully agree with that. I even did assume that VS.NET express wasn't extensible at all, because MS said it wasn't extensible through add-ins. Apparently they missed a big spot and left a big chunk of their API ready to be used in the tool so it was extensible and with legally normal code. The code might go against what some company thinks is OK, but that's of course irrelevant: every ISV thinks the competition does things which aren't what they'd like to see, these competitors create a competing product .
Is creating an add-in for VS.NET express then 'unethical', because it goes against the spirit and intentions of VS.NET express? I can only say 'yes' to that. However let me tell you, dear reader, a small remark: ethics have nothing to do with this. Because it is also unethical to bundle a free competitor to commercial offerings in a bigger, also free product. It is also unethical to add functionality to your free IDE for your own database and block the competition's add-ins, while your free IDE is the de-facto standard for software engineers of your platform.
This to bring things a bit in perspective. I'm all for a world where business is fair, where ethics are a very valuable thing and everyone tries to do the very best for one another. The reality is however that things aren't that way in today's hard-core business world where one company's death is another one's breakfast. To the defenders of both sides: please keep that in mind as well.
This whole story about TD.NET and MS will likely end up in tears for both or one side. I have to admit that if I look at the case from a professional software engineering's perspective, I simply can't agree with MS' way of how they handled it. I also can understand how Jamie went the 'I have nothing to lose' route as his lawyer stated he has done nothing wrong (what else can you do in that case?). As a human being, I also have to admit that what Jamie did wasn't matching with the intentions of what MS had with VS.NET express: a crippled version of the professional tools. Though I then also have to admit that in the real world of hard cash and business, no-one gives a rats a** about that and finding MS brining up the point of ethics makes it rather, sorry to say it, ironic and funny.
As a software engineer, I would have handled it from MS' position very differently: close the hole, make it impossible to achieve what Jamie did, also re-word the EULA so it's clear what the intentions are with VS.NET express. Now it's too vague and 'You shouldn't work around technical limitations' also tells me as a user not to do things I simply have to do, as a bug or a design flaw is also a technical limitation. So don't write an XmlSchema import class library to make wsdl.exe recognize your own types with IXmlSerializable implementations, you software typer, you! (No VS.NET express user is allowed to do so, according to the EULA. Sorry, couldn't resist )
Apparently, MS will re-word the EULA soon. That's great news, so hopefully the vagueness will be removed and we all will know, license-wise what we're dealing with. I also do hope that MS will alter VS.NET express in such a way that you can't run add-ins, period. Not XNA studio, not popfly, not TD.NET, nothing. No add-ins means no add-ins. This will leave no room for a software engineer to turn the wrong corner, to use the wrong method: there's no method to use, there's no service to call, so the engineer has to conclude: 'it's not possible, what I need for building blocks isn't provided'. This will free the software engineer from looking into EULAs for every method s/he wants to use and it would free the software engineer from calling to lawfirms for every public published API they might utilize in their code.
I hope both players in the soap will take a step back, get off their high horses (didn't knew they'd make them this tall nowadays ) and talk about software again instead of business. Because, Microsoft also has to realize: the more they pack into VS.NET express Orcas, the more they'll lose their own argument that they're using now, because the more tools they pack into a free, de-facto standard IDE to kill off competition (e.g. a linq-to-sql designer to kill off any other O/R mapper out there to be sure everyone uses MS' offering so SqlServer is the RDBMS of choice, oh, just thinking out loud here), the more unethical it will become. As I said in my previous post, I don't mind their competition as I'm sure a lot of developers will make the right decision, what I'm against is unfair competition and uncertainty with the code I use and write. I hope MS will realize that you can't use the argument of unfairness and unethical against company A and using that same technique you accuse company A of yourself.
EOD (for me at least )