Look, don't touch: Clearing the misconceptions about opening CLR libraries sources

time to read 2 min | 281 words

Important note: I am representing my own conclusions here, not anyone's official position.

First and foremost, the CLR libraries are not open source.

Let us talk about licenses, and what they gives us. By default, even if I have the source for a library, I can't really do anything with it. That is because the authors of the library retain copyright and you don't have any rights to do anything with it. Open Source explicitly gives you certain rights (usually modifications and redistribution rights) for the source.

The license that Microsoft is currently talking about is a Reference License. Jay Wren has more about the limitations, but I think that Miguel de Icaza has a better summary of what is going on.

More specifically, here are the things that you cannot do with the source:

  • Fixing bugs - you can work around them, but you cannot fix and use it.
  • Enhancing features - you know that feeling when it is almost there, it is going to remain almost. You cannot modify the code.
  • Adding features - I would love to lie my hands on the assembly resolver code, I really want some hooks there, but that is not going possible either.

The main scenario is to debug into the framework, which is of immense value, especially since the System.Web assembly is included, but that about it.

If you want any of the above, you are not going to get it from the newly opened CLR libraries sources, the license does not allow it. You are better of browsing the Mono license, since that does explicitly allow you to do all of the above.