IANAL,但这是我对GPL范围内允许的内容的看法:
公开分发合并的作品“ A-B”:很好,可以在任何专有许可下完成
为Y创建C的包装函式库D:好的,这并不意味着A必须放在GPL下
Y在内部使用组合产品“ A-D-C”:也可以,只要未向公众分发该组合,GPL就不需要开源A
公开分发组合的作品“ A-D-C”:这将要求A开源并接受GPL(而且X或Y是否分发此组合都没有关系;此外,Y是否愿意因此,他们需要从X获得A的发行许可证)
现在有趣的问题是:D&C可以作为GPL下的开源单独分发吗,A&B(或者只是A而没有B)可以在专有许可下分发,并且最终用户可以自己用D&C代替B?
在此,最终用户对“ AB”的最终修改(使A依赖于库D&C)由分发后的最终用户完成。因此,有人可能会说最终的修改仅由最终用户在内部完成。在不违反GPL的情况下,这似乎确实是可能的-您所获得的是“ AC&D”的有效组合,其中A获得了专有许可,而C&D获得了GPL。
当然,律师或法官对此可能有不同的看法。要获得最终答案,我认为您必须等到有人尝试它,然后再有人起诉他。
我想对于大多数系统而言,如果不从一开始就设计某种方式来设计“ A”,那么很难创建这样的星座图,这样它就可以与B或C无缝地工作。在这种情况下,人们可能会怀疑A是从C衍生而来的。
编辑:对此进行了思考,我想到了类似的情况:为封闭源应用程序编写和分发GPL许可的插件。让我们以Photoshop为例。我认为没有人会因为存在第三方供应商提供的GPL插件而认真尝试强制Adobe开源Photoshop。在这里,由于存在定义明确的接口,因此甚至不需要“包装器库”。但是,如果Photoshop从GPL第三方插件中合并其某些主要功能,是否会改变这种情况?我认为,在这种情况下,可能很难决定在哪里划界线,此时,封闭源产品是“基于” GPL库的作品。
编辑2:有双重许可库,非商业用途的GPL许可证和商业用途的专有许可证像这样。因此,您的“漏洞”将意味着基于此类库开发产品(使用商业版本,因此GPL不适用于您的产品),将您的产品作为无库的闭源发布给公众,并最终用户自己获取并安装GPLed版本。对于这种情况,我想该库的供应商将很有可能成功起诉您违反许可证(当然,如果您不为他的库付款)。这值得麻烦吗?可能不会。尤其是在我链接的示例中,您要么必须购买库,因为定价并不取决于您销售产品的频率,而是取决于在开发过程中有多少开发人员在使用库。
最后,由于这些法律风险,如果我打算在封闭源代码产品中使用开放源代码库,则我将尽可能避免使用GPL库,而不尝试利用此“漏洞”。带有链接例外的LGPL或GPL更加安全,或者具有任何类型的非病毒OS许可证。