Orchid Jeff “The CodingHorror” Atwood takes issue with the idea that software developers have any moral obligation to contribute to Open Source projects. And you know what? I agree. However I do take issue with his conclusion as well as some of the points that he makes in an attempt to bolster his argument.

The whole point of open source– the reason any open source project exists– is to save us time. To keep us from rewriting the same software over and over.

snip…

It’s exactly what open source is about: maximum benefit, minimum effort.

Well no. Not really. Back in the day, software was just an afterthought provided by hardware companies to complement and run their hardware. This software was widely shared freely, until companies began to impose restrictions with licensing agreements and started protecting their code by hiding the source.

Many developers grew frustrated as they lost control over their working environment and were unable to modify the programs to fit their needs. Hence Richard Stallman started the Free Software movement, hoping to give users the right to:

  1. run the program, for any purpose.
  2. modify the program to suit their needs. (To make this freedom effective in practice, they must have access to the source code, since making changes in a program without having the source code is exceedingly difficult.) They must have the freedom to redistribute copies, either gratis or for a fee.
  3. redistribute copies, either gratis or free.
  4. distribute modified versions of the program, so that the community can benefit from your improvements.

Thus originally, the whole point of open source was to provide users the freedom to regain control over software in order to get their jobs done.

Of course later, the movement split into the Free Software movement which was absolutist about the freedom issue, and the Open Source movement which sought to be more pragmatic and provide a business case for open source software. Open Source focuses on the intrinsic benefit of having communities of developers improving a software codebase.

Enough with the history lesson and please, I do know that I glossed over that with a big hand wave. That is called a rough history.

The highest compliment you can pay any piece of open source software is to simply use it, because it’s worth using. The more you use it, the more that open source project becomes a part of the fabric of your life, your organization, and ultimately the world.

Isn’t that the greatest contribution of all?

If I read a book you wrote because I found it worth reading, have I made a contribution? Hardly! Apart from the contribution I paid at Amazon.com for the pleasure of reading the book, I am merely using something worth using. That is not a contribution, it is just good sense.

Now if I post a positive review on my blog, that would be a contribution.

The way I see it, Jeff’s right, there is no moral obligation to contribute to an Open Source project. However I am not quite sure the puppy analogy he mentions suggests that. At the risk of yet another bad analogy, allow me to propose one that works for me. I think of Open Source software as being like a nice set of flowers in a common space such as a courtyard. Nobody that lives around the common space owns the flowers, yet they all enjoy the presense of the flowers.

Fortunately, one or two volunteers tend to the flowers and the flowers thrive. Some flowers seem to do fine with very little care, others require lots of care. But everybody benefits and there is no cost, nor moral obligation to others to contribute to the upkeep of the flowers.

However, should the caretakers decide to stop tending to the flowers, the others certainly have no right to complain to the caretakers. And while it is true that in some cases, others may take up the slack and tend to the flowers, or other flowers might grow as replacements, if nobody takes up the cause, or if the new flowers are simply weeds, then everybody loses out. Including those who had the time, means, and even desire to help with the flowers, but just never thought to because someone else was taking care of it.

So while I do not think contributing to Open Source software is a moral obligation, I do think it is a worthy practical consideration. No offense to my homie, but I think it is Jeff who misunderstands the economics of open source. Minimum effort does not equate to free in cost.

For example, should you begin to rely more and more on some piece of Open Source software, consider the effort to replace the software (which might tack on a monetary cost for a proprietary replacement) and learn a new toolkit if development of the software dies out. Hardly a minimal effort.

True, a contribution in this situation is no guarantee that a project will succeed. But doesn’t the same risk apply to purchasing proprietary software? It certainly applied to contributing to a political party (if you were a Democrat in the last couple of elections).

And while it may be infeasible for a large portion of the audience (Jeff pulls the figure 99% out of his rear, which is probably close to the truth) to contribute the extravagance of a bug fix, for the remainder for whom it is feasible, it is certainly worth considering. Every contribution not only helps in a small way to keep the project viable, but it improves the software for your own purposes. It is an entirely selfish benefit.

So again, please do not confuse exhortations to contribute to Open Source as a claim for moral obligation. I honestly believe that those who contribute will benefit from the contribution as much as the recipients of the contribution, which is why I am such a big proponent for contributing.

If you have the means, why not water the flowers for a bit? There are many forms of contributing to an open source project. I list several on the Subtext contribution web page.