Open Source On .NET Is Not An Oxymoron

0 comments suggest edit

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.

Found a typo or error? Suggest an edit! If accepted, your contribution is listed automatically here.



28 responses

  1. Avatar for July 2nd, 2007

    You've been kicked (a good thing) - Trackback from

  2. Avatar for Scott
    Scott July 2nd, 2007

    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.

  3. Avatar for Simone Chiaretta
    Simone Chiaretta July 2nd, 2007

    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.

  4. Avatar for Damian
    Damian July 2nd, 2007

    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.

  5. Avatar for Joe Brinkman
    Joe Brinkman July 2nd, 2007

    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.

  6. Avatar for Stephen
    Stephen July 2nd, 2007

    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?

  7. Avatar for some guy
    some guy July 2nd, 2007

    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.

  8. Avatar for The Other Steve
    The Other Steve July 2nd, 2007
    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?

  9. Avatar for Karthik
    Karthik July 2nd, 2007

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

  10. Avatar for Codemac
    Codemac July 2nd, 2007

    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.

  11. Avatar for Scott
    Scott July 2nd, 2007
    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.

  12. Avatar for Haacked
    Haacked July 2nd, 2007

    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

    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.

  13. Avatar for Sergio
    Sergio July 2nd, 2007

    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.

  14. Avatar for dutch
    dutch July 3rd, 2007

    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.

  15. Avatar for Mitch
    Mitch July 3rd, 2007

    Bravo Phil! I develop open source software on .NET too:
    It uses IronPython and the Dynamic Language Runtime (DLR) which are open source from Microsoft under their Permissive License:
    If this isn’t open source, then what is?

  16. Avatar for Haacked
    Haacked July 3rd, 2007

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

  17. Avatar for Whatever
    Whatever July 3rd, 2007

    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. :)

  18. Avatar for Nathan
    Nathan July 3rd, 2007
    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.

  19. Avatar for Joe Brinkman
    Joe Brinkman July 3rd, 2007

    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?

  20. Avatar for Scott
    Scott July 3rd, 2007

    "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.

  21. Avatar for Mark
    Mark July 4th, 2007

    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.

  22. Avatar for Steven Harman
    Steven Harman July 5th, 2007

    >> I have a confession.
    Sinner. :)

  23. Avatar for mikeb
    mikeb July 8th, 2007

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

  24. Avatar for Haacked
    Haacked July 8th, 2007

    @MikeB - Well said. That's a better way of saying what I was trying to say.

  25. Avatar for Artificial Ignorance - Anand I
    Artificial Ignorance - Anand I July 26th, 2007

    At OSCON this week, we will be unveiling the covers on a new website - Open Source at Microsoft . The

  26. Avatar for Ralph Moritz
    Ralph Moritz October 20th, 2010

    I develop proprietary software for a small company with an even smaller budget. I use the freely available Visual Web Developer Express & can't afford expensive proprietary toolkits & libraries. So I'm in the funny situation of actually relying on a lot of open source software to build proprietary products! Needless to say I strongly dislike the GPL.

  27. Avatar for TWith2Sugars
    TWith2Sugars October 20th, 2010

    If these .net oss projects can run on an open stack (mono on Linux) then it shouldn't make a difference in that they can also run on a proprietary stack (Windows).

  28. Avatar for marc moore
    marc moore October 20th, 2010

    The bottom line on open source is that if you are getting value from your contributions that makes it worth the time you spend on it, then it makes sense, regardless of the technology stack. If you're not getting that much value, you're either: A) getting a raw deal; or B) doing charity work. Not that there's anything wrong with B, but you should be aware of it.