GPL如何应用于使用GPL库的分布式专有应用程序,但不以源代码或二进制形式重新分发GPL库本身?例如,如果通过.deb或.rpm分发专有软件,并且GPL&#d库(或完整应用程序)被列为依赖项?
如果GPL&#d'd库动态或静态链接,会有所不同吗?如果GPL代码只是直接的源代码'包括'使用Perl,Python等脚本语言?
答案 0 :(得分:4)
首先,我不是律师,也没有资格提供法律建议。与您自己的律师签订法律咨询合同。
也就是说,我过去在程序可能依赖库时使用的指南归结为GPL中“系统库”和“对应源”定义之间的交互:
可执行工作的“系统库”包括任何其他内容 比作为一个整体的工作,(a)包括在正常形式 包装一个主要组件,但不属于该主要组件 组件和(b)仅用于使用该工作 主要组件,或实现标准接口的一个 以源代码形式向公众提供实施。一个 在这方面,“主要组成部分”是一个重要的组成部分 (特定操作系统的内核,窗口系统等) 运行可执行工作的(如果有的话),或者用于编译器的编译器 生成工作,或用于运行它的目标代码解释器。
目标代码形式的作品的“对应来源”表示全部 生成,安装和(对于可执行文件)所需的源代码 work)运行目标代码并修改工作,包括脚本 控制那些活动。但是,它不包括工作 系统库或通用工具或通常免费提供 在执行这些活动时未经修改地使用的程序,但是 这不属于工作的一部分。例如,对应来源 包括与源文件关联的接口定义文件 工作,以及动态共享库的源代码 工作专门设计的链接子程序, 例如通过亲密的数据通信或那些之间的控制流程 子程序和工作的其他部分。
现在的指南:如果您可以合理地期望默认情况下该库几乎在每个系统和上都可以使用该库来正确操作系统,那么链接您的库是合法的。针对GPL库的非GPL计划。
这是一个非常严格的约束。在实践中,为其库选择GPL许可的图书馆作者不对使用其库的非GPL程序感兴趣。这些库通常不会以使“对应源”的“系统库”子句有用的方式集成到系统中。 (我无法将任何GPL授权的库命名为我认为是重要的系统库。)
关于联系 - 我不相信“联系”在法庭上曾被争论过。为了安全起见,您不应该在同一过程中分发使用GPL代码运行的专有代码。虽然C,C ++等使这一点非常明确,但我希望大多数评委都能说服任何语言的常规“需要”或“包含”机制代表道德等同于“链接” - 并且直接源包含肯定会达到“在同一个过程中运行”的意图。