Open source GPL和LGPL开源许可限制

Open source GPL和LGPL开源许可限制,open-source,licensing,Open Source,Licensing,我在理解开源的使用权限方面遇到了困难。我在某个地方读到,GPL或LGPL强制要求使用GPL软件的软件也必须是开源的。我想创建一个使用开源图像识别库的应用程序。我可以出售这个应用程序吗?还是它必须是开源的 谢谢 LGPL允许您在应用程序中使用和分发开源软件,而无需发布应用程序的源代码 如果您选择随应用程序一起使用和分发GPL许可的开源软件,GPL要求您发布应用程序的源代码。换句话说,您的应用程序还必须根据GPL获得许可。GPL与LGPL的区别决定您是否必须向任何拥有二进制文件副本的人发布应用程序的

我在理解开源的使用权限方面遇到了困难。我在某个地方读到,GPL或LGPL强制要求使用GPL软件的软件也必须是开源的。我想创建一个使用开源图像识别库的应用程序。我可以出售这个应用程序吗?还是它必须是开源的


谢谢

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


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

GPL与LGPL的区别决定您是否必须向任何拥有二进制文件副本的人发布应用程序的源代码。无论哪种方式,您仍然可以销售应用程序。

GPL并不禁止您销售软件。但是,您必须为软件提供源

用法的问题稍微复杂一点。GNU/Linux是在GPL下发布的。没有任何东西禁止您编写在Linux下运行的软件,无论您的软件的许可证如何。但是,您不能将Linux与软件一起分发。对于需要成为程序一部分的库来说,这通常是一个问题。这就是LGPL许可证的用途。您可以编译使用gcc编写的c程序(因此使用gcc中LGPL许可的运行时例程库),并且仍然可以在不受GPL限制的情况下发布软件

我认为这是它的总的要点。然而,这并不是以任何方式提供法律咨询。对于法律咨询,您必须聘请一名认证律师,该律师可以根据您的具体情况为您提供法律咨询


希望这能有所帮助。

IANAL,但概念相当简单


首先,您和您的律师必须阅读许可证和执照。第二,你应该读这本书。据我所知,您可以这样考虑使用GPL/LGPL库:

  • 如果您动态或静态地链接到GPL或LGPL库,那么您已经创建了衍生作品
  • 如果您使用的库是GPL,并且您与该库链接,那么您的软件将具有
  • 如果您使用的库是LGPL,并且动态链接到该库,则您的软件不必使用兼容的许可证发布,但您仍然必须遵守LGPL
  • 如果您使用的库是LGPL,并且静态链接到该库,则必须使用兼容的许可证发布您的软件
  • GPL/LGPL许可证的意思是“免费”,如中所示。你可以创建一个衍生作品并以高价出售,但你必须遵守GPL/LGPL

如果您在应用程序中剪切、粘贴或链接GPL代码,您的应用程序必须获得GPL许可,然后您需要发布代码


但是,您仍然可以销售应用程序和afaik,唯一的义务是向客户发布源代码

如果您链接的库是较小的Gnu公共许可证(也称为LGPL),则您不需要发布自己的应用程序代码,但如果您修改了LGPL的代码,则仍然需要发布所有修改。

  • GPL

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

    这将防止在专有软件中使用代码

  • LGPL

    其他开发人员可以借用和修改代码,并将其作为自己项目的一部分重新分发,前提是LGPL下使用的部分(包括任何修改)根据LGPL重新获得许可。允许项目的其他部分拥有其他许可证

    这允许在其他专有软件中使用代码

需要注意的一点是,LGPL是一个比GPL本身更长、更复杂的许可证,因为它包含GPL的全文,然后向其中添加了其他条款

LGPL中的许多附加条款指定了需要满足的条件,以便能够在具有其他许可证的项目中分发代码。例如,不仅必须向用户提供LGPL下部分的源代码,而且成品软件的用户必须能够修改、重新编译或替换LGPL下许可的软件部分,并将此修改后的代码与相同的软件一起使用。如果您正在发布包含某些LGPL代码的专有软件,满足此要求的一种方法是将LGPL代码放入单独的动态链接库中,并与您的软件一起分发重新编译LGPL部分所需的必要头文件和文档,以使其仍然可以按照提供的方式与软件链接和使用。不接受采取措施防止修改LGPL代码,例如混淆代码本身或API或头文件


请注意,LGPL与GPL兼容:如果您愿意,可以选择将代码“升级”为GPL,并将其合并到完全GPL许可的项目中,如我的第一个要点所述。但是,您不能选择另一种方式,将GPL许可代码重新许可为LGPL。

注意,LGPL声明所使用的库必须是可替换的。因此,静态链接是不可能的。所以“DLL”(动态链接库)是合法的,对吗?只有当您还提供该DLL的源代码,以及所需的头文件或文档,以便能够与应用程序的其余部分交互时,才可以,如果有人想大量修改或从头开始重新编写该DLL。“向您的客户发布源代码”-真的吗?只向他们发布吗