Microsoft’s Restrictive License and Viewable Base Class Libraries

I’m very worried about the announcement yesterday by Microsoft that the source to some of the .NET Base Class Libraries will be available to developers. Mostly I am worried about the impact to the Mono project and how many more developers will now be tainted by viewing the MS code. Miguel has some thoughts on that here. Also, I am worried about the viewable code, strictly from a copyright point of view.

Drawing Parallels

Everything regarding the viewable code is subject to the exact same copyright as another expressive media which is far more well known, Music. I use the word viewable because the code is neither open source or free software. Imagine that one of the “big four”, Sony, BMG, EMI, or Universal, announced that they were going to make all of their most popular music available for free listening.

The company still retains all of the copyrights. The tools to make derivative music is still up to the new artist to obtain and use. The music industry is just encouraging every musician to listen to all of this popular music… but don’t use it!

What is fair use? Remember Vanilla Ice and his uncredited David Bowie sample? He got sued and lost due to copyright violation, for a 5 second drum loop! That isn’t fair use!

So effectively we have history to tell us that if we copy and paste or republish in any way 5 lines of code from this Microsoft source code release, we are violating copyright on the code! This scares me!

I read a lot of software blogs. Check out my bloglines blogroll. I see a lot of source code in blog postings. With this Microsoft viewable code release I dread all of the upcoming posts of copy and pasted code saying “look how Microsoft did it, we can just change this one thing for our implementation”. These will all be copyright violations. These hypothetical posts will violate Microsoft’s copyright on this viewable code and it will be up to Microsoft as the copyright holder to enforce their copyright. IANAL, but I have heard that bad things can happen to copyright holders if it can be shown that they did not attempt to enforce their copyrights.

After AACS last night, some friends and I were sitting around ABC and discussing this. Some people mentioned DMCA and others mentioned patents. These are important issues, but this is not what I’m talking about. I’m talking about good old copyright. See Lawrence Lessig‘s Free Culture for a good background.

Here is an example:

After Scott Guthrie’s original announcement, which included a screenshot of Visual Studio in the debugger stepping into some BCL code, Chris Sells deep linked Scott’s screenshot. Now Chris works for Microsoft too, so maybe he had permission, but maybe he didn’t.

My worry is what happens if I do this?

Take three cases.

  1. I could link to just Scott’s screenshot with the copyright code. Am I now violating Microsoft’s copyright? No you say? Thousands of websites were shut down in years past for linking to mp3s on different servers. How is this different?
  2. I could actually display the screenshot inline using html img tags, but referencing Scott’s server. 
  3. I could transpose the code in the screenshot, thus creating a copy and definitely and blatantly violating the copyright.

I’m actually too afraid to do #3. I think I might be able to get away with #1 and maybe #2.

What once was left to lawyers and the intellectual property experts at your corporation is now something that every developer in an organization has to think about. Every developer needs to be aware of what the license and copyright is on any piece of code they view that is not owned by them or their organization.

Of course one solution to this issue might be to only work with open source software. I’m tempted to do just that, but I find that there are far more jobs available which still use proprietary software development environments, platforms and tools. I’m OK with that. I’m willing to be aware of intellectual property issues in order to work on these platforms. In my experience, other developers are hardly aware of these issues. Unlicensed and therefore entirely copyrighted code is copied out of webpages and blogs and directly into production software in both large enterprises and small businesses. With the release of viewable BCL from Microsoft, these practices become greatly more dangerous.

Copying from the web is a copyright violation

It is all over the .NET world. Today, scottgu announced that Microsoft would be making their base class library implementation source available for free (not open source or free as in freedom or free software) to developers to look at. Details are at scottgu’s blog.

It is a damn shame about the terms of the Microsoft Reference license. This means that if I want to use a bit of the source, that I cannot. For example, I want to customize DataGridViewTextBoxCell’s Paint implementation, I cannot copy the bits of the Paint implementation of DataGridViewTextBoxCell implementation and base classes to tweak my changes. I CAN read what they did, and use this new knowledge in my implementation, but any copy/paste is not allowed! Most programmers I talk to do not understand this. This is going to be a copyright nightmare for most development organizations.

We talked a bit about copyrights and open source at the SRT Solutions open house a couple of weeks ago. I was amazed when all of the programmers I talked to said “huh?” or “really?” when I said that using code they found on the Internet or a blog is a copyright violation unless that code has an express license released with it. This means much of the code at codeproject.com is not available for reuse, only for reading. This means code posted to most blogs. Of course I’m talking about the United States of America, which is where I, and all these programmers, live and work.

Programmers: Look for a license. If there isn’t one, contact the author. Ask them to release the code they put on their blog under the public domain, or creative commons license, or a permissive (BSD, MIT/X) open source license.

If you got the code from a website which specializes in programming examples, such as codeproject, contact that author. Ask them what the license is.

If you are using sample code from a vendor, make sure you are clear on what the license is. Remember, if it is not explicitly stated, then you have ZERO right to reuse that copyright code. I’ve run into to Microsoft sample code releases like this.

Luckily there are places on the internet that ALWAYS attach a license to code. Sourceforge and CodePlex are wonderful for this.

Finally, if you are a copy and paste programmer, you may want to turn off this new Visual Studio 2008 source code feature.