Open Source On .NET Is Not An Oxymoron
I have a confession.
I am an Open Source developer and my platform of choice is the .NET framework by Microsoft. Not only that, I actually believe it is a good thing to support Open Source projects in the Microsoft ecosystem.
Yeah, really. In response to this tidbit, I have heard and am bracing to hear replies such as...
Why would you do that (support Open Source on Microsoft)?
It can’t be Open Source if it’s on the Microsoft platform.
One rationale given is that it ain’t really Open Source unless the entire stack is Open Source. I call this the all or nothing view of Open Source.
For example, one popular stack is the LAMP stack. That typically stands for Linux, Apache, MySql, and PHP, each of which are Open Source systems.
Interestingly enough though, the stack appears to end with the software layer. For example, proprietary hardware running the LAMP stack does not invalidate the Open Sourceness of the stack.
In contrast, I have the vacation view of Open Source. While I would love to be on vacation all the time, I’m pragmatic and I’ll take as much as I can get. Some vacation is better than no vacation.
Think About The Developers
Besides, why should PHP scripters have all the fun? There are legions of developers gainfully and productively employed writing software using .NET. Why shouldn’t they get to experience some of the benefits of using Open Source software?
So what if their stack is proprietary. Is it so wrong that these developers are more productive because of tools like Log4Net? Don’t they deserve a bit of Open Source spice in their lives?
But You Lose Out On Freedom!
There are as many flavors of Open Source as there are “developers!” in a Ballmer speech. But what they all share in common is some level of Freedom. In general, the freedom to view and change the code.
The only difference is really in the level of freedom and how that freedom should apply. I wrote before in my guide to Open Source Licensing that with some licenses such as the GPL, the freedom of access to the code is paramount. Any code that makes use of the GPL must itself be Open Source and licensed in a compatible fashion as the GPL.
Whereas with licenses such as the new BSD or MIT license, the freedom of the user of the code is paramount. There are pretty much no restrictions to using the code, even within proprietary systems.
Despite these philosophical differences, most reasonable people agree that they both constitute subsets of Open Source software.
I Have Freedom Where I Most Need It
The stack that I use with Subtext might be called WISC which consists of Windows, IIS, SQL Server, and C#. It sounds like a board game that Elmer Fudd might play on the weekends. Pretty much every layer of that stack is proprietary software. This is where the vacation view comes into play.
On this stack, I’ll never be able to view the Windows source and recompile it with a bug fix. But in truth, I’ll probably never have the need (nor capability) to do so. Often, the part I do need to change on a day to day basis is much higher up the stack. It’s the stuff that more directly applies to my business needs. It’s software like Lucene.NET that I’m more likely going to tweak and build a business on top of it.
This isn’t to say I wouldn’t mind being able to view the source for Windows, but it’s a balancing act. On the one hand, I like Open Source software. On the other hand, I like to feed my family by being productively employed and the Microsoft platform is great for being employed. Sure there are plenty of PHP and Ruby jobs, but I honestly really like writing C# code and the tools available to do so.
Only A Moron Thinks It’s An OxyMoron
In the end, I hold firmly to the belief that .NET is a viable platform for Open Source software. It might not meet everyone’s expectations for what Open Source is supposed to be, but it’s a good thing to many people and it is here to stay.
If you don’t believe me, just look at the list of projects mentioned in the comments to this CodingHorror post. You’ll see that Open Source in the Microsoft Ecosystem is more than just viable, it’s thriving and deserves to be recognized.