4

情况:

我想为一个开源项目选择一个许可证。

在考虑过 GPL 与 BSD/MIT 之后,我更喜欢 GPL,因为它保护了软件的开源性。但是,我更喜欢限制较少的东西。

我对不同版本的 GPL 不兼容这一事实感到特别好笑!!

我希望软件保留 FOSS,但我不希望许可问题妨碍将源代码合并到其他 FOSS 项目中。

要求:

  1. FOSS(免费/开源)
  2. 防止合并到闭源软件中
  3. 不会阻止合并到具有其他许可证的开源软件中

有这样的执照吗?

潜在问题:

我知道 #3 和 #2 可能看起来是矛盾的,但我认为有一些方法可以解决它,例如,使用许可字词,以便:

  • 如果您将 FOSS 软件合并到使用类似 gpl* 许可的软件中,您可以重新许可该许可
  • 否则,您不得更改许可证

其中 gpl-like 是任何要求整个项目都处于相同许可证下的 FOSS 许可证。

请注意:

这个问题是关于是否有这样的许可证。这不是试图创造一个。

4

6 回答 6

5

看在上帝的份上,请不要创建新许可证(或做任何可能创建新许可证的事情);我们已经有足够的许可证扩散。GPL 或多或少是 Copyleft 自由软件许可证的标准,然后有一堆(主要是 BSD/MIT)许可的自由软件许可证。您的要求 (2) 将它们排除在外,只剩下 copyleft:这就是 GPL。

没有其他大量使用的“类似 GPL”的许可证您需要担心允许使用您的代码,因此您正在尝试解决一个不存在的问题。

如果问题确实存在,并且有另一个许可证下的项目想要使用您的代码,那么无论如何,您都可以让所有代码的贡献者明确允许(“双重许可证”)该使用。

于 2009-11-17T03:34:10.863 回答
4

您应该只根据您愿意发布它的任何许可证对其进行双重(或三重或 n 元组)许可。双重许可证是您说用户可以选择在哪个许可证下使用该程序的许可证。

GPL 经常在双重许可下使用;大多数程序都在“GPLv2 或更高版本”下获得许可,此时意味着 GPLv2 或 GPLv3。还有很多软件是在 GPL 和MPL或类似许可下双重许可的(实际上通常是多路许可,因为所有涉及的许可通常都有“或更高版本”)。

当然,MPL 是弱 Copyleft 许可证(如 LGPL),而不是像 GPL 那样的强 copyleft。因此,如果您在 MPL 下获得双重许可,您的代码可能会在其他专有程序中使用,但必须发布对代码本身的修改。

您在问题中建议的问题,“如果您将使用 gpl-like* 许可证的 FOSS 软件合并,您可以重新获得该许可证的许可。否则,您可能不会更改许可证,其中 gpl-like 是任何 FOSS许可证要求整个项目都在同一个许可证下”是大多数许可证的利益冲突不是与类似 GPL 的许可证(除 GPL 之外还有其他强大的 Copyleft 自由软件许可证),而是与类似 MPL执照;也就是说,GPL 要求整个程序按照 GPL 的条款分发,而 MPL 要求该部分按照 MPL 分发,没有额外的限制,造成冲突。如果你允许它在 MPL 下分发,那么人们可以在专有程序中使用它,

所以,你必须问问自己你对什么感兴趣。你是否对你的程序或库只在自由软件中使用过感兴趣?然后使用 GPLv2 或更高版本以获得最大的兼容性。您是否对您的库始终保持免费感兴趣,但希望它能够链接到与 GPL 不兼容的程序(可能包括专有程序)?然后使用 LGPL、MPL 或类似许可,或者双重或三重许可(例如 GPLv2 或更高版本、MPL v1.1 或更高版本,或者 LGPL v2.1 或更高版本,就像大多数 Mozilla 源代码已获得许可一样)。你希望任何人都能够为所欲为吗?然后使用X11/MIT许可证(比 BSD 更短更简单)或WTFPLv2(我见过的最短、最清晰的许可证)。

如果你觉得非常慷慨,你可以将代码发布到公共领域,比如SQLite,它带有祝福而不是每个文件中的许可证:

愿你行善不作恶
愿你为自己找到宽恕并原谅他人
愿你自由分享,从不索取超过你给予的。

我总是觉得这比大多数许可证中涉及的冗长、乏味和可怕的法律声明要愉快得多。

于 2009-11-17T05:45:33.813 回答
1

没有办法用一个许可证做你想做的事,因为任何阻止某人将其重新授权为专有许可证的东西都会对开源许可证做同样的事情。我建议在多个许可证下发布,然后添加一个部分,告诉人们如果他们想在未列出的许可证下使用代码,请与您联系。

编辑:顺便说一句,GPL 与很多许可证兼容。此外,(我认为)如果有人想根据您的代码发布某些内容,他们需要根据 GPL 发布他们的更改,但也没有什么能阻止他们获得双重许可。例如,如果我使用您的源代码,我将不得不在 GPL 下发布我的更改,但我也可以在 BSD 许可证下发布我的更改(无需更改代码的许可证)。

于 2009-11-17T03:26:00.637 回答
1

防止合并到闭源软件中

不会阻止合并到具有其他许可证的开源软件中

您还在考虑哪个其他许可证,即 copyleft 但不是 GPL?

不管它是什么,在该许可和GPL下对您的项目进行双重许可。

您正在尝试制作一个元许可证,其中软件可以根据“在精神上类似于 GPL 的某种许可证”自动重新许可,这是一个失败者。相反,一次在多个可能的开源许可下发布它,允许下游项目选择他们想要的与他们自己的许可方案相匹配的一个。

于 2009-11-17T05:05:41.460 回答
1

你可以看看CeCILL是怎么做的,基本上是强制执行它自己的许可证,并允许你使用 GPL。

您可以在此处查看各种与 GPL 兼容的许可证并选择一个(如果您可以使用它),或者选择一个不兼容的许可证并对其进行双重许可,但这似乎不太有用,因为您不能在项目中使用其他 GPL 软件那个案子。

但是,如果您正在写一些严肃的东西,除非您获得合格的法律建议,否则不要试图自己动手。这些东西很复杂,有很多隐藏的问题,这些问题已经用 GPL 很好地解决了。

于 2009-11-17T03:42:51.927 回答
0

Artistic License 2.0或许可以满足您的需求。如果您愿意,它使您可以自由地根据不同的协议重新许可软件,并且您可以控制软件的正式版本。

于 2009-11-17T04:08:14.200 回答