open source

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:

  • FOSS (Free / Open Source)
  • Prevents incorporating into closed-source software
  • 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.


    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.


    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.


    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).

    链接地址: http://www.djcxy.com/p/13946.html

    上一篇: 转售根据GPL,MIT授权的开源代码

    下一篇: 开源