views:

238

answers:

6

Situation:

I want to pick a license for an open-source project.

Having considered GPL vs BSD/MIT, I prefer GPL because it protects the open-source-ness of software. However, I prefer something less restrictive.

I'm particularly amused at the fact that different versions of GPL are not compatible!!

I want the software to stay FOSS, but I don't want licensing issues to stand in the way of making it possible to incorporate the source-code into other FOSS projects.

Requirements:

  1. FOSS (Free / Open Source)
  2. Prevents incorporating into closed-source software
  3. Doesn't prevent incorporating into open-source software that has another license

Is there such a license?

Potential issues:

I know that #3 and #2 might seem contradictory, but I think there are ways around it, for instance, word the license so that:

  • If you incorporate into FOSS software that uses gpl-like* license, you may re-license to that license
  • Otherwise, you may not change the license

Where gpl-like is any FOSS license that requires the whole project to be under the same license.

Please note:

This question is about whether or not there is such a license at all. It's not an attempt to create one.

+1  A: 

There's no way to do what you want with one license because anything that stops someone from relicensing it to a proprietary license will do the same for open source licenses. I suggest releasing under multiple licenses, and then add a section telling people to contact you if they want to use the code under a license that's not listed.

EDIT: By the way, the GPL is compatible with quite a few licenses. Also, (I think) if someone wants to release something based on your code, they're required to release their changes under the GPL, but there's nothing stopping them from dual-licensing also. So for example, if I used your source code, I would have to release my changes under the GPL, but I could also release my changes under the BSD license as well (without changing the license of your code).

Brendan Long
"GPL is compatible with quite a few licenses" isn't telling the whole truth.
pst
GPL is compatible with many licenses in the "in" direction, meaning that you can use software under license X in GPL software. It is totally incompatible for the "out" direction, e.g. software under GPL used in software with license X. I personally had to write a set of executables to interface my Artistic License code with a library under GPL, because using the library would force me to release my code under GPL as well. In other words, you are given freedom, provided that it fits _our_ definition of freedom. Thank you, I build my wrappers.
Stefano Borini
This does not mean that I am against GPL. Just that it depends on what you build. If you want to develop a community standard, you cannot force others to accept the terms of such a restrictive license.
Stefano Borini
+7  A: 

Please, for heaven's sake, don't create new licenses (or do anything that may create new ones); we have enough license proliferation already. GPL is more or less the standard for copyleft free-software licenses, and then there are a bunch (mainly BSD/MIT) of permissive free-software licenses. Your requirement (2) rules them out, which leaves only copyleft: and that's GPL.

There are no other "GPL-like" licenses in significant use that you need to worry about allowing use of your code under, so you're trying to solve a non-existent problem.

If the problem does come into existence, and there is a project under another license that wants to use your code, you can get all your code's contributors to explicitly allow ("dual-license") that usage, anyway.

ShreevatsaR
True, there are no other GPL-like licenses, but there are different versions of the GPL itself.
hasen j
If you mean GPLv2 and GPLv3, then using GPLv2 with the standard "or, at your option, any later version" clause will take care of both.
ShreevatsaR
+1  A: 

You can look at how CeCILL does it, basically be enforcing its own license plus allowing you to use GPL instead.

You can review the various GPL-compatable licenses here and pick one (if you can use it), or pick an incompatable one and dual license it, but that seems less useful, as you can't use other GPL software in the project in that case.

If you are writing something serious, though, don't try to roll your own unless you get competent legal advice. This stuff is complicated with lots of hidden gotchas that have been well worked out with the GPL.

Yishai
A: 

Artistic License 2.0 maybe does what you need. It keeps you the freedom to relicense the software under a different agreement if you want, and you keep control of the official version of a software.

Stefano Borini
The GPL doesn't prevent you from releasing it under other licences. You still own the code. You can licence is as many times as you want.
Kenny Winker
@Kenny, although GPL doesn't restrict you from releasing code you own however you like, if you incorporate 3rd party GPL in your project, you cannot license that code under something else.
Yishai
A: 

Prevents incorporating into closed-source software

Doesn't prevent incorporating into open-source software that has another license

Which other license are you thinking of, that is copyleft but not GPL?

Whatever it is, dual-license your project under both that license and GPL.

You're onto a loser trying to make up a meta-license where software can be automatically re-licensed under “some license similar in spirit to GPL”. Instead, release it under multiple possible open source licenses at once, allowing the downstream projects to pick the one they want that matches their own licensing scheme.

bobince
+1  A: 

You should just dual (or triple, or n-tuple) license it under whichever licenses you feel comfortable releasing it under. A dual license is one where you say that the user gets to choose which license to use the program under.

The GPL is very frequently used under a dual license; most programs are licensed under "GPLv2 or later", which at this point means GPLv2 or GPLv3. There's also a lot of software which is dual licensed under the GPL and the MPL or similar license (which is actually usually a many way license, as there's usually an "or later" for all of the licenses involved).

Of course, the MPL is a weak copyleft license (like the LGPL), not strong copyleft like the GPL. So, if you dual license under the MPL, your code may be used in other proprietary programs, though modifications to your code itself must be released.

The problem with what you suggest in your question, "If you incorporate into FOSS software that uses gpl-like* license, you may re-license to that license. Otherwise, you may not change the license, Where gpl-like is any FOSS license that requires the whole project to be under the same license" is that most of the license conflicts of interest are not with such GPL like licenses (are there any other strong copyleft free software licenses other than the GPL), but instead with MPL like licenses; that is, the GPL requires the whole program to be distributed under the terms of the GPL, while the MPL requires that that portion be distributed under the MPL without additional restrictions, causing a conflict. And if you allow it to be distributed under the MPL, then people can use it in a proprietary program, as long as the MPL licensed portion remains free.

So, you have to ask yourself what you are interested in. Are you interested in your program or library only ever being used in free software? Then use the GPLv2 or later for maximum compatibility. Are you interested in your library always remaining free, but want it to be able to be linked into GPL-incompatible programs (including, potentially, proprietary programs)? Then use the LGPL, MPL, or similar license, or a dual or triple license (such as GPLv2 or later, MPL v1.1 or later, or LGPL v2.1 or later like most Mozilla source code is licensed). Do you want anyone to be able to do whatever the heck they want? Then use the X11/MIT license (shorter and simpler than BSD), or the WTFPLv2 (the shortest, most clear license I've ever seen).

And if you're feeling really generous, you can release the code into the public domain like SQLite, which comes with a blessing rather than a license in each file:

May you do good and not evil
May you find forgiveness for yourself and forgive others
May you share freely, never taking more than you give.

I always find that much more pleasant than the long, tedious, and scary legal notices involved in most licenses.

Brian Campbell