On licenses

Jul 16, 2004 23:52

I haven't really been thinking about OSS licenses any more lately, but my thoughts seem to have gelled recently, as much as I think they ever will.

I think wasted energy is wrong, probably in a moral sense. If anyone puts an effort toward doing something that could have been accomplished more easily, something is wrong with the world. I don't mean to imply that things like raking sand gardens are wrong: their purpose is not to make pretty patterns in sand. Also, wasted effort isn't a huge evil; certainly smaller than avoidable pain or death. Now, if I want to accomplish something with software (and I frequently do), and someone else has already done the same thing, I'm wasting energy if I write it again. Similarly, if I write a library, and someone wants to do the same thing, I am morally wronging them if I deny them the use of it.

So, what license do I have to use for my software? Closed source is clearly out. So I have a general choice between BSD and GPL-style licenses. BSD-style licenses tend to require that any copyright notice stay intact but otherwise put very few restrictions on how other people use the code. Here, I'm including the public domain under BSD-style licenses even though they're not exactly the same.

The GPL requires that anyone who uses my code also give everyone the same access to their code. This has the practical implication that many other people are forbidden from using my code. Again, I'm grouping other restrictive licenses with the GPL, particularly ones that also include some restrictions on patents. The GPL is just the best-known license in this class.

On the one hand, a BSD license allows everyone else to use the software, while GPL excludes some people, usually closed-source developers. On the other hand, the people the GPL excludes are those who are acting immorally anyway. This brings up issues of how much wrong I can do to fight wrong-doers. The purpose of the GPL is to coerce people into doing right. I'm generally doing less wrong than they are, since they can still see my code and incorporate my ideas; they just have to waste the effort of writing and debugging their code. But I'm still compromising my ideals in order to fight theirs.

On the third hand, some of the people who can't use my code are other open source developers, who have done nothing more wrong than to pick a different restrictive license that is subtly incompatible with my choice. Sure, I can't use their code either, so I'm just getting them back; but in this case, the GPL has completely missed its target.

In the end, despite this argument that seems to prove that I ought to always use a BSD-style license (or just dump my work in the public domain), I still lean toward using the GPL or LGPL. I guess the thought of someone using my work and then keeping theirs secret annoys me enough that I'm willing to slightly compromise my morals. Anyway, they can always release their code in order to use mine. And the GPL is by far the most popular restrictive license, so I'm not hurting very many people. (This may change in a year or two when the (incompatible) GPLv3 is released.)

Always, of course, I must work for the release of any corporate code I work on.
Previous post Next post
Up