Sunday, October 7, 2007

Tainted if you do, tainted if you don't

Microsoft's latest move, to release the source code for the .Net framework, has triggered a variety of reactions due to the licencing model used in this release.

Frans Bouma thinks that looking at the source code makes you liable to legal action:
Take for example the new ReaderWriterLockSlim class introduced in .NET 3.5. It's in the System.Threading namespace which will be released in the pack of sourcecode-you-can-look-at. This class is a replacement for the flawed ReaderWriterLock in the current versions of .NET. This new lock is based on a patent, which (I'm told) is developed by Jeffrey Richter and sold to MS. This new class has its weaknesses as well (nothing is perfect). If you want to bend this class to meet your particular locking needs by writing a new one based on the ideas in that class' sourcecode, you're liable for a lawsuit as your code is a derivative work based on a patented class which is available in sourcecode form.

Phil Haack partly disagrees, and sees no problem as long as you exercise caution.

I think both of them may be missing another side of this mess:
Suppose you read the source code, and some time later, after you forgot all about it, you write your own ReaderWriterLock which violates Microsoft's patent.
Now, the hotshot lawyer working for Microsoft has no way of proving you read the source code prior to writing your implementation - but he doesn't need to. He only needs to claim that since your code works in a similar way to the MS code, and since MS code is already out there, it's highly probable you read it.

In other words, this move gives Microsoft an extra advantage in future patent lawsuits, even if no one reads the thing.

The conclusion: read the source code, even for the single purpose of being sure your code doesn't violate any patent.

(thanks to dbraaten for the photo)

No comments: