在商业产品的LGPL许可证上使用Python模块

scd*_*dmb 18 python licensing

在LGPL许可证中,我可以使用未经修改的链接代码在商业,封闭的产品中,而无需将产品许可证更改为LGPL.商业产品的LGPL许可证上的Python模块(*.py)怎么样?它被视为链接代码吗?

Ben*_*Ben 11

我不认为这个问题(导入Python模块是否算作"链接"它,为了GPL的法律目的)已经解决了.我不认为它会在法院审理案件之前得到解决(甚至可能不会解决).GPL(遗憾地)基本上是根据C及其相关工具编写的,因此,如果用于软件的语言和工具具有与C相关的属性,则显然如何应用它.

但是,导入Python模块肯定至少与动态链接到共享库的情况一样宽松; 您在键入时链接的受版权保护的文档(源文件)import foo在程序实际运行之前未确定,并且在最终用户在其系统上移动.py文件生成受版权保护的文档,可以轻易更改,甚至只是改变PYTHONPATH.

就个人而言,我觉得上述论点明确导致对增加的结论import foo,以自己的源文件不"从复制或改编的[foo.py]全部或部分以一种方式需要版权许可" 所有,因此,GPL如果您从不修改foo.py,则不适用.(引自GNU GPL版本3,在"0.定义"下)

(从技术上讲,我认为这个论点也适用于动态链接到共享的C库,除非你通常必须这样做#include <foo.h>,这意味着你编译的程序是一个基于foo.h的工作,即使你确实认为它不是基于共享库的工作.虽然你的代码完全没有受到这种解释的GPL的影响,但有趣的是,如果你想提出这一点,你可以使用专有许可证分发你的源代码和指令.最终用户自己编译.但我离题了.)

并非常识论证必然与法院决定的内容相符.如果你import foo.py为了(L)GPL的目的而将foo.py视为"动态链接",我看不出你怎么会出错 - 没有人会因你坚持你在技术上没有必要的许可证条件而起诉你.


Mar*_*ett 6

简单测试 - 用户可以将LGPL部件换成自己的版本吗?


Sha*_*n H 5

如果我正确理解您的问题,您就会问是否可以在封闭源商业产品中使用LGPL的库.虽然我找不到任何解决这种具体情况的事情,但一切都表明应该没有问题.首先,有一篇关于在Java中使用LGPL的文章.这是文章的相关引用:

FSF的立场始终保持不变:LGPL与所有已知的编程语言(包括Java)一起按预期工作.链接到LGPL库的应用程序不需要在LGPL下发布.应用程序只需遵循LGPL第6节的要求:允许新版本的库与应用程序链接; 并允许逆向工程来调试它.

该文章的另一个引用可能是相关的:

当您使用应用程序(或单独)分发库时,需要包含库的源代码.但是,如果您的应用程序要求用户自己获取库,则无需为库提供源代码.

最后一句话:

LGPL没有包含继承的特殊规定,因为不需要任何继承.继承以与传统链接相同的方式创建衍生作品,LGPL允许这种类型的衍生作品与允许普通函数调用的方式相同.

虽然这个特定的案件确实没有在法庭审判过(至少我知道),但我不会熬夜担心它.即使LGPL在这个问题上并不十分清楚,FSF也发布了LGPL按预期用于所有编程语言的指导.一般来说,如果合同含糊不清,那么它就有利于被告(这是过于简单化,但你可以在这里找到更多细节).如果你真的很紧张,我会考虑联系自由软件基金会.

总之,如果您将LGPL的库源代码与您的应用程序一起分发(以及您的修改),或者您让最终用户单独安装此库,看起来您可以将LGPL软件与Python一起使用.