Microsoft have announced
that the source code for many of the .Net Class Libraries is to be released to developers. This means that when debugging code that calls into the .Net class library, you will be able to trace into the library itself to see what is happening. Not all libraries will have their source released right away, though they plan to release the source for more of them over time.
This will potentially be very useful to those of us who want to know how things really work inside the .Net class library. A class library of this size is also going to have some bugs here and there, and being able to trace into it will provide a way for developers to know that the bug really is inside the class library rather than in their own code. That way, more detailed bug reports can be made to the Microsoft development team and a workaround may be easier to identify.
The sources are to be released under the Microsoft Reference License
. This permits you to read the source code and make copies of it within your organization, but not to make changes to it and distribute those changes, whether inside your organization or not. Basically, you can read the code, but you can't hack on it.
The choice of license has got an unfavorable response from many open source and Free software advocates. A friend of mine who is neither described it as a "sucky license". I think that the license illustrates Microsoft's purposes, though. They want to help .Net developers, but do not want to give up control over their code base and see the class library forked in many incompatible ways. Also, while they are denying themselves the benefits of having people from outside Microsoft contribute code that fixes bugs or improves the software, accepting such contributions opens up a legal can of worms. It's not impossible for them to do, but the work of taking steps and obtaining documentation to prove the code is an original contribution or that they can legally use it may well exceed the cost of having an engineer make the fix.
Therefore, my own feeling is that Microsoft are making a step in the right direction here, that will be of benefit to .Net developers. Of course, there are some people, such as those working on the Mono Project
and are re-implementing the .Net class libraries from the documentation, that should probably steer well clear of this code to avoid accusations of being "tainted" or copying Microsoft's implementation. Someone will probably suggest (if they haven't already) that Microsoft is taking this step in hope that this kind of copying will happen so they can kill off the Mono Project through legal means, but I'm not feeling cynical enough for that today. And anyway, the Mono Project has ported .Net to all kinds of platforms, extending its reach. I'm not sure why Microsoft would want rid of it anyway.
And, of course, I look forward to searching the released source code for swear words and reporting just how many were found. Maybe that's why it's taking some time to prepare the code for release, though.