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)?

Or

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.

the-stack

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.

Technorati tags: , , ,

What others have said

Requesting Gravatar... DotNetKicks.com Jul 02, 2007 11:15 PM
# Open Source On .NET Is Not An Oxymoron
You've been kicked (a good thing) - Trackback from DotNetKicks.com
Requesting Gravatar... Scott Jul 02, 2007 11:56 PM
# re: Open Source On .NET Is Not An Oxymoron
Open source for 99% of the people using it, at least an entirely open stack, is kind of like putting on anti-closet monster spray before going to bed when you're a kid. You aren't really going to need it but it might make you feel better.

How many people are there in the world that really understand the Linux kernel? How many are there that could understand the Windows kernel? Yeah, you can submit patches to Linux or Apache, but it takes about as long for your patch to get reviewed and put in the product as it does for a Windows developer.

But I do believe that if the entire stack isn't open, then the product isn't really Open Source. It's Open Source with an asterisk. But I'm OK with that. it's as open as I need it to be.

That being said. Most .NET Open Source are bizarre animals. The projects are based around custom build files and poorly documented install instructions. Multiple levels of assumptions. If your project doesn't support a "click on the .sln file and hit build" kind of ease of use, it won't get much in the way of contribution.
Requesting Gravatar... simone Jul 03, 2007 1:52 AM
# re: Open Source On .NET Is Not An Oxymoron

The projects are based around custom build files and poorly documented install instructions.


I think that is because many dev thinks that using VS to build an opensource project is not open enough, so many use NAnt (which is good, but not for building on the a dev machine) or I also see batch files that execute csc.exe to compile cs programs.
Requesting Gravatar... Damian Jul 03, 2007 2:45 AM
# re: Open Source On .NET Is Not An Oxymoron
The one part of the stack that I would like to see is a viable open source alternative to visual studio. Sharp Develop and MonoDevelop just don't cut it. With the c# language being a standard, and with alternative libraries (Mono.*), there is the huge potential for and complete open stack that would be very compatible with your vacation view.
Requesting Gravatar... Joe Brinkman Jul 03, 2007 5:05 AM
# re: Open Source On .NET Is Not An Oxymoron
As an end user or even an OS developer why should I care if my database or my IDE or operating system is OS? That is kinda like walking down the street, finding a $5 bill on the ground and saying "If only my wallet was free, then I could put this money inside." The software has value regardless of the cost of rest of the stack it is used with.

I believe the people who see LAMP based OS projects as the only "real" OS projects tend to have this mentality that Open Source is somehow equated with "free software", where others, like myself, fall in the Open Source is about access to the code and the sharing of knowledge. This is a classic dichotomy that has existed for the last 10 years (See Goodbye, "free software"; Hello, "open source") and which is just more apparent in the MS world.
Requesting Gravatar... Stephen Jul 03, 2007 5:52 AM
# re: Open Source On .NET Is Not An Oxymoron
It's not an oxymoron, it's just that the Windows programming environments are so *terrible*. Why would you want to do that to yourself?
Requesting Gravatar... Jason Haley Jul 03, 2007 6:51 AM
# Interesting Finds: July 3, 2007
Requesting Gravatar... some guy Jul 03, 2007 6:52 AM
# re: Open Source On .NET Is Not An Oxymoron
It is not currently worth my time to investigate all the details of the Linux kernel, therefore Microsoft's felonious megalomaniacal bullshit is great. .NET! Durrr!

Have you ever actually read an EULA for Windows? The point is to get away from that.
Requesting Gravatar... The Other Steve Jul 03, 2007 7:27 AM
# re: Open Source On .NET Is Not An Oxymoron
It's not an oxymoron, it's just that the Windows programming environments are so *terrible*. Why would you want to do that to yourself?


If it's so terrible, why are Windows developers more productive?
Requesting Gravatar... Karthik Jul 03, 2007 7:46 AM
# re: Open Source On .NET Is Not An Oxymoron
The argument against OSS on .NET is that you'll never get a shining recommendation from MS to use your framework, application, or platform if it is Open Source. At least not the way you would get Sun's blessing if you chose Java.

Boo f-ing hoo. Since when does MS give a shining recommendation to anything that they didn't create themselves? Even commercial frameworks and apps on the .NET platform rarely get official commendation from Redmond.

The only way MS will ever recognize an OSS effort is to copy it with a commercial product. I think thats the ultimate mark of success with an OSS .NET project :)
Requesting Gravatar... Codemac Jul 03, 2007 8:40 AM
# re: Open Source On .NET Is Not An Oxymoron
I think a lot of people forget something very obvious about Open Source. Open source software is running on proprietary hardware. Almost every single time. Your entire "stack" is not open until your hardware is open. So until I have an open source computer running, my software will never be running on a completely open system. It will only be running on different levels of open. And that's fine.

So if I write open source software for Microsoft's operating systems, using .NET, it's still worth your time! To say it's not good to bring open source to the windows platform is like saying it's not good to bring food to the starving. Ok, that was a bit dramatic of a comparison, but you get the idea.
Requesting Gravatar... Scott Jul 03, 2007 8:52 AM
# re: Open Source On .NET Is Not An Oxymoron
It's not an oxymoron, it's just that the Windows programming environments are so *terrible*. Why would you want to do that to yourself?


That's why so many OSS .NET projects use custom build files and structure their projects differently that standard .NET projects. It practically takes you back to command line programming. Most of the OSS .NET projects I've seen use a lot of code to work around limitations of the VS environment. Sometimes they call it "ALT.NET" or some variation. But really it's just a reaction to the gimp suit that is Visual Studio.
Requesting Gravatar... Haacked Jul 03, 2007 9:36 AM
# re: Open Source On .NET Is Not An Oxymoron
It's not that I do this to myself, it's that nearly every work environment I've worked at uses Windows. My current employer uses Windows, Linux, ASP.NET, Ruby, and PHP.

Wouldn't it suck if the only platforms for which I had great OSS tools available was Linuk, RUby, and PHP and nothing for Windows and ASP.NET?

I want to be productive at work so I can get home to my family and good OSS tools help me do that. What's so wrong about wanting these tools for every platform I have to work on? You might say convince my work to switch or only work for companies that don't use Windows, but that's unrealistic.

As I posted in a comment regarding this post on programming.reddit.com...

It's a bit like freedom in China. You could leave China because the govt doesn't support it. Or you can hope it catches on and starts to spread.

Requesting Gravatar... Sergio Jul 03, 2007 10:42 AM
# re: Open Source On .NET Is Not An Oxymoron
OK, that's it. The "bank error" in your favor has officially kicked in :) I think OSS built on the Windows stack cannot be entirely compared to one on a complete OSS stack. At least not in the "purity" aspect, in case anyone cares about it. If I weren't myself a .Net developer, I'd propose the term Dirty Source - not 100% pure OSS, but enough to entice your inner opportunistic quest for "free stuff". Let's face it, most people use open source for the monetary aspect (or lack thereof) of it. And there's nothing wrong with that.
Requesting Gravatar... dutch Jul 03, 2007 11:46 AM
# re: Open Source On .NET Is Not An Oxymoron
Okay, I am cool with your feelings on the software stack not being entirely Free. Those are your feelings, and though I disagree, it can make sense.

Where you really start to bug me, though, is where you talk about the stack stopping at the software aspect. You pose the question, "why doesn't proprietary hardware taint the openness of the stack with so-called 'all-or-nothing' people?"

If you understood anything about FOSS, you would realize that, since the beginning of the Free Software Movement, we have been perfectly fine with hardware, proprietary or not. Guess how much it costs to reproduce software. Now guess how much it costs to reproduce a hard disk. They deserve compensation for the production of the hardware, and Free Software advocates have always said that.

The only thing we have ever had a problem with is closed drivers that run the hardware, as that instantly makes it unusable in a Free system. As long as the drivers are free, then closed hardware is peachy.

If you want to understand more about the FOSS movement, I suggest you read some books and/or papers on the subject before you make us look like we're hypocrites.
Requesting Gravatar... Mitch Jul 03, 2007 11:54 AM
# re: Open Source On .NET Is Not An Oxymoron
Bravo Phil! I develop open source software on .NET too: http://softwareindustrialization.com

It uses IronPython and the Dynamic Language Runtime (DLR) which are open source from Microsoft under their Permissive License: http://www.codeplex.com/IronPython/Project/License.aspx

If this isn’t open source, then what is?
Requesting Gravatar... Haacked Jul 03, 2007 2:07 PM
# re: Open Source On .NET Is Not An Oxymoron
@Dutch - So you'd be ok with a proprietary hardware abstraction layer as long as there are open drivers to run code on that layer? That would constitute an untainted open source stack?
Requesting Gravatar... Whatever Jul 03, 2007 3:17 PM
# re: Open Source On .NET Is Not An Oxymoron
Hey, it's your problem, not mine.

And considering the fact that Microsoft will support and encourage you no matter what and never attempt to undermine the entire concept of open source, I can't imagine why anyone would question open source on Windows.

But if you want to write code that's exploitable by others for their own advantage and don't want to be paid, that's entirely your right, and you should be encouraged to donate free work to companies that can profit from it. :)
Requesting Gravatar... Nathan Jul 03, 2007 4:28 PM
# re: Open Source On .NET Is Not An Oxymoron
But if you want to write code that's exploitable by others for their own advantage and don't want to be paid, that's entirely your right, and you should be encouraged to donate free work to companies that can profit from it. :


You really have no idea how much of the free software world works do you. All the large open source projects are produced primarily by people paid to do so, either full-time or as part of their ongoing employment.

Take the canonical example - Linux kernel, Apache, MySql, PHP. Two of these are produced by single companies. The other two are largely produced by a network of paid employees across a number of companies.


Requesting Gravatar... Joe Brinkman Jul 04, 2007 4:45 AM
# re: Open Source On .NET Is Not An Oxymoron
It is amazing how much misinformation people are willing to post.

"you'll never get a shining recommendation from MS to use your framework, application, or platform if it is Open Source" - Ohh really? Microsoft has been actively promoting DotNetNuke for the past 4 years. We have been a part of the Shared Hosting program with Microsoft for three of those years which means that our software is promoted to hosters as a low cost Windows .Net based alternative to packages like Joomla or PHP-Nuke. We have more than a dozen individuals who have been made MVPs as a result of our work on DotNetNuke and we have been promoted from Microsoft's own ASP.Net website for the last 4 years.

"At least not the way you would get Sun's blessing if you chose Java."
This is great. I better go tell Marc Fluery that all those years of battling Sun over the J2EE certification was just Sun's way of showing they cared. Or maybe the guys on Eclipse didn't realize that Sun cared so much when Sun tried to kill off Eclipse and the SWT. Ohh...and the Linux guys... Yeah I bet they really felt the love from the Solaris group at Sun.

It is also amazing how much people claim to hate VS, yet in the Java OS camp they have spent the last several years trying to come up with a decent alternative to VS. For years all I read about was how much better VS was than anything else. After IBM spent millions of dollars and went through several different shitty IDEs, they finally succeeded with Eclipse, but other than that you cannot point to another successful IDE in the Open Source world that compares with VS. NetBeans is cr@p. BEA's couldn't even give their IDE away.

You can talk about how great Python and Perl and PHP and Ruby are, but how come we almost never hear about the tools used to code in those languages?
Requesting Gravatar... Scott Jul 04, 2007 7:52 AM
# re: Open Source On .NET Is Not An Oxymoron
"Microsoft has been actively promoting DotNetNuke for the past 4 years."

I think that's only because they could verify the pedigree. DNN started out from the iBuySpy portal if I'm not mistaken. Which was a demo site built in ASP.NET 1.0 by a MS vendor. So effectively, MS started and sponsored DNN from the start.
Requesting Gravatar... Mark Jul 04, 2007 11:02 AM
# re: Open Source On .NET Is Not An Oxymoron
Are you people kidding me?

.NET open source applications aren't open source because... what?

You can't debug the kernel so that makes the software I've written and the code I've left open to you what? Less open source?

That has to be the most retarded argument I've heard in a LONG time. Get over yourselves and your "MS is evil" paranoia.
Requesting Gravatar... Steve Harman Jul 05, 2007 9:51 PM
# re: Open Source On .NET Is Not An Oxymoron
>> I have a confession.

Sinner. :)
Requesting Gravatar... mikeb Jul 08, 2007 11:46 AM
# re: Open Source On .NET Is Not An Oxymoron
>> Whereas with licenses such as the new BSD or MIT license, the freedom of the user of the code is paramount. <<

To be clear, the BSD/MIT types of licenses gives the *developer-as-user* who is incorporating the code into new software maximum freedom. However, the GPL is designed to give the *end-user* of the software maximum freedom. It is specifically designed so that end-users would not be locked of of being able to do what they may want or need to do with the software.

The BSD/MIT type of license gives similar freedoms to developers who use the code, but not necessarily to the end-users.

I think this is why many developers do not like software with a GPL license - the license is not intended to benefit them so much as it's intended to benefit end-users.

(Note - I'm not saying one is better than the other, just pointing out who get seems to get 'maximum' benefit from the licenses).
Requesting Gravatar... Haacked Jul 08, 2007 12:35 PM
# re: Open Source On .NET Is Not An Oxymoron
@MikeB - Well said. That's a better way of saying what I was trying to say.
# Open Source at Microsoft
At OSCON this week, we will be unveiling the covers on a new website - Open Source at Microsoft . The

What do you have to say?

(will show your gravatar)
Please add 2 and 5 and type the answer here: