我正在考虑在商业环境中使用GNU通用公共许可证v3 (GNU v3)许可库的一部分,但是我们显然不能发布我们的整个代码库。
我们只需要库的爬虫类步骤在后端。如果我们使用爬虫中的库生成数据并将其推入数据库,并且我们的web应用程序完全由另一个程序/进程承载,从数据库读取数据,那么我们是否需要发布任何源代码呢?面向web的(“分布式”)代码不会调用AGPL-v3授权代码,只使用它生成的输出。
任何洞察力都是非常感谢的!
发布于 2015-01-27 14:04:06
在这种情况下,困难的法律测试是决定您的数据消费应用程序是否可以合法地被视为“结合”您的AGPL数据生成应用程序。FSF建议,两个程序必须通信"臂长“才能被视为独立的作品。(这条规则的棘手之处在于,没有人完全确定程序的手臂有多长。)
首先,通过咨询GPL常见问题,我们可以排除通过数据输出传递任何AGPL需求。有一个直接解决这一问题的问题 (来自另一个方面--尝试并未能将GPL规则应用于生成的数据):
有什么方法可以让我的GPL输出人们从我的程序得到的使用吗?例如,如果我的程序用于开发硬件设计,我是否可以要求这些设计必须是免费的?一般来说,这在法律上是不可能的;版权法没有给你在使用你的程序时使用人们从他们的数据中获得的输出的任何发言权。如果用户使用您的程序输入或转换自己的数据,则输出的版权属于他,而不是您。更普遍的是,当程序将其输入转换为其他形式时,输出的版权状态继承了它生成的输入的版权状态。因此,使用输出的唯一方法是,如果输出的大部分部分是从程序中的文本中复制(或多或少).
因此,只要AGPL爬虫在其输出中不包含任何GPL许可的数据(我认为Web爬虫没有理由这样做),那么生成的数据本身就不会承担AGPL的责任。
尽管如此,数据消费代码可能在法律上被视为与AGPL数据生成代码相同的程序的一部分,在这种情况下,AGPL将适用于整个工作。在没有看到您的架构(可能也没有最终裁决)的情况下,我不可能说这两个组件是否可以称为一项工作,但从法律上讲,您提供的信息强烈地表明这两个组件似乎是独立的工作。同样,从常见问题:
两个独立的程序和一个有两个部分的程序之间的界线在哪里?这是一个法律问题,最终由法官决定。我们认为,适当的标准取决于通信机制(exec、管道、rpc、共享地址空间内的函数调用等)。以及通信的语义(什么样的信息是交换的)。如果模块包含在同一个可执行文件中,那么它们肯定是合并在一个程序中的。如果模块设计为在共享地址空间中连接在一起运行,那几乎肯定意味着将它们合并成一个程序。相比之下,管道、套接字和命令行参数通常是两个独立程序之间使用的通信机制.因此,当它们用于通信时,模块通常是单独的程序。但是如果通信的语义足够亲密,交换复杂的内部数据结构,这也可以作为将这两个部分合并成一个更大程序的基础。
对数据库的写入和读取似乎与“管道、套接字和命令行参数”相同。您的数据消费代码可以在没有运行在同一台计算机上的数据生成代码的情况下运行:您可以让一个系统生成一个数据库,然后将数据库传递给另一个使用它的系统。从这个角度来看,在我看来(通过不确定的法律保证),程序是独立的,并且与您的数据消耗Web过程交互的用户也不会与您生成数据的AGPL代码交互。
发布于 2015-01-27 13:55:00
对于版权,程序和程序操作的数据(或程序中的数据)被认为是完全独立的作品,其中一个的版权许可并不影响您如何授权另一个。
一个例外是,如果程序将其内部部件复制到输出中。然后,输出被认为是被复制的输入部分和程序部分的派生工作,两者的许可证都会影响您可以做的事情。
例如,使用一个在强大的版权许可下分发的编辑器(如GPL或AGPL)编写一个完全封闭的源代码应用程序是完全可能的。编辑器的许可证不会以任何方式影响我如何授权我的代码。
例外情况的一个例子是当您使用野牛生成解析器时。Bison的输出包含Bison作者编写的大量代码,因此他们对如何使用该输出有发言权。(顺便说一句,Bison复制的部分被特别豁免于Bison其余部分属于GPL要求的范围内)。
发布于 2015-01-27 11:56:52
AGPL是阿弗莱罗通用公共许可证,当用户使用免费代码驱动的web服务时,它为用户提供了一些保护,使其免受专有锁定。
最近有几个版本来自不同的作者(阿弗莱罗公司和自由软件基金会):
知道你要服从哪一种。
你的律师不仅需要决定你是否在你的管辖范围内符合“分配”的定义,还需要决定你的整个代码库是否符合“链接”的定义。因为您只需要发布链接到库的源代码。一般来说,只读取由AGPL代码填充的数据库的代码不太可能被视为“链接”到该代码,因此您将不必发布该代码的源代码,尽管我不知道这方面的先例或意见。
FSF ( GNU AGPL的作者)提供的指南说:
然而,在许多情况下,您可以分发GPL覆盖的软件与您的专有系统。要有效地做到这一点,您必须确保自由程序和非自由程序以适当的长度进行通信,它们不能以一种有效的方式组合在一起,从而使它们成为一个有效的程序。这与“合并”GPL覆盖的软件之间的区别在一定程度上是一个实质问题,也部分是形式问题。实质部分是:如果这两个程序结合在一起,使它们有效地成为一个程序的两个部分,那么你就不能把它们当作两个单独的程序来处理。所以GPL必须把整件事都包括进去。如果这两个程序保持很好的分离,比如编译器和内核,或者像编辑器和shell,那么您可以将它们作为两个单独的程序来处理--但您必须正确地执行。问题只是一个形式的问题:如何描述你正在做的事情。我们为什么要关心这个?因为我们希望确保用户清楚地了解GPL覆盖的软件在集合中的免费状态。*(强调地雷)来自GPL FAQ,也适用于GNU AGPL http://www.gnu.org/licenses/gpl-faq.html#GPLInProprietarySystem *
另一种选择是从你图书馆的作者(S)那里购买一份商业许可证,其中的条款更适合你的业务,更新或者与作者(S)协商,以确保他们能允许你的计划使用。
关于AGPL -你能做什么,你不能做什么的更多一般信息
这不是法律意见,而是背景资料,我不是律师。
https://softwareengineering.stackexchange.com/questions/271248
复制相似问题