Microsoft and a number of .Net developers trumpeted the Redmond software vendor's announcement this week that it would release the .Net source code under a Microsoft Shared Source license as a huge deal.
Joel Spolsky (the former Softie of "Joel on Software" fame), head of Fog Creek Software, disputed the notion that the move by Microsoft was all that revolutionary. Spolsky explained, via an e-mail message:
"Microsoft releasing the source code to the .NET libraries may seem very cutting edge, but it's really just going back to doing something they've done since the beginning of time.
"You have been able to get source code to Microsoft's C libraries going at least as far back as 17 years, probably since the very earliest days of Microsoft's C compiler (1987 or so, I'd bet). I remember sending away for it on 3.5" floppies, at no extra charge. Once they went to CD-ROM distribution they just started throwing it on the CD-ROM. You've been able to get source code to the Microsoft Foundation Classes (MFC) for C++ since it started shipping in the early 1990s. The alternate C++ libraries, ATL and WTL, also come with complete source and always have, since day 1.
"In fact the fact that you couldn't get source code to the .NET foundation libraries until now is more the exception than the rule. You've ALWAYS been able to get source code to the C libraries and the C++ libraries from Microsoft, so this 'new' move is neither a brave new world nor any kind of unusual reaction to Open Source... it's just a standard thing that compiler vendors have always had to do if they wanted people to use their libraries. The more interesting story is ... why did they wait until now when they've always given out source with other programming languages?"
Speaking of open source, Miguel de Icaza, Vice President of Engineering at Novell, was unhappy that Microsoft didn't go further and release .Net under a real open-source license, instead of the neither-here-nor-there Shared Source one.
De Icaza blogged:
"I still believe that there is a good business case for opening more stuff under the more liberal MS-PL (Shared Source) license.
"And of course, beyond the Microsoft ecosystem, there is the Mono ecosystem, where we could leverage that code if it were open source :-)."
De Icaza, who is working closely (under the auspices of some, unspecified business relationship) with Microsoft on the Linux port of Silverlight, known as "Moonlight," noted that Microsoft had its reasons for releasing the .Net source under Shared Source's MS-RL license:
"Am not sure why Microsoft did this, there have been a few theories around this, but my own guesses are:
"* Scott (Guthrie) and many people reporting to him understand developers (Scott did ASP.NET). Scott being in charge of .NET probably has made this organization be more Web-y, in that they understand that developers are more effective if they can 'View Source.' So it might be a natural cultural shift. Scott and his team are behind the Microsoft/Novell collaboration on Silverlight for instance.
"* Large .NET users probably already had access to the source code, and probably had access to under a myriad of customer-specific NDAs or licenses and this was hard to work with, and hard for the organization to manager. This could be license consolidation and streamlining of the process to get people access to the source code.
"* Getting access to the source code alone was probably very cumbersome. This is probably why the focus of the release is on the simplicity of getting the source code for debugging (the most important scenario presented so far).
"* Sun and Java: it is possible that some customers were getting cozy with the ease of access to Java source code to the class libraries and this had some mounting pressure on Microsoft. Some of the statements are very similar to what Sun used to make about Java before they agreed to open source it."
As expected, De Icaza warned those working on Mono (the open-source implementation of .Net) and other open-source projects that they should make sure to refrain from looking at the .Net source in order to avoid any charges of code contamination.
"People that are interested in continuing to contribute to Mono, or that are considering contributing to Mono's open source implementation of those class libraries should not look at this upcoming source code release," he said.
What's your take on why Microsoft opted now to make the .Net source available for viewing?