Open Source and Open Source Software Are Not The Same Things

code, mvc, open source, community 0 comments suggest edit

UPDATE: I have a follow-up post that addresses a few criticisms of this post.

It all started with an innocent tweet asking whether ASP.NET MVC 3 is “open source” or not? I jumped in with my usual answer, “of course it is!” The source code is released under the Ms-PL, a license recognized that the OSI legally reviewed to ensure it meets the Open Source Definition (OSD). The Free Software Foundation (FSF) recognizes it as a “free software license”^1^making it not only OSS, but FOSS (Free and open source software) by that definition.

Afterwards, a healthy debate ensued on Twitter. No seriously! “Healthy” debates on Twitter do happen sometimes. And many times, I learn something.

Many countered with objections. How can the project be open source if development is done in private and the code is “tossed over the wall” at the end of the product cycle under an open source license? How can it be open source if it doesn’t accept contributions?

This is when it occurred to me:

  1. I’ve been using these terms interchangeably and imprecisely.
  2. Many people have different concepts of what “open source” is.

“Open source” is not the same thing as “open source software”. The first defines an approach to building software. The second is the end product. Saying they are the same thing is like saying that a car that Toyota makes and Kanban are the same thing. Obvious, isn’t it?

The Importance of Definitions

I’m a big fan of open source software and the open source model of developing software. I don’t necessarily think all software should be open source, but I do find a lot of benefits to this approach. I’m also not arguing that writing OSS in a closed off manner is a good or bad thing. What I care about is having clear definitions so we’re talking about the same things when we use these terms. Or at least making it clear what I mean when I use these terms.

Definitions are important! If you allow for any code to define itself as “open source”, you get the monstrosities like the MS-LPL. If you don’t remember this license, it looked a lot like an open source license, but it had a nasty platform restriction.

Microsoft started the term “Shared Source” to describe these licenses which allow you to look at the code, but aren’t open source by most common definitions of the term.

Open Source Software

Going back to my realization, when I talk about “open source” I often really mean “open source software”. In my mind, open source software is source code that is licensed under a license that meets the Open Source Definition.

Thus this phrase is completely defined in terms of properties of the source code. More specifically, it’s defined in terms of the source code’s license and what that license allows.

So when we discuss what it means for software to be open source software, I try to frame things in terms of the software and not who or how the software is made.

This is why I believe ASP.NET MVC is OSS despite the fact that the team doesn’t currently accept outside contributions. After all, source code can’t accept contributions. People do. In fact, open source licenses have nothing to say about contributions at all.

What defines OSS is the right to modify and freely redistribute the code. It doesn’t give anyone the right to force the authors to accept contributions.

Open Source

So that’s the definition that’s often in my mind, when I’ve use the term “open source” in the past. From now on, I’ll try to use “open source software” for that.

When most people I talk to use the term “open source”, they’re talking about something different. They are usually talking about the culture, process, and philosophy that surrounds building open source products such as open source software. Characteristics typically include:

  • Developed in the open with community involvement
  • The team accepts contributions that meet its standards
  • The end product has an open source license. This encompasses open source software, open source hardware, etc.

There’s probably others I’m forgetting, but those three stand out to me. So while I completely believe that a team can develop open source software in private without accepting contributions, I do believe that they’re not complying with the culture and spirit of open source. Or as my co-worker Paul puts it (slightly modified by me)

I would put a more positive spin, that they’re losing out on many of the benefits of open source.

And as Bertrand points out in my comments, “open source” applies to many more domains than just software, such as open source hardware, recipes, etc.

Why does it matter?

So am I simply quibbling over semantics? Why does it matter? If a project does it in private and doesn’t accept contributions, why does anyone care if the product is licensed as open source software?

I think it’s very important. In fact, I think the most important part is the freedom that an open source license allows. As important and wonderful as I think developing in the open and accepting contributions is, I think the freedom the license gives you is even more important.

Why? Maybe a contrived, but not too far fetched, example will help illustrate.

Imagine a project building a JavaScript library that develops completely in the open and accepts contributions. They’ve built up a nice healthy ecosystem and community around their project. Some of the code is really whiz bang and would make my website super great. I can submit all the contributions I want. Awesome, right?

But there’s one teensy problem. The license for the code has a platform restriction. Let’s say the code may only run on Windows. That’d be pretty horrible, right? The software is useless to me. I can’t even use a tiny part of it in my own website because I know browsers running on macs will visit my site and thus I’d be distributing it to non-Windows machines in violation of the license.

But if it were a library developed in private, and once in a while they produce an open source licensed release, so many doors are opened. I can choose to fork it and create a separate open community around the fork. I can distribute it via my website however I like. Others can redistribute it.

Again, just to clarify. In the best case, I’d have it both ways. An open source license and the ability to submit contributions and see the software developed in the open. My main point is that the license of a piece of useful software, despite its origins, is very important.

In the end?

So in the end, is ASP.NET MVC 3 “open source”? As Drew Miller aptly wrote on Twitter,

How I like to describe it: ASP.NET MVC 3 is open source software, but not an open source project.

At least not yet anyways.

UPDATE: After some discussion, I’m not so sure even this last statement is correct. Read my follow-up post, What is the spirit of open source?

^1^Although the Free Software Foundationrecognizes the MS-PL (and MS-RL) as a free software license, they don’t recommend it because of its incompatibility with GNU GPL.

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



25 responses

  1. Avatar for Alxandr
    Alxandr February 16th, 2012

    That, of cause, begs the question; will ASP.NET MVC ever be an open source project? Or at least, do you think that's where it's headed?

  2. Avatar for Pete
    Pete February 16th, 2012

    The definitions make sense to me, given the parity with Open Source Hardware.
    In almost all cases I've seen, OSH is developed behind closed doors, maybe with some suggestions from outside. However, there generally isn't a great way to accept real community contributions (what would they be other than schematic or board layout suggestions?). It's more about what you're allowed to do with the hardware specs (or actual hardware).

  3. Avatar for Bertrand Le Roy
    Bertrand Le Roy February 16th, 2012

    There is one thing that bugs me here (in a minor way): "the end product is open source software". Today, open source encompasses a lot more than software. Open source hardware for example, but there are other domains of activity where open source is relevant today, like art or even management methods.

  4. Avatar for haacked
    haacked February 16th, 2012

    That's a really great point! I'll change it to "Open source product" such as "open source software".

  5. Avatar for Aaron Powell
    Aaron Powell February 16th, 2012

    Good write up Phil, I think something that a lot of people miss are some of the subtle nuances of when talking about "open source". I like to think of it as there are two distinctions, Open Source Software and Open Source Projects and an Open Source Project is the one people miss the subtleties with most often. The primary one I think most open source projects (or teams wanting to be an open source project) miss is community engagement.
    All the public source code, issue trackers and OSD licenses in the world can mean nothing if as an open source project you develop disengaged from your community. I've seen (and been responsible for) projects that surprise their community with new features that were developed in private. As well received this often is being on the receiving end makes me sit up and wonder what else I'm not aware of from what I believed to be an open project. Is the work I'm doing now going to be redundant because the project is already doing it but I just don't know?
    That's not to say that every time someone wants to be open source they need to call up all their users and check that they are ok with it, that's entirely impractical. ASP.Net MVC is a classic example of good open source software that doesn't need to be vetted as they aren't currently trying to be an open source project. But when wanting to be an open source project you need to work on finding a balance between involving the community in the decisions and directions of the project, which is not an easy task.

  6. Avatar for Peter
    Peter February 16th, 2012

    Is it just me or was MVC4 developed in "secrecy" -- at least compared to previous versions? Seems like the walls have closed and it's really like Phil put it "throwing the end result over the fence". There are so many small issues that should be fixed, but the attitude seems to be to ignore everything and march on with whatever they think is best. Most issues in the uservoice Phil set up seem to have been ignored... What is going on?

  7. Avatar for Athtar
    Athtar February 16th, 2012

    Do the people that complain ASP.NET MVC is not open source also say the same thing about Android?
    Google does all the development in private and the code is "tossed over the wall" as you put it. And as far as I am aware they don't accept any community contributions. But they seem to call themselves an open source project. If that's the case, why can't the same apply to ASP.NET MVC?

  8. Avatar for Jon Galloway
    Jon Galloway February 16th, 2012

    @Peter - The roadmap was posted back in July '11 and looks quite a bit like what was in the Developer Preview that came out in September. The Web API features that were added in started under WCF Web API with Glenn Block, and couldn't have been more in the open.

    If you look at the responses - both on UserVoice (view completed) and comments on the roadmap, there's been a lot of focus on requests - e.g. bundling and minification.

  9. Avatar for Peter
    Peter February 17th, 2012

    @Jon: And since July there was hardly any update on progress and very little community involvement. In UserVoice there is one completed item, one started, and two declined, out of about 120 requests. I wouldn't call that "a lot of focus on requests."

  10. Avatar for Greg
    Greg February 17th, 2012

    Hmm... I'm grateful that the MVC has allowed users to look at its source code under a fairly permissive license; it has helped me solve a handful of problems in the past, and I think it's a real step forward for Microsoft.
    However, I think there is still a significant difference between what the MVC project has done and actual open source projects, and that using the term "open source" to cover MVC... could seem to some like a way of stealthily subverting the term "open source". Shades of the bad old days of embrace/extend/exterminate, which not all of us have forgotten.

  11. Avatar for haacked
    haacked February 17th, 2012

    Greg, as I stated in the end. If you don't want to call the project "Open Source", then sure, that's probably fine. But the product, the source code, is definitely "Open Source Software".
    Let me give another example of why the permissive license is the most important part. Any open source project can decide to change the way they do business and become closed off. But nobody, not even Microsoft, can retroactively change the license of code they've already released under an open source license.
    So in theory, the next version of the software could be closed source. But they've already granted you a license to do almost anything you want with the previous version of the code. It's in the license.

  12. Avatar for Tim
    Tim February 17th, 2012

    Maybe the terms should be:
    Opened Source and Openly Sourced
    Opened Source is the code is out there, look and use as you want.
    Openly Sourced would mean that the project is sourcing the software in an open way.

  13. Avatar for haacked
    haacked February 17th, 2012

    @Tim the problem is to refer "Opened Source" to code is too narrow a definition. What about open source hardware? Open source recipes? Open source design? Etc. :)

  14. Avatar for tom mckearney
    tom mckearney February 17th, 2012

    Actually, I think "Open Source" is exactly what it says: Source that is open. The open, community-driven development process does NOT dictate open source software. I think what you're calling "Open Source" should be called "Open Development".
    Open Source is about the *source*, not the process.

  15. Avatar for flukus
    flukus February 17th, 2012

    Maybe "open development" would be a better way to distinguish between the two.
    Android and MVC are both open source but closed development.
    An open development project isn't necessarily open source (vim).

  16. Avatar for Acaz
    Acaz February 18th, 2012

    And Nugget? is 'open source' or 'open sorce software'?

  17. Avatar for ashley
    ashley February 18th, 2012

    "tossing it over the wall" is not a new concept. the bastion of open source software, GNU, developed emacs and GCC this way until 1999. If not for the success of linux and ESR's essay (CatB), they might still be doing it that way. in the case of android, i can see good reason for them tossing it over the wall, and i think they do accept patches but they are quite strict and the patches should be minimal. however, they seem to have had no interest in accepting anything from k9, and at this point the projects (k9 and ASOP email) are so different that taking something new from ASOP proves difficult.

  18. Avatar for orcmid
    orcmid February 19th, 2012

    I think all of this word-fudging is obscuring more than it clarifies.
    I have found it easy to say "open-source licensed" (implying that the source code is available and the license fits the OSD).
    Whether or not there is an open-source development project and how contributions to that process are accepted is a different and important matter.
    If contributions are not accepted, then the IP remains with the original developer. If contributions require a copyright assignment, as Sun and Oracle did for contributors, then the result is not fully open-sourced. The downside is that alternative licenses can be made. The upside is that it is possible to have clear IP provenance when contributing the project under a different license regime, as Oracle did when OO.o was contributed to Apache.
    Apache, on the other hand, does not require copyright assignment but does require a contributor agreement that keeps the IP provenance clean for any substantial contribution.
    Note that these aspects are fairly orthogonal to the license regime in many cases. The FSF expects copyright assignment for contributions to GNU software, for example. LibreOffice is conducted without any contributor agreement beyond a simple declaration that the contribution is under the licenses that are being required by that project.
    I would also say that a clear warning sign about an allegedy open-source project would be the lack of a publicly visible issue tracker and source-maintenance revision control.

  19. Avatar for Ousmane
    Ousmane February 20th, 2012

    Why don't you just used shared source keeps it simple.

  20. Avatar for haacked
    haacked February 20th, 2012

    Because "Shared Source" means something very different. Did you see the Wikipedia link to "Shared Source"? Contrast that with the Open Source Definition or the Wikipedia post on open source software.
    The defintion for OSS is well established. Why do you think "Shared Source" would be clearer when this software clearly does not meet that definition but does meet the OSD?

  21. Avatar for jiml
    jiml February 20th, 2012

    "Open Source", who says that it is a model of developing software? As a software engineer, to me it may mean source code freely available to look at, learn from, and copy into my projects as needed. I don't like plagiarism, and in my case, I will give credit to the author in the comments, but, others may directly copy it without giving thanks to the author. Your definition places it down a narrow road. "Open Source" may mean other things to other people. I am sure that the term may have been used long before software was around. Outside of software development, someone may say: open source what? [What is open source(d)? Like an old Abbott and Costello play on words.]

  22. Avatar for Mike
    Mike February 21st, 2012

    Open source is a license, and too many people still don't know what that means. Open source software is software released under that license.
    This has nothing to do with *how* the software was developed, what tools where used, or the policies of the organization on accepting code contributions. It has everything to do with what you, as a user of that software, can do with it.
    Don't muddy the pot even more by splintering the term to describe something that it's not meant to.

  23. Avatar for Kennethtruyers
    Kennethtruyers February 21st, 2012

    Yes, indeed, as Mike says I think the concept of Open Source revolves around the license. It's actually simple: Open Source, the source is in the open, do with it whatever you want (or almost everything, depending on the license). You can fork it, rebuild it, take it apart, put it back together, check where that nasty bug in your app came from, etc.
    The objections people make are indeed just about the development process. While community development certainly has benefits I think in the case of MVC, which is so closely related to ASP.NET, Microsoft is choosing the right strategy by developing it and "tossing it over the wall" when it's finished. Let's be honest, MVC has proven to be a great product, and I thnk it would take quite a clever and big community to reach the same standards.

  24. Avatar for Tim Long
    Tim Long February 22nd, 2012

    The semantics can be argued ad infinitum but in truth, these definitions suck. Using the normal rules of natural language, a fair and reasonable person would interpret "open source" to mean that they can get the source code. The phrase "open source" doesn't sound at all like a methodology, it needs a new name. Even Wikipedia has to have a disambiguation page, which (apparently incorrectly) states: "Open source denotes that a product includes permission to use its source code [...]".

  25. Avatar for Oliver Hanappi
    Oliver Hanappi March 19th, 2013

    This debate is also widely known as Cathedral vs. Bazaar model, see