Oh noes! Microsoft .NET goes open source!
Well, not exactly. There's a lot of buzz going around the web today that started with an post by Scott Guthrie "Releasing the Source Code for the .NET Framework Libraries" (via DotNetKicks.com).
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).
This generated a lot of buzz including:
- Charlie Calvert (Microsoft C# Community Leader)
- Shawn Burke
- Mary Jo Foley (ZDNet)
- Read/WriteWeb (although they seem to not completely understand what it means)
- AjaxNinja (nice summary of buzz coverage)
- Robert Scobleizer claims it's a little too late
- and dozens and dozens more blogs
What does this really mean for .NET Developers? Well, at first glance I'm agreeing with Aaron's (AjaxNinja) thoughts. It won't mean much to the average developer. And as I commented at over at DNK, the above average developer already uses Reflector to peek inside the .NET library.
I truly think this is much more of a PR initiative than a technical initiative. It's the "cool thing to do" and will (did) generate a lot of buzz and talking. I'm sure there will be blogs and articles abound in the next few weeks or months talking about this. Maybe in a few weeks, there will be some new information that might provide some insight into how this will be helpful to developers.
Update: JudahGabriel (via DNK) pointed out three reasons why this will benefit developer beyond what we already get from using Reflector:
First, the source comments are intact, which means it becomes easier to understand .NET library source code.
Second, the code structure and local variable names are preserved.
Third, we can use the debugger to step in to .NET libraries and use the threads, locals, watch, etc. windows.
Shawn Burke also provides a good reason why this might benefit the average developer saying:
Even with one of the decompilers (e.g. Reflector) that you can easily get out there, [an exception from deep in the code] can be tricky to solve. With the source it's much, much easier.