Friday, October 12, 2007

.NET Framework Source Code to be Released

There is great news on the .Net front as Scott Guthrie announced that the source code .Net 3.5 is going to release under Microsoft Reference License (MS-RL).  However this is not full open source license like Microsoft Permissive License (Ms-PL), which will soon be renamed the Microsoft Open License.  Ms-PL allows derivative works unlike Ms-RL where you can't copy the code.  So Mono developers are encouraged to not look at the reference code and keep on reverse engineering .Net.  I do assume that because it is a reference license, you can make references to the source code (on say a blog), although I am not an expert on copyright law.

Shawn Burke is one of the people that drove the initiative to deliver the source code, in fact on his blog in 2005 he said "I want to deliver Windows Forms source code to you".  In fact, Shawn Burke talks about the history of this release in a podcast "Interview with Shawn Burke on Microsoft's .Net Source Code Release".  Please note that this is not Rotor (an open source, reference implementation of .Net).  This is also not Mono, the Novell led reverse engineered version of .Net.  This is also not code de-complied from Lutz Roeder's .Net  Relector.  Many developers have been "peeking under the hood" of .Net for quite a will now using Reflector, but this does not show the original source code just the source code "intent" as it is complied.  Java has had its source code for available for as long as I can remember.  Having the Java source code helped me become an expert quicker than developers that didn't read the source code.

One of the best parts is we are going to be able to step through the .Net source code using VS 2008 because Microsoft is also going to be providing the debug symbols as well.  The debug symbols, which is what links the source to each .Net DLL, are provided by a Microsoft symbol server which has been helping developers debug code for years.  I had looked into getting previous versions of .Net to be able to step through the code, but it required recompiling using ildasm and that didn't sound very desirable.

Congratulations to Shawn Burke, Scott Gu for providing us this valuable information!!!  This will help developers know more about the platform they are developing on as well as build higher quality code.