MIT vs GPL许可证[关闭]


122

MIT许可证是GPL兼容的。GPL许可证是否与MIT兼容?即我可以在GPL许可的产品中包含MIT许可的代码,但是我可以在MIT许可的产品中包括GPL许可的代码吗?

在我看来,MIT许可证和GPL之间的主要区别在于MIT不需要开源,而GPL则需要开源。那是对的吗?GPL比MIT许可证更具限制性吗?


1
en.wikipedia.org/wiki/MIT_License 该许可证也是GPL兼容的,这意味着...
Michael Petrotta 2010年

Answers:


76

在我看来,MIT许可证和GPL之间的主要区别在于MIT不需要开源,而GPL则需要开源。

正确-一般。你不,如果你使用GPL开放源代码的更改。您可以修改它并将其用于您自己的目的,只要您不分发它即可。但是...如果您确实分发了它,那么使用GPL代码的整个项目也会自动变为GPL。这意味着,它必须是开源的,并且接收者获得与您相同的所有权利-这意味着,他们可以周转并分发,修改,出售它,等等。其中将包括您的专有代码,不再是专有的-它成为开源。

与MIT的区别在于,即使您实际分发使用MIT许可代码的专有代码,也不必使代码开源。您可以将其作为封闭的应用程序分发,在该应用程序中代码是加密的或为二进制的。只要包含MIT许可通知,包括MIT许可的代码就可以加密。

GPL比MIT许可证更具限制性吗?

是的,非常如此。


16
我只能指出,GPL不会使软件“开源”。GPL下的软件免费(如在保护用户自由方面)。自由软件比开放软件更古老,更有意义。以下是有关差异的文章:gnu.org/philosophy/open-source-misses-the-point.html。谢谢
豪尔赫·奥尔皮内尔2014年

11
出于同样的原因,人们可能会认为MIT更具限制性,因为它不能保护用户的所有自由,并且可以导致软件私有化(=限制和用户失去对它的控制)。再次感谢
Jorge Orpinel 2014年

3
@tcurdt为什么这不是谈论自由的“正确地方”?为什么要进行自我审查?不,不幸的是,这不是“免费”的意思。甚至没有“公开”的意思。只是为了澄清MIT和GPL许可都不允许您“对其进行任何操作”。只有没有许可证的代码才能属于该类别。干杯
豪尔赫·奥尔皮内尔2014年

3
再次错误,这是应该为stackoverflow.com/help/on-topic提供的stackoverflow。有人认为这是题外话,但事实并非如此。无论如何,我都有言论自由,这是一种公共空间,所以...是的。您就是无法忍受错。实际上,我会尽力帮助您和其他读者。无论如何,祝您好运
豪尔赫·奥尔皮内尔

8
@JorgeOrpinel“只有没有许可证的代码才能属于该类别。” 这是非常非常错误的,没有许可证的代码是专有的/“保留所有权利”。如果您四处散布并散布他人未经许可制作的代码,则可能会冒很多法律麻烦。您说您正在尝试“帮助您和其他读者”,但是让读者提起诉讼并不完全有帮助。仅供参考。
分号

45

我可以在MIT许可的产品中包含GPL许可的代码吗?

您可以。GPL和MIT一样都是免费软件,两个许可证均不限制您将代码合并在一起,因为“ include”始终是双向的。

在组合作品的版权(即两个或多个作品构成一个作品)中,一个作品是否比另一个作品“更大”并没有多大区别。

因此,如果您在MIT许可的产品中包含GPL许可的代码,那么您也将同时在GPL许可的代码中包含MIT许可的产品。

作为第二意见,OSI列出了两个许可证(MIT和GPL)的以下标准(更详细):

  1. 免费重新分配
  2. 源代码
  3. 衍生作品
  4. 作者源代码的完整性
  5. 不歧视个人或群体
  6. 不歧视领域
  7. 牌照分配
  8. 许可不得特定于产品
  9. 许可证不得限制其他软件
  10. 许可证必须是技术中立的

两者都允许您创建组合作品,而这正是您所要求的。

如果将两部作品合并视为衍生作品,那么这两个许可证也不受限制。

并且两个许可证均不限制分发软件。

在我看来,MIT许可证和GPL之间的主要区别在于MIT不需要开源,而GPL则需要开源。

GPL并不要求您仅因为进行了修改就释放它们。那不准确。

您可能会将此与GPL下的软件发行混合在一起,而这并不是您直接询问的。

是正确的-GPL比MIT许可证更具限制性吗?

这就是我的理解:

就分发数量而言,您需要将整个程序包置于GPL下。麻省理工学院仍然可以使用该软件包中的MIT代码,而GPL如果不受更高权利的限制,则整个适用于该软件包。

“限制性”或“限制性较高” /“限制性较小”在很大程度上取决于观点。对于软件用户而言,MIT可能会导致其软件的限制要比GPL下提供的软件更为严格,甚至有些人称GPL现在更为严格。具体来说,该用户会称MIT为限制性更高。这么说只是主观的,不同的人会给您不同的答案。

由于谈论不同许可的限制只是主观的,因此您应该考虑要实现的目标:

  • 如果您想限制修改的使用,那么MIT可以比GPL更加严格地限制发布,这可能就是您想要的。
  • 如果要确保分发软件的用户不会受到软件自由度的太大限制,那么您可能希望使用GPL而不是MIT发行。

只要您是作者,就可以决定。

因此,有史以来最严格的人是作者,无论有人选择哪种许可;)


1
不完全确定“该软件包中的MIT代码仍将在MIT下提供”。一个GPL + MIT项目应该上交一个开源项目,包括MIT部分。另一方面,LGPL对整个项目的干扰较小。
magallanes

13
尽管您稍后会在回答中弄清楚,但从说“您可以”将GPL许可的代码包含在MIT许可的项目中开始,这是非常误导的。最初由MIT许可的项目一旦包含仅在GPL下可用的代码,就不能再以MIT许可的形式进行整体分发
antinome

3
声称限制性是主观的也具有误导性。问“我对所获得的这些文件可依法采取什么行动?”是一个合理且非主观的问题。在GPL中,这组操作实际上是麻省理工学院应采取的措施的适当子集。
2012年

1
@hakra:不可能将GPL许可的代码包含在MIT许可的项目中,因为即使您不分发,所得的整体也不再是MIT许可的。(如果是,那么MIT许可的条款允许您分发它!)
antinome 2012年

9
tl; dr:MIT许可的应用程序可以包含GPL代码,但生成的应用程序不是MIT许可的。
antinome

16

您认为GPL比MIT许可证更具限制性。

您不能在MIT许可产品中包含GPL代码。如果您分发包含GPL和MIT代码的组合作品(在某些特殊情况下,例如“单纯聚合”除外),则该分发必须符合GPL。

您可以在GPL产品中包含MIT许可的代码。整个组合工作必须以符合GPL的方式分发。如果对代码的MIT部分进行了更改,则在分发包含GPL和MIT代码的应用程序时,将需要发布这些更改的源。

如果您是GPL代码的版权拥有者,那么您当然可以选择以MIT许可证发布该代码-在这种情况下,这是您的代码,并且可以根据需要发布任意数量的许可证。


3
除非项目具有双重许可,例如jquery。
buggedcom 2011年

7
@buggedcom-您可以对MIT许可下的部件进行双重许可,但不能对MIT / GPL组合库进行双重许可-必须仅在GPL下许可。(您不能获得GPL许可的零件并根据MIT许可重新许可它们,因为这违反了GPL条款)。就jQuery而言,该代码的版权所有者是在双重许可下发布的,因此这不是问题,但是如果他们从其他地方“借用”了某些GPL代码,则他们将不再能够MIT许可组合的作品。
Mark H

AFAIK并非如此。根据FSF的说法,GPL与MIT许可证兼容[1]不幸的是,这并没有改变项目本身不再完全由MIT许可证覆盖的事实,这是人们通常期望的。如果不发布代码,您将无法再在商业环境中整体使用该项目。为了避免这种混淆,最好不要在MIT许可的项目中包含GPL代码。那你做不到,但这是错误的。[1] gnu.org/licenses/license-list.html#SoftwareLicenses
tcurdt 2011年

...但是我想这取决于您对“产品”的定义
tcurdt 2011年

2
MIT许可产品(也许最好用“应用程序”一词)不能包含GPL代码。您可以将GPL代码添加到MIT产品中,但是最终的应用程序只能在GPL许可下分发。我从未见过有人将只能根据GPL条款发布的应用程序描述为“ MIT许可产品”。如果许可证不是“兼容的”,则您根本无法制作组合作品-兼容的事实意味着您可以制作可以分发并获得GPL许可的组合作品。
JosephH 2011年

5

IANAL,但正如我所见....

虽然您可以结合使用GPL和MIT代码,但GPL却很脏。这意味着该软件包作为一个整体受到了GPL的限制。由于限制更严格,您不能再在商业(或封闭源)软件中使用它。这也意味着,如果您有MIT / BSD / ASL项目,则不想将依赖项添加到GPL代码中。

添加GPL依赖关系不会更改您的代码许可证,但会限制人们可以使用您的项目工件。这也是ASF不允许其项目依赖GPL代码的原因。

http://www.apache.org/licenses/GPL-compatibility.html


1
+1实际上,Microsoft完美地指出了这个问题,GPL具有病毒性,因为它使每个项目都处于开源状态。
magallanes

10
问题。GPL在设计上是病毒式的。它旨在供希望免费提供其代码供其他人随意使用的人使用,而且还要求其他发布该软件副本或衍生产品的人以相同的方式尊重用户。GPL与用户有关。这不是公司通过国家强制垄断来使利润最大化的事实,所以它具有递归性实际上是它的美丽和力量,而不是微软可以“精确定位”的“问题”。无需任何特殊的见识即可认识到GPL具有病毒性-维基百科就足够了。
卡尔·史密斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.