Answers:
这不是一个明确的问题。考虑频谱的两个极端:
您的专有客户端软件是HTTP客户端,它呈现HTML响应。它可以与任何HTTP服务器一起使用。用于服务的HTTP服务器恰好使用GPL组件。
您有一个使用GPL许可组件的程序。您在该程序的操作中选择一个任意点,并将该程序分为两个程序。这两个程序通过完全多余的网络跃点进行通信。您将所有GPL许可的组件放在GPL下的第一个程序和许可证中,并将另一个程序在GPL不兼容的许可证下许可。
第一种情况显然是可以的。第二种情况显然不好。您没有提供有关您的特定案件的太多信息,即使您这样做,也只有法院的裁决才能确定您是否正确。
GPL FAQ 在互操作性,单独许可的程序中有这样的说法:
但是,在许多情况下,您可以将GPL涵盖的软件与您的专有系统一起分发。为了有效地做到这一点,您必须确保自由程序和非自由程序保持正常通信,不要以使它们有效地成为一个程序的方式进行组合。
这与“整合” GPL涵盖的软件之间的区别部分是实质问题,部分是形式。实质部分是这样的:如果将这两个程序组合在一起,以便它们有效地成为一个程序的两个部分,那么您就不能将它们视为两个单独的程序。因此,GPL必须涵盖整个过程。
您必须决定您是否认为自己的客户端服务器符合“同一程序的两个部分”的标准(因此,每个都必须根据GPL进行许可)。GPL FAQ 在另一个问题上对此主题作了进一步解释:
两个单独的程序和一个包含两个部分的程序之间的界线在哪里?这是一个法律问题,最终由法官决定。我们认为,适当的标准既取决于通信机制(exec,管道,rpc,共享地址空间内的函数调用等),也取决于通信的语义(交换各种信息)。
...
相比之下,管道,套接字和命令行参数是通常在两个单独的程序之间使用的通信机制。因此,当它们用于通信时,模块通常是单独的程序。但是,如果通信的语义足够紧密,可以交换复杂的内部数据结构,那么这也可能是考虑将这两个部分组合成一个更大的程序的基础。
因此,网络通信当然可以通过“通信机制”测试,但是尚不清楚您的客户端/服务器对在“通信语义”测试中的位置。
通过网络进行通信的两个进程并不需要像将可执行文件与库链接在一起那样来创建派生作品。因此,服务器上的GPL代码不适用于客户端代码。
在GPL下,分发二进制文件时需要分发修改后的源代码。由于您不分发服务器二进制文件,因此不需要分发服务器源代码。
GNU Affero GPL是与GPL类似的许可,带有附加的语言,旨在弥补您希望利用的这个漏洞(请参阅:http ://www.gnu.org/licenses/why-affero-gpl.html 和http://en.wikipedia.org/wiki/Affero_General_Public_License#Examples_of_web_applications_under_GNU_AGPL)。
免责声明:我是开发商,而不是律师。
客户端软件是否依赖于服务器软件才能正常运行?换句话说,客户端软件是否可以在不连接服务器的情况下运行?
如果答案是“是”,并且服务器仅向客户端软件提供了其他功能,而不是核心支持,那么您可能就很清楚了。如果服务器软件是客户端软件的组成部分,并且为客户端软件提供了核心功能(即,如果没有服务器,客户端软件将无法运行),则该组合是衍生产品,属于GPL协议。