我正在开发一个GPL许可应用程序在Python和需要知道如果GPL允许我的计划要使用专用的插件。这个是 什么样的自由软件基金会已经说的 在这个问题:

如果一个程序下发布的GPL许可使用的插件,什么是要求许可证的一个插件?

它取决于程序是如何援引其插件。如果该程序使用叉和执行援引的插件,然后插件是分开的程序,所以许可证为主要程序没有要求他们。

如果该程序动态地链接插件,和他们做功能的电话,彼此分享数据结构,我们相信,他们形成一个单一的程序,这必须被视为一个扩展的两个主要的程序和插件。这意味着插件必须释放在GPL或GPL兼容的软件免费许可证,该条款的GPL许可证必须遵循的那些插件分发。

如果该程序动态地链接插件,但它们之间的通信限于援用的'主要'功能插在与一些选项,并在等待返回,这是一个边缘案例。

之间的区别叉/exec和动态联系,除了是一种人为的,不会带来解释语言:什么大约一Python/Perl/红宝石的插件,它加载过 importexecfile?

(编辑:我明白为什么之间的区别叉/exec和动态联系,但这似乎是某人想遵循GPL,但对"精神"--我不--可以使用叉/exec和进程间的通信以做到很多东西).

最好的解决办法是添加的一个例外,我的许可明确允许使用的专有的插件,但我无法这样做,因为我使用 夸脱/PyQt 这是GPL。

有帮助吗?

解决方案

他区分叉/exec和动态联系,除了是一种人为的,

我不认为它是人造的。基本上他们只是使该司根据级别的一体化。如果程序"的插件",这实质上是火和要忘记没有API级的整合,则所产生的工作是不太可能被认为是一个衍生的工作。一般来说一个插件,这仅仅是分叉/exec'ed会适合这个标准,虽然有可能的情况下,它不。这种情况下特别是如果适用的"插件"的代码将独立工作的你的代码。

如果,另一方面,代码是深深地依赖于GPL'ed工作,例如,广泛呼吁Api,或严密的数据结构的集成,那么事情都更有可能被认为是一种衍生的工作。即,"插件,"不存在于它自己没有的GPL许可证的产品和产品有了这个插件安装基本上是一个衍生的工作Gpl的产品。

因此,为了使这一点更明确,同样的原则可以适用于你的解释码。如果解释码严重依赖在你Api(或反之亦然),那么这将被视为得出工作。如果这只是一个脚本,执行其自己的极小的集成,那么它可能不是。

这样更有意义?

其他提示

@丹尼尔

之间的区别叉/exec和动态联系,除了是一种人为的,不会带来解释语言:什么大约一Python/Perl/红宝石的插件,它加载过进口或execfile?

我不知道区别 人为的。后一个动态加载插件代码共享执行方面的Gpl的代码。后一个叉/exec它没有。

In anycase,我猜想 importing使新代码运行在相同的执行方面的Gpl位,你应该像对待它的动态连接的情况。没有?

多少信息是你分享之间的插件和主要的程序吗?如果你正在做任何超过只是执行它们,并等待结果(共有的数据之间的程序和插件的过程),那么你可以最有可能得到与他们的专有,否则他们可能会需要GPL。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top