我真的很困惑。
GPL声明,如果您从GPL代码开始,并修改该代码,您必须在GPL下免费发布修改代码。
但是,如果您只是将现有的GPL代码作为库使用而不作修改呢?然后,你能写软件来与那些代码接口,没有改变,这是封闭源代码吗?
发布于 2013-02-16 19:11:32
GPL规定派生作品必须在GPL兼容的许可下发布(如果发布的话)。尽管如此,对于派生工作的确切构成还存在一些模糊性,而且从技术上讲,有一些方法可以在专有项目中使用GPL‘’ed代码,而不会使项目受到“感染”(着重指出我的观点):
我能发布一个非免费的程序来加载一个GPL覆盖的插件吗?它取决于程序如何调用其插件。例如,如果程序只使用简单的叉和exec来调用插件并与插件通信,那么插件是独立的程序,因此插件的许可证对主程序没有任何要求。如果程序动态地链接插件,并进行函数调用并共享数据结构,我们相信它们形成了一个程序,它必须被视为主程序和插件的扩展。为了使用GPL覆盖的插件,主程序必须在GPL或GPL兼容的自由软件许可下发布,当主程序被分发用于这些插件时,必须遵循GPL的条件。如果程序动态地链接插件,但它们之间的通信仅限于调用插件的“主”函数,并使用一些选项等待插件返回,这是一个边缘情况。使用共享内存与复杂的数据结构通信几乎等同于动态链接。也见问题我正在编写使用非免费库的免费软件。。
就我个人而言,我会联系FSF了解项目的细节,并在使用GPL‘’ed代码之前要求澄清。如果FSF证明您不能使用GPL‘’ed代码,那么我将与代码的原始作者联系,并向他们(非常好地)询问它的LGPL版本。机会微乎其微,但你永远不会知道。
发布于 2013-02-16 18:46:29
您不能在专有软件中使用GPL代码,而不使您的专有代码被GPL许可证“感染”。然后,您的代码也将成为GPL代码。您是否修改了GPL代码并不重要。如果您的代码使用它,它也会变成GPL代码。
因此,如果您正在构建任何类型的软件,其中重要的是您的代码保持专有,那么就不要使用GPL代码。
然而,这并不是说公司实体不能使用GPL代码赚钱。如果您专注于构建解决方案,帮助您为客户提供更好的服务,或者满足需要您持续参与支持软件的需求,那么您可以收取服务费。例如,Android操作系统是开源的,但是Google、Amazon、Verizon、AT&T和其他实体每天都会从中赚钱,因为他们为提供的服务付费,而不是销售软件。
此外,这也帮助摩托罗拉和三星这样的硬件公司销售他们的设备,因为他们也使用Android。
此外,在“服务”案例和什么马丁·贝克特在评论中提到的基础上,如果您使用的代码仅在内部使用,而不是分发到外部世界,则可以使用GPL代码,而不必将其发布到世界上。
是否发布产品始终是您的选择,但是如果您确实发布了该产品,则必须按照GPL的条件同时发布二进制文件和代码。
发布于 2016-08-10 17:57:17
我相信封闭源代码专有软件可以连接到GPL二进制模块,而不被GPL“感染”。否则,像甲骨文、DB2或SAP这样的产品如何在Linux上合法运行?它们都将链接到GPL共享系统库。想想所有连接到Linux内核的专有Linux设备驱动程序。
https://softwareengineering.stackexchange.com/questions/187297
复制相似问题