GPL或LGPL是否扩展到应用程序重用这些许可下的代码?
简而言之,它取决于上下文。
这是我长久以来的答案:
关于“您” LGPL应用与GPL代码:
的第一个测试,我会考虑的链接:直接链接应用程序代码(静态或动态)与GPL组件?答案是技术特定的,可能因语言和平台而异。如果是的话,会有一些GPL的影响。例如,如果您的应用程序包含一个GPL许可组件作为单独的未修改的可执行文件,该文件是从您的应用程序在其自己的进程中启动的,那么通常不存在“链接”,但是被认为是正常使用GPL程序的内容。请注意,GPL中没有这种链接本身的概念,但这仍是一个通常考虑的测试。
我会考虑的第二个测试是修改:您是否修改了GPL许可组件?如果是的话,并且如果这些修改可以帮助您更好地与这个GPL组件连接,而不管链接如何,那么可能会有一些GPL影响。
请注意,GPL 2.0没有一般义务释放使用GPL 2.0下的GPL许可组件的源代码。相反,如果您在上面测试1或2时回答“是”,那么您的代码将不得不在GPL下或与GPL兼容的许可证下提供,实质上提供类似的自由。 FSF发布这样一个列表。 LGPL 2.1与GPL 2.0明确兼容,因此您可以使用LGPL 2.1。
关于“他们”的网站与您的LGPL和GPL程序:
如果有人再使用,在其应用您的应用程序,他们将不得不释放下LGPL或GPL的过他们的应用程序?
这又取决于:上面的测试1和2将首先应用。 如果您对应用程序的测试1和2回答“是”,则您的应用程序将受到类似于GPL的条款的约束。如果他们重复使用GPL和LGPL 2。1代码,那么GPL可能也会申请,也取决于他们如何重用您的代码。
关于他们使用您自己的LGPL授权代码,相同的测试将适用于扭曲:LGPL隐式区分静态和动态链接,并且在修改时有其他条件。
在那里,我会考虑的第三个测试是静态与动态链接:它们的应用程序代码是静态还是动态地与您的LGPL代码链接?答案是技术特定的,可能因语言和平台而异。如果是静态的,会有一些LGPL影响。例如,如果您的应用程序包含LGPL许可的本机库,并且它们将此代码静态链接到此库,那么它们的代码将受到LGPL的约束,并且它们将不得不制作 - 其他内容 - 它们的源代码可用认为与LGPL兼容并提供相似自由的术语。再次有一个由FSF发布的清单。 如果他们的代码与您的LGPL代码动态链接,那么通常会认为LGPL库和LGPL的正常使用不会影响他们的代码。
我会考虑的第四个测试是再次修改:他们修改了你的LGPL库吗?如果是,LGPL可能适用于他们的代码,可能取决于修改的性质和范围。
当然,在所有情况下,即使您对所有四项测试均回答“否”,GPL条款仍适用于GPL代码,LGPL条款仍适用于单独使用的LGPL代码。
这是一个很长的回答,但这不是一件简单的事情!
/HTH,IANAL TINLA
PS:我做了这个一个社区维基所以它可以增强...
这个问题似乎是题外话,因为它是关于许可。 –