我有一个商业网络应用程序,使用LGPL下的组件.由于该组件具有插件架构,我现在已经为该组件创建了一个使用库(LGPL)的插件.该库使用GPL数据源.
这是否意味着我必须为我的网络应用程序释放源代码?或者只是需要释放插件的来源?
感谢您的任何意见和建议,并原谅我的英语不好.
Eug*_*ota 11
要100%确定,您应该阅读常见问题解答,然后联系熟悉软件许可的律师.不要和律师交谈,因为他们会告诉你不要使用任何免费/开源的东西只是为了安全起见,任何人都可以这样说.
无论如何,"数据源是GPL"是什么意思?GPL源代码是否链接到您的应用程序?
有关插件和GPL的常见问题解答中有几个问题.
我是否可以发布旨在加载GPL覆盖插件的非免费程序?
这取决于程序如何调用其插件.例如,如果程序仅使用简单的fork和exec来调用插件并与插件通信,则插件是单独的程序,因此插件的许可证不对主程序有任何要求.
如果程序动态链接插件,并且它们相互进行函数调用并共享数据结构,我们认为它们构成了一个程序,必须将其视为主程序和插件的扩展.为了使用GPL包含的插件,主程序必须在GPL或兼容GPL的自由软件许可下发布,并且当主程序分发用于这些时必须遵循GPL的条款插件.
如果程序动态链接插件,但它们之间的通信仅限于使用某些选项调用插件的"main"函数并等待它返回,这是一个临界情况.
使用共享内存与复杂数据结构进行通信几乎等同于动态链接.
正如其他人所指出的那样,未分发的网络应用似乎被视为普通GPL下的私人使用(不是在Affero GPL中?).
一家公司正在网站上运行GPL程序的修改版本.GPL是否说他们必须发布修改后的来源?
GPL允许任何人制作修改版本并使用它而无需将其分发给其他人.该公司正在做的是一个特例.因此,该公司不必发布修改后的来源.
人们必须有自由进行修改并私下使用它们,而不必发布这些修改.但是,将程序放在服务器上以供公众交谈几乎不是"私人"使用,因此在这种特殊情况下要求释放源代码是合法的.希望解决此问题的开发人员可能希望将GNU Affero GPL用于为网络服务器使用而设计的程序.
这是否意味着我必须为我的网络应用程序释放源代码?
没有*
或者只是需要释放插件的来源?
如果您分发应用程序,那么是的,您还必须分发它的LGPL部分的源代码.
您还需要确保收到您的申请的任何人都有机会修改它.这对于已编译的应用程序很重要 - 您需要包含必要的目标文件,以便可以使用修改后的LGPL代码版本重新链接您的应用程序.或者,使用动态链接.我们的想法是,人们需要能够修改代码中的部分LGPL并将其与您的应用重新组合.
以下是LGPL的一些要求(我不是律师):
这些仅仅是一些限制,但LGPL也为您提供了许多自由,而GPL等其他许可证则没有.如果您要分发合并作品,其中包括其他人的LGPL许可代码:
我最近写了一份关于LGPL许可的分析 - 你可以阅读这个以获取更多信息.
*您提到您正在使用的库具有GPL数据源.据推测,这意味着您实际上不会使用它来分发此GPL数据,只是使用它的LGPL库.