LGPL / GPL许可

时间:2009-04-26 09:16:07

标签: licensing gpl lgpl

我有一个使用LGPL下的组件的商业网络应用程序。 由于该组件具有插件架构, 我现在已经为这个使用库(LGPL)的组件创建了一个插件。 该库使用的是GPL数据源。

这是否意味着我必须为我的网络应用程序释放源代码?还是只需要释放插件的来源?

感谢您的任何意见和建议,并原谅我的英语不好。

4 个答案:

答案 0 :(得分:11)

要100%确定,您应该阅读FAQ,然后联系熟悉软件许可的律师。不要和律师交谈,因为他们会告诉你不要使用任何免费/开源的东西只是为了安全起见,任何人都可以这么说。

无论如何,“数据源是GPL”是什么意思? GPL源代码是否已链接到您的应用程序中?

有关插件和GPL的常见问题解答中有几个问题。

  

我可以发布非免费程序吗?   这是为了加载GPL覆盖的   插件吗

     

这取决于程序如何调用   它的插件。例如,如果   程序只使用简单的fork和exec   调用和沟通   插件,然后是插件   单独的程序,所以的许可证   插件没有要求   关于主程序。

     

如果是程序   动态链接插件,以及它们   彼此进行函数调用   分享数据结构,我们相信他们   形成一个单一的程序,必须是   作为两者的延伸对待   主程序和插件。在   为了使用GPL覆盖的插件,   必须发布主程序   根据GPL或GPL兼容免费   软件许可证,以及条款   当GPL必须遵循时   主程序分发使用   使用这些插件。

     

如果是程序   动态链接插件,但是   他们之间的沟通是有限的   调用的'main'函数   插件有一些选项和等待   它返回,这是一个边界线   情况下。

     

使用共享内存与复杂数据结构进行通信几乎等同于动态链接。

正如其他人所指出的那样,未分发的网络应用似乎被认为是普通GPL下的私人使用(不是在Affero GPL中?)。

  

公司正在运行修改   网络上的GPL程序版本   现场。 GPL是否说必须这样做   发布修改后的来源?

     

GPL允许任何人制作修改后的版本并使用它而不会将其分发给其他人。该公司正在做的是一个特例。因此,该公司不必发布修改后的来源。

     

人们必须能够自由地进行修改并私下使用它们,而不必发布这些修改。但是,将程序放在服务器上以供公众交谈几乎不是“私人”使用,因此在这种特殊情况下要求释放源代码是合法的。希望解决此问题的开发人员可能希望将GNU Affero GPL用于为网络服务器使用而设计的程序。

答案 1 :(得分:7)

  

这是否意味着我必须为我的网络应用程序释放源代码?

没有*

  

或只是需要释放插件的来源?

如果您分发应用程序,那么是的,您还必须分发其LGPL部分的源代码。

您还需要确保收到您申请的任何人都有机会对其进行修改。这对于已编译的应用程序很重要 - 您需要包含必要的目标文件,以便可以使用修改后的LGPL代码版本重新链接您的应用程序。或者,使用动态链接。我们的想法是,人们需要能够修改代码中的部分LGPL并将其与您的应用重新组合。

以下是LGPL的一些要求(我不是律师):

  • LGPL代码与其他代码之间必须有某种明确的分离。特别是,接收者必须能够修改LGPL代码,甚至完全用其他代码替换它,例如修改版本或更高版本的库。因此,如果它是一个已编译的程序,那么LGPL代码必须是动态链接的(比如,一个单独的DLL或共享文件),以便它可以很容易地替换类似的库并且仍然可以互操作;或者,如果它是静态链接的,则必须提供所需的最小源文件和/或目标文件,以允许使用备用库重新编译。除了非常简单的头文件之外,非LGPL部分可能不包含LGPL代码的任何部分。
  • 必须清楚地指出代码的哪一部分是LGPL涵盖的,包括其原始版权声明和LGPL的文本(包括它所依据的GPL)。
  • 如果合并后的软件在运行过程中显示版权声明,则此处还必须出现LGPL承保部分的版权声明,以及指向LGPL和GPL的链接。
  • 在某些情况下,您需要提供详细说明如何在组合应用程序中使用修改版本的LGPLd代码的安装信息。

这些仅仅是一些限制,但LGPL也为您提供了许多自由,而GPL等其他许可证则没有。如果您正在分发合并作品,其中包括其他人的LGPL许可代码:

  • 您不需要为应用程序的其余部分(即非LGPL部分)发布源代码。唯一的例外是如上所述 - 如果它全部静态链接,那么你需要提供足够的代码(和/或目标文件),以便能够将其与LGPL代码的替代或修改版本重新链接。如果您是动态链接并通过普通API进行交互,则无需担心这一点。
  • 您无需在GPL下发布其余的应用程序。您可以使用您想要的任何许可证,包括限制性更强的专有许可证,前提是您在分发时遵循规则。
  • 与GPL版本3不同,GPL版本3禁止在实施版权保护或DRM软件时使用代码,您可以在包含复制保护或DRM的应用程序中使用LGPL版本3许可代码。

我最近写了analysis of the LGPL license - 您可以阅读此内容以获取更多信息。

另外,请阅读actual text of the LGPL。这不会太长。

*您提到您正在使用的库具有GPL数据源。据推测,这意味着您实际上不会使用它来分发此GPL数据,只是使用它的LGPL库。

答案 2 :(得分:2)

我不是律师,但是......只要您不分发程序(使其可用作Web应用程序不是分发),您就不必为任何内容发布源代码。

答案 3 :(得分:1)

如果通过网络应用程序表示您只是在服务器上运行该软件而您没有将其分发给您的用户,那么它应该很简单。没有分发,不需要放弃来源。

(可能与GPL3不同)