Monday, April 19, 2010

Why I Don't GPL

What I am about to write may be controversial with some of my friends in the open source community, but it needs to be said.

For the most part, I won't make substantial contributions to any GPL projects anymore, as a matter of principle. I think that the license is, in many cases, self-defeating, and only delivers the highest-quality code for certain types of projects, under certain ideal circumstances.

Why is this?

To put it simply, the people you probably most want contributing to your project are developers who really understand the domain, and are going to give you professional-quality code contributions.

Many companies do not use GPL code, because they do not feel that they have the luxury of GPLing their own code. This is a practical truth, whether you agree with their reasons or not. Many of your would-be expert contributors work for such companies, and are bound by non-compete agreements that would prohibit them from contributing to your project in their spare time. If their employers aren't using your code, then they can't contribute to it.

In short, if you GPL your code, you may be missing out on some of your best contributors.

If I wanted to work on a piece of game-related code, and it was under the GPL -- in practical terms -- almost nobody will use it and no professional game developers will contribute to it, no matter how good or useful it is. I mean, really, it sounds like a horrendous waste of time to me.

One great success story of open source game development technology is the Ogre3D engine. This is an open source 3D graphics engine which is arguably as good as some of the expensive commercial ones I have used. It was originally released under the GPL, many years ago, and has gradually become more permissive over time (GPL -> LGPL -> MIT). Upon the transition to the MIT license, the project maintainer, Steve Streeting, notably observed the following:
While not requiring modified source to be released might initially seem like giving up an important motivator to contribute code back to the community, we’ve noticed something in recent years: 99% of useful code contributions come from people who are motivated to participate in the project regardless of what the license tells them they have to do. It’s our experience that a certain percentage of the user community will always participate and contribute back, and therefore encouraging adoption via simpler licensing is likely to result in more contributions overall than coersion via complex and restrictive licensing does. In addition, people who are internally motivated to participate tend to provide much higher quality and more usable contributions than those who only do it because they are forced to.
This is very consistent with my own observations of open source projects. I am curious whether others have seen the same.

Now, mind you, everything I just said can depend a lot on the domain of a given project, and also whether something is an API or standalone, and a number of other factors. Linux, for example, seems to be a perfect-storm of GPL-working-as-intended. However, there aren't a lot of professional operating systems developers in the world, and many of them work for companies that sell competing products, so one can make a fair argument that Linux probably gets the best contributors they are going to get, regardless of how permissive their license is.

2 comments:

Tony Lovasco said...

The problem with your argument is that the purpose of using the GPL for a project's license isn't to gather the most developers -- it is to protect the freedoms to use, modify, and redistribute the software and its source code. More permissive licenses like the MIT or BSD-style licenses allow for the code to get locked up in proprietary software that does not allow modification or distribution.

While you might end up with a better written program using such permissive licenses (due to more developers willing to help), it is entirely possible that the end result will be something that isn't close to open source or Free Software.

Look at MacOS. It's based on a whole slew of software that was licensed under permissive licenses. While Apple does contribue a bit back to these projects, much of their "contributions" are effectively unusable on their own. Try running Darwin and see how much it has in common with MacOS and you'll see what I mean.

Unknown said...

Thanks for the post, Tony.

Honestly, when I share the source for software I have written, the only reason I don't put it in the public domain is because that doesn't indemnify me in any way. If I wanted to tell people what to do with my source, I wouldn't be putting it out there, in the first place.

Once it is in the wild, it can't be "locked up," per se. What is in the wild tends to stay in the wild. If people want to squirrel away their own modifications, then fine. The more they do this, the harder it is to merge community improvements back in. Eventually, it becomes a different product. That doesn't bother me, with respect to my own contributions -- though, I can understand why some people might feel differently. We can work on different projects.