GPL和LGPL开源许可限制[关闭]


108

我在理解开源的使用权限时遇到麻烦。我读到某处GPL或LGPL强制要求使用GPL软件的软件也必须开源发布。我想创建一个使用一些开源图像识别库的应用程序。我可以出售此应用程序,还是必须开源?

谢谢!

Answers:


80

LGPL允许您在应用程序中使用和分发开源软件,而无需发布应用程序的源代码。

如果您选择随应用程序一起使用和分发GPL许可的开源软件,则GPL要求您发布应用程序的源代码。换句话说,您的应用程序还必须获得GPL许可。


14
请注意,LGPL指出使用的库必须是可替换的。因此,静态链接是不可能的。
Dykam

1
因此,“ DLL”(动态链接库)是合法的,对吗?
罗伯特·哈维,2009年

仅当您还提供该DLL的源代码以及必需的头文件或文档以便能够与应用程序的其余部分进行交互时,任何人都应该大量修改或从头开始重写该文件, DLL。
thomasrutter

49
  • GPL

    其他开发人员可以借用和修改代码,并将其重新分发为自己的项目的一部分,前提是他们的整个项目也已获得GPL许可。

    这样可以防止代码在专有软件中使用。

  • LGPL

    其他开发人员可以借用和修改代码,并将其作为自己的项目的一部分进行重新分发,前提是LGPL之下使用的部分已根据LGPL重新许可。允许项目的其他部分具有其他许可证。

    这允许将代码用于其他专有软件中。

LGPL有许多其他条件需要满足,以便能够将其分发到具有其他许可证的项目中。例如,对于任何最终软件的用户可以修改,重新编译或替换LGPL许可的软件部分,并将修改后的代码与同一软件一起使用。如果您要发布包含某些LGPL代码的专有软件,则满足此要求的一种方法是将LGPL代码放入一个单独的动态链接库中,并与您的软件一起分发重新编译LGPL所需的必要头文件和文档。仍然可以与提供的软件链接和使用。采取措施防止修改LGPL代码是不可接受的,例如使代码本身或API或头文件变得模糊。

请注意,LGPL与GPL兼容:您可以选择将代码“升级”为GPL,并根据我的第一个项目要点中的说明将其合并到GPL完全许可的项目中。但是,您不能走另一条路,将GPL许可的代码重新许可为LGPL。


30

IANAL,但概念相当简单。

首先,您和您的律师必须阅读GPLLGPL许可。其次,您应该阅读GPL常见问题解答。据我了解,您可以考虑以这种方式使用GPL / LGPL库:

  • 如果您与GPL或LGPL库动态或静态链接,则您已创建派生作品。
  • 如果您使用的是GPL库,并且与该库链接,则必须使用兼容许可证发行软件。
  • 如果您使用的是LGPL库,并且可以动态链接到该库,则不必使用兼容的许可证来发布软件,但是您仍然必须遵守LGPL。
  • 如果您使用的是LGPL库,并且与该库静态链接,则必须使用兼容的许可证发布软件。
  • GPL / LGPL许可证的意思是“免费”,如“言论自由”,而不是“免费啤酒”。您可以创建衍生作品并将其大量出售,但必须遵守GPL / LGPL。

29
“首先,您和您的律师必须阅读GPL和LGPL许可。” -立即杀死我
d512

10
“直截了当”。实际上如此简单,您只需要聘请律师来看看是否可以使用一些代码。这就是为什么开发人员永远不要使用GPL许可证的原因。
Womble

9

如果您将GPL代码剪切并粘贴或链接到您的应用程序中,则您的应用程序必须获得GPL许可,然后才需要释放该代码。

但是,您仍然可以出售您的应用程序和afaik,唯一的麻烦是您将源代码发布给了客户。

如果您链接的库是Lesser Gnu Public License又名LGPL,那么您不需要发布自己的应用程序代码,但是如果您修改了lgpl'd代码,则仍然需要发布所有修改。


“将源代码发布给您的客户”-真的吗?只给他们?我以为src必须公开可用?
relascope 2015年

我不是说英语的人,也不是律师。 gnu.org/licenses/gpl-faq.html#WhatDoesWrittenOfferValid指出,最有可能向有权访问该二进制文件的任何人提供源。并不是说任何人都可以请求源,而是说直接向您或您的直接客户提供二进制文件的任何人。
rasjani 2015年

直接将其声明给客户……“但是,如果您以某种方式向公众发布修改后的版本,则GPL要求您根据GPL将修改后的源代码提供给程序用户。”
relascope 2015年

7

GPL不禁止您出售软件。但是,您必须使软件可用的源。

使用的问题要复杂一些。GNU / Linux是根据GPL发布的。无论您的软件许可如何,都禁止您编写在Linux下运行的软件。但是,您不能将Linux与软件一起分发。库通常是一个问题,需要成为程序的一部分。这就是LGPL许可证的用途。您可以编译用gcc编写的ac程序(因此使用gcc的LGPL授权的运行时例程库),并且仍然可以不受GPL的限制发布软件。

我认为这是它的总要旨。但是,这绝不是任何法律建议。要获得法律建议,您必须聘请一位可以为您提供适合您特定情况的法律建议的认证律师。

希望这可以帮助。


3

GPL与LGPL的区别决定了您是否/不必将应用程序的源代码发布给拥有二进制副本的任何人。无论哪种方式,您仍然可以出售该应用程序。

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.