Categories
Oct 2007
Aug 2007
Jun 2007
May 2007
Apr 2007
Mar 2007
Feb 2007
Dec 2006
Oct 2006
Sep 2006
Aug 2006
Jul 2006
Apr 2006
Mar 2006
Feb 2006
May 2005
RSS
Categories
Oct 2007
Aug 2007
Jun 2007
May 2007
Apr 2007
Mar 2007
Feb 2007
Dec 2006
Oct 2006
Sep 2006
Aug 2006
Jul 2006
Apr 2006
Mar 2006
Feb 2006
May 2005
RSS
Microsoft and Ethics
Over at The Register there is an amazing story of Microsoft first awarding a developer 'Most Valued Professional' status for a program that extends Visual Studio (the give-away version, "VS Express"). The amazing part is that they then turn around and sue him for the same program!!!

The basic problem is that they (MS that is) were lazy - they released a "technically limited" version of the software, and just removed some of the modules they wanted to reserve for the loadsamoney version. They didn't remove the ability of other modules to interact with the removed one, but instead relied on a clause in the (still untested in court) EULA that no-one reads.

So here's their problem. A guy called Jamie figures out how (using only public interfaces) to re-enable the plugin ability of the give-away version of VS. Re-read that sentence - he uses only the public API's to do this. Any public API is fair game for a developer - it's a promise (a "contract", if you will) that the developer can use this code however (s)he sees fit...

Now, let's look at the EULA clause, and see what it is that MS are trying to argue...
"...you may use the software only as expressly permitted in this agreement. In doing so you must comply with any technical limitations in the software that only allow you to use it in certain ways... You may not work around any technical limitations in the software."
Ok, that seems fairly clear, and at first glance, MS would appear to have him cornered, game over, thanks for playing. Oh, wait, hang on - Jamie only used public API's - the ones that Microsoft publish so that developers can use them - the "supported" way to access Microsoft code. So, in fact, Jamie is not working around any limitations, he's using the officially-supported way to code-up his program.

Now, Microsoft might never have expected Jamie to use their code in the way he did, but he's not doing anything wrong by doing so - this is not "working around" limitations, this is using the provided, supported API for something that MS never intended. Here's the simple example:
Consider a function that adds 2 numbers, and returns the result. It's called 'add2Numbers'; if you pass in {2,3}, you get 5. Jamie, however uses it a little differently - he passes in {3,-2}, and gets 1. This behaviour is the same as the forbidden function 'subtract2Numbers' which only people who pay loadsamoney to Microsoft get to use.
Now MS are upset about the use of 'add2Numbers' which does the same thing as their "loadsamoney" function 'subtract2Numbers' if you use Jamie's code, but they can't do anything about it... Except they do, of course. They first try to bully him (without telling him exactly what it is he's done wrong, mainly because he hasn't done anything wrong), and then they lawyer-up.

The use of public API makes whatever you do a supported action by the publisher of that API. Microsoft may not supply the facility that Jamie has stepped in to provide, but they most certainly do support it. If they support it, they shouldn't be able to sue when someone actually does it...

My suggestion to Jamie (and those like him) is to come over to the side of the Angels - get a Mac, run Xcode (the full version, no charge), and develop to your heart's content. Here's why:
  • Macs really are cool to code for. It's sort of like a mature version of VS.net
  • Objective C really (really!) rocks. It hits the complexity sweet-spot, and lets you easily do so much!
  • The community is a real one, not a fake one that bites you if you counteract some vague as-yet-undisclosed business plan.
  • We won't tease you (much, we're only human) for your previous life as a Windows coder.
  • Do something cool, and Apple tend to buy your company, not sue your ass.
  • If you love unix, you'll love OSX. If you loathe unix, you'll love Cocoa which shields you from it. You'll probably learn to love unix eventually though :-)
  • We have cookies.
  • There are more reasons, but you ought to find out for yourself...


Seriously. If MS put you in a spot like this, get legal advice, and point out to your lawyer that using public API in an until-then-undiscovered fashion is a good thing. At the end of the day though, the cross-hairs are centered on you - don't forget that.


Oct 2007
Aug 2007
Jun 2007
May 2007
Apr 2007
Mar 2007
Feb 2007
Dec 2006
Oct 2006
Sep 2006
Aug 2006
Jul 2006
Apr 2006
Mar 2006
Feb 2006
May 2005
RSS
Categories