Ask Slashdot: Comparing Open Source Licenses
El-ahrairah asks:
"I've been working on several projects over
the course of the last few years, each of
which have reached the stage where we are
planning their release to the public under
Open Source licenses. I have done quite a
bit of research into various OS models, but
I am nevertheless no legal scholar. what I
am wondering is this: what are the pros and
cons of various licenses, are any
YAOSL (yet another Open Source licence)
models valuable, does a line by line
comparison of longstanding and new licenses
exist?"
Many people happen to like the BSD credit where due clause.
If someone takes my code and sells it as part of their product, the *least* they can do is be gracious enough to acknowledge my contribution to what they're selling.
What the BSD license basically does is make this a requirement. Is this obnoxious? Well, if someone was going to do the right thing anyway and give credit to the people who actually wrote the code, then this creates no real additional burden. If someone was going to *not* provide credit where it's due, well, not giving any recognition either credit or financial to the people who's code you're selling is pretty obnoxious, don't you think?
Also, you misinterpreted the wording of this clause in a major way. It says:
All advertising materials mentioning features or use of this software must display the following acknowledgement
Suppose I write code for a specific cool-neat-feature and you put it in your product. This clause does *not* require that all advertisements for your product contain the credit statement. It only requires that advertisements that specifically mentions my code or the use of my code acknowledge that it's my code. That's a big difference.
Basically, software licenses in free software are a form of social engineering. Your choice of license should steer people towards doing what you really want them to do.
Some examples of goals to consider:
* Credit given to you. Beyond simply asking people to give credit where it's due, you also might want to have a way to refute when other people claim to have written your code. (it happens)
* Integration into commerical products. Some people want this, for example in order to get the code/feature/technology more widely used. Some people don't want this, for example to prevent others from making a profit off your work.
* Control over the "official" distribution. Some people want to make sure that the software named "foo" is theirs; if someone else creates a derivative, they should name it something other than "foo" so as to not confuse things and potentially hurt your reputation.
* As a general rule, you want to disclaim everything you can and even things you can't. Otherwise some scumbag will sue you for their misuse of your free software.
The first item basically summarizes the goals of the BSD license: prevent others from claiming that they instead wrote the code, and to require others to give credit where it's due. The BSD license is very typical of licenses that allow commercial products to take your code.
The second item's other side basically summarizes the goal of the GPL: preventing your free code from becoming someone else's non-free code and someone else's profit.
The third item basically summarizes the goal of the Artistic license: prevent bozos from releasing branch versions of your code with the same name and making you look bad in the eyes of users who confusedly thought their version was your program.
Reputation protection.
There are a whole lot of yet-another-licenses out there. Most of them suck and should be avoided. In particular, they have served to greatly confuse what used to be a relatively simple thing. Use a standard license if at all possible. Really. Better to have slightly less optimal legal terms that are well understood than optimal legal terms that people can't decipher. By the time lawyers are reading the licenses, something is usually wrong.
Many of the new generation of "open source" licenses are "you have to be free, but we don't have to be free" licenses, which might also be phrased as "we want other people to write code for our product for free" licenses. Don't go there.
The best license choices are (in no particular order) the GPL, LGPL, XFree86 and fixed BSD license.
The GPL
The GNU General Public License is used for Linux and GCC. It allows anyone to make copies of your code--and change things as they wish--but it doesn't allow one user to take these rights away from another user. Use the GPL if you want every user of your program to always have source available.
The LGPL
The GNU Lesser (or Library) General Public License is like the GPL, but allows proprietary software to link against a free library. The Linux C library uses the LGPL. Use this if you want your code to remain free, but don't care about who uses it in their program.
The XFree86 License
This license allows anybody to do anything with your code, but it tries to prevent people from suing you. For example, a software company could take your program and turn it into a proprietary product without giving you any money. The X Window System uses this license.
The BSD License
The BSD license is sort of like the XFree86 license, but older versions had a bad bug. The older BSD licenses required certain phrases to appear in advertisements for the software. Because of this, it used to be illegal to advertise a NetBSD CD-ROM without giving credit to 75 people in every ad. Newer versions of the BSD license often remove the obnoxious advertising clause. If you want to use the BSD license, it's probably safer to use the XFree86 license instead--they both do the same thing, but no version of the XFree86 license contains bugs.
Custom Licenses
Avoid these if at all possible. Writing new open source licenses is very, very difficult and most people (even good lawyers) screw it up. The licenses listed above should cover most possibilities, and each one is known to work.
I was thinking about OSS licenses after reading the "Restrictively Unrestrictive" article. The mother of a friend of mine is a published SF/fantasy author; some other friends of hers include a band on an indy label. As a result, I've picked up some stories here and there about the troubles artists sometimes have trying to get artistic integrity and a decent paycheck to coexist.
When these two topic threads collided in my brain, the idea that sprung forth was this: Essentially the FreeBSD license, but with an extra clause stating that if someone wants to incorporate part of the licensed code into a product to be sold for money, they need the programmer's permission to do so. The programmer reserves the rights under the license to negotiate conditions for the codes use: if he likes the company and feels charitable, he can just tell them to go on and do it; if he has ethical problems with the company or what they might do with the code, he could flat out refuse; or for various points between, he could negotiate payment for the code, either as a flat fee or a royalty (knowing more about the lit. and music business than the software business, I have no idea if the royalty thing would ever happen).
Also, it should be clearly stated that previous arrangements for commercial distribution IN NO WAY set a precedent for future agreements (this would hopefully protect the programmer when he tells WeSaySo Inc. that he wants sagans of dollars for his code, and they yell and scream about how he let Applix use it all for just a free commecial-use license).
Thoughts, anyone? Do I have a good idea here, or should I just lay off the crack?
"It's 106 miles to Chicago, we've got a full tank of gas, half a pack of cigarettes, it's dark, and we're wearing sungla