Oct
3
Today Microsoft announced that they will be releasing the source code for .net. Listed below are my top 10, my current opinions, of why this is a great move and should improve my own and most other’s development experiences:
1. Can you say debugging
When Scott Gu announced on his blog today that Microsoft was releaseing the source code for .Net Framework Libraries, while I grinned widely, he reviewed how this will drastically improve debugging capabilities within Visual Studio. There are sooo many times that I wished I could step into a class/method/property to see what it was directly affecting - when I was intrigued enough, or stuck, enough, I would use Reflector(see point #2) to see what the code was all about but Scott’s scenario definitely welcomed where you can just walk through the code directly.
A few development scenarios where I can see direct and immediate benefit are ViewState debugging and serializing as well both of which are like picking the lottery numbers when you hit the wrong types of issues.
2. Source code is there for the taking already, this just makes it easier
.Net’s source is there for the taking really now, programming languages that work with the .NET Framework compile into an intermediate language known as the Common Intermediate Language, or CIL - and the core classes are not obfuscated, they just need to be decompiled to have the source made available. With Reflector for .NET this is made relatively easy however, nothing like accessing directly while debugging within Visual Studio. For this reason alone Microsoft is just really improving the tools to access this code.
3. Success of Codeplex and MS Shared Source
I LOVE Codeplex. To me the layout and structure is much improved over that of Source Forge and other project hosting sites. I find it is more inviting and much more streamlined to find the projects I might be interested in, a big part of that is that there are a fraction of the projects on CodePlex(2381) vs Source Forge(155,585). There are several projects which have thrived as open, shared source, on Codeplex, namely AjaxControlToolkit which I follow daily via RSS. This announcement shows a greater commitment to Shared Source which with the interaction, ability to vote on issues that are important to you, and all other advantages means an improved development experience.
4. Opensource community love (or at least less hate)
While I will say now that Microsoft’s move to open up the covers of .net will be fended off by the Linux fanboys (see Slashdot discussion) of the internet and beyond it does have to come with some respect for the fact that they are overall improving developer experience and listening to their community. If nothing else this removes the argument that .net is a closed platform therefor is not worth discussion, as much water as that doesn’t hold I will be glad to see it less applicable.
5. Developers can learn from Framework
In my days with Borland Delphi, which allowed you access to a huge percentage of their core libraries, I learned the language, best practices and some cool tricks along the way in a large part from the source of the library they provided. If .net had been the same when I had made the move it would have decreased the time it took me to get comfortable dramatically. This will be the case now and when learning new features made available, e.g. Linq, I can have a look at how it is implemented when trying to decided on best plans of action, key area this will help with is efficiency, which has always been difficult when working with core .net classes as you are not aware of implementation details without some work(see #2).
6. Trust level of source
Seeing is believing. If I had the choice between being told that something will behave in a certain manor versus reading the code that states how it will behave, I will take reading the source every time. The released version of the source will become what I reference for documentation from day one.
7. Community feedback + More rapid innovation
After the release of the source with so many people, I will be one of them, looking at the code, brainstorming sessions are natural, whether it is about using the software or moving it forward. If Codeplex is used as a host of this code it will give a central location to follow along with the development and issues related to features within the framework. This will be greatly welcomed.
8. Open Source makes you responsible
While many companies allow the quality of their source tree to have many fudges and cludges, not to say that .net has many of these(or none), when you are releasing code which will be critiqued by a huge population of developers more time will be spent on the quality of the end product. All non shared/open source code projects in the world could be improved by this requirement. There is no negative to this other than development effort required is increased for the party releasing; this is something I am comfortable with since this one doesn’t land on my plate. =)
9. Directly opens feedback line for non-partners
There are many patches and hotfixes which are made available to partners long before they are made available to Microsoft’s general user-base. This could change, to some extent, with the advent of Shared Source for the framework. If nothing else information regarding the fact that patches or fixes are available should be more centralized and easier to find, again assuming that Codeplex is used. Instead of sorting through information for all MS products, items related to .net should be relatively more centralize. This could be wishful thinking however I can dream.
10. They seem to be doing it correctly (with a reservation to change my mind)
One of the biggest arguments you will hear when people are dismissing the clout of this announcement will be surrounding the non-modifiable license release of the .net classes (i.e. you cannot change the source); for me this is one of the most positive details of the announcement. The number one reason why I moved to .net from other platforms, namely Java, PHP and Delphi, was the fact that I did not want 20 different libraries available, with no communication between projects to solve the exact same problem. Dino Chiesa, Director of the .NET Platform commented on this fact and I fully agree with him:
There’s still a value in having a reliable, dependable platform, … We don’t want developers making mods to it.
Had Microsoft opened the floodgates to every developer and company having their own “flavors” of the framework I would have caught the next ship to another development platform. For this I again I give my compliments.
On the flip side I should note one major issue which could come from this which is when the source is available this will make it much easier to track down holes in the software. This is true of all open-source software however as .net is used more and more in the core of Windows releases(hopefully which are better than
ME2 but that is another subject) items found in the core classes will cause more issues. (This may end with a positive where release cylces are shortened.)
Finally, a question this raises for me is if they are opening the source - where does this leave Mono and projects of the sort? I do not follow Mono very closely, and won’t until the community says it is getting close to usable, but my understanding is that they are building using the specifications, Is this true? and what problems does this create or remove(if any)? If anyone has an knowledge on this I would be intrigued to hear it.
Listen to this podcast
Comments
1 Comment so far

[…] And over on Ron Myers blog a great article entitled "10 Reasons Why Making .Net Source Code Available is Great for .Net Developers". […]