8

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

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

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

4

4 回答 4

11

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

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

FAQ 中有几个关于插件和 GPL 的问题。

我可以发布一个旨在加载 GPL 涵盖的插件的非自由程序吗?

这取决于程序如何调用其插件。例如,如果程序只使用简单的fork和exec来调用插件并与之通信,那么插件就是独立的程序,插件的许可对主程序没有要求。

如果程序动态链接插件,它们之间进行函数调用并共享数据结构,我们认为它们形成了一个单独的程序,必须将其视为主程序和插件的扩展。为了使用 GPL 涵盖的插件,主程序必须在 GPL 或与 GPL 兼容的自由软件许可下发布,并且在分发主程序与这些插件一起使用时必须遵循 GPL 的条款插件。

如果程序动态链接插件,但它们之间的通信仅限于通过一些选项调用插件的'main'函数并等待它返回,这是一种边缘情况。

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

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

一家公司正在网站上运行 GPL 程序的修改版本。GPL 是否规定他们必须发布修改后的源代码?

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

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

于 2009-04-26T09:31:28.893 回答
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 不同,如果您正在实施复制保护或 DRM 软件,则禁止使用该代码,您可以在包含复制保护或 DRM 的应用程序中使用 LGPL 版本 3 许可代码。

我最近写了一篇对 LGPL 许可证的分析——你可以阅读这篇文章以获取更多信息。

另外,请阅读LGPL 的实际文本。时间不会太长。

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

于 2009-04-26T13:30:45.323 回答
2

我不是律师,但是.. 只要您不分发该程序(使其可用作网络应用程序不是分发),您就不必发布任何东西的源代码。

于 2009-04-26T09:31:07.677 回答
1

如果通过网络应用程序您的意思是您只是在您的服务器上运行该软件并且您不将其分发给您的用户,那么它应该很简单。无需分发,无需放弃源代码。

(可能与 GPL3 不同)

于 2009-04-26T09:33:41.353 回答