I already posted this on the tumblelog, but I think it bears repeating: With the next release of Visual Studio, the common .NET assemblies will be provided with source code.
Today I’m excited to announce that we’ll be providing this with the .NET 3.5 and VS 2008 release later this year.
We’ll begin by offering the source code (with source file comments included) for the .NET Base Class Libraries (System, System.IO, System.Collections, System.Configuration, System.Threading, System.Net, System.Security, System.Runtime, System.Text, etc), ASP.NET (System.Web), Windows Forms (System.Windows.Forms), ADO.NET (System.Data), XML (System.Xml), and WPF (System.Windows). We’ll then be adding more libraries in the months ahead (including WCF, Workflow, and LINQ). The source code will be released under the Microsoft Reference License (MS-RL).
You’ll be able to download the .NET Framework source libraries via a standalone install (allowing you to use any text editor to browse it locally). We will also provide integrated debugging support of it within VS 2008.
The pdb symbols will be included into Visual Studio natively so that when you’re debugging you can step directly into the framework’s code to see what’s going on. It will also have the ability to look the source up directly from Microsoft, so as the framework changes (with bugfixes, etc.) the source will keep in sync with what you’ve got installed. No longer will it be necessary to fire up Lutz Roeder’s excellent reflector program just to understand what a framework method is doing.
The additional advantage of this is that it will open up the coding practices and standard design patterns that the .NT team use internally, which should improve people’s code quality.
Before anyone thinks it, no this doesn’t mean Microsoft is making the code open source. The licence has 2 grant of rights statements:
(A) Copyright Grant- Subject to the terms of this license, the Licensor grants you a non-transferable, non-exclusive, worldwide, royalty-free copyright license to reproduce the software for reference use.
(B) Patent Grant- Subject to the terms of this license, the Licensor grants you a non-transferable, non-exclusive, worldwide, royalty-free patent license under licensed patents for reference use.
Which to my non-layer mind basically says the code can be used to look stuff up, but not to take the source code and shove it in something else. There’s also no suggestion that they are going to be accepting any bug fixes from the community (although I guess it’s very likely that a lot more bugs will get reported now).
As a side note, I thought this was odd: One of the limitations of the licence is
(B) If you begin patent litigation against the Licensor over patents that you think may apply to the software (including a cross-claim or counterclaim in a lawsuit), your license to the software ends automatically.
So does that mean that if you contest a patent involved in .NET, you have to stop accessing the source code when you’re debugging? And if that is the case how on earth could that ever be enforced?
Anyway, full marks to Microsoft for this. It shows what I think is an increasingly mature attitude towards development and developers.