Step in the right direction. Microsoft has revealed that they’re finally, with .NET 3.5, going to release parts of the .NET framework code. Eventually, all of the code will be released, including the new (and pretty exciting, if it makes good on its promises), LINQ DB access technology. I won’t make any comments about open-source software, because Microsoft’s stance is very clear on that subject, and this is clearly irrelevant to that discussion.
What this issue is relevant to, however, is the lives of .NET developers. Currently, Lutz Roeder’s excellent .NET Reflector – essentially a decompiler from CLR code to code that makes sense to developers for any and all .NET classes – is the only recourse for getting any sense of how .NET is working under the covers. Extending .NET’s default classes would be impossible without this invaluable tool, given that the convoluted order in which .NET’s library classes call their internal methods aren’t particularly well documented. However, .NET Reflector can only do so much to alleviate the problem given its fundamental nature as a decompiler; the code it extracts is often riddled with oddities, including but not limited to numerous labels and goto statements (!).
A far more fundamental problem lies within the process of debugging. Stepping into any .NET code will drop you into either assembly or bytecode, depending on how Visual Studio is feeling on that particular day, which is a complete waste of time and often precludes any sort of productive debugging getting done.
Having the actual and whole source code to the .NET libraries alleviates both of these problems, instantly.
I’m glad that Microsoft, at least on one front, has come to its senses on its secrecy. It will make the lives of countless developers far, far easier.