Mad, Beautiful Ideas
Microsoft Underestimates the Value of Open Source

I was listening to This Week on Channel 9, where they speak about Microsoft releasing the Source code to the ASP.NET MVC Framework preview. The license is a custom license which, unlike the license that the rest of the .NET Class Libraries is available under, allows developers to patch and modify the source. What they don’t grant, and what is incredibly important, is the right to redistribute. At least the channel 9 guys were honest about this.

The right to redistribute is incredibly important. If I fix a bug, or add a feature, or anything else, to Microsoft’s code-base, I am completely unable to share those fixes with anyone else. I could try to get Microsoft to put the fix in the ‘official’ codebase so that the rest of the community can benefit from my code. ScottGu says that this is to prevent multiple versions of the framework from floating around.

While I may understand Microsoft’s feeling on this point, it is very rare that a true fork of an Open Source project is created, since it doesn’t make sense not to work together as a community. Even when someone get’s their feelings hurt and they fork, it’s rare that their fork survives, unless it truly is the superiour codebase. Still, it is ultimately better for everyone if that ability to go out on one’s own is preserved. Since I can’t redistribute my changes, will Microsoft support me if I break the framework for my own uses? Doubtful.

I suspect the real plan of Microsoft is that one the MVC framework is finalized and officially released, the ability to patch will be revoked, and the code will be available under the Reference license, just like the rest of the framework. Ultimately, this means that I’ve made a point of not downloading or installing the source, as I don’t want to risk having seen it, which may make it impossible for me to contribute to Mono. Luckily, the MVC framekwork uses no P/Invokes, and only have 23 issues reported by MoMA, meaning that we should be able to use the Binaries via Mono without too much difficulty. I’m thinking about taking care of those missing pieces, maybe eventually reimplementing MVC on Mono as a true Open Source library. It’s a great framework, but I’d just as soon had Microsoft keep the code internally than perform such a limited source release.