我期待使用具有GNU-GPL许可证的开源产品,它说如果我使用该产品,我必须共享我的应用程序的源代码。
我对此感到有些困惑。我知道Linux也可以在GNU-GPL许可下使用。这是否意味着所有 linux应用程序是否必须是开源的?这是否意味着我可以要求Oracle公司提供完整 Oracle DB 的源代码(至少是在Linux上运行的部分)?
编辑:
取自FAQ:
如果一个库是在GPL(而不是LGPL)下发布的,那是不是意味着 任何使用它的程序都必须这样做 符合GPL或GPL兼容 许可证吗
是的,因为程序原样 实际运行包括库。
答案 0 :(得分:21)
答案 1 :(得分:8)
Linux是内核,没有应用程序会直接使用内核,而是通过库,通常是LGPL下发布的GLIBC。这打破了GPL链的一点点,因为GLIBC系统调用了内核,但这似乎已达成一致。所以我担心你不会从Oracle获得代码: - )。
如果应用程序使用任何GPL许可代码,那么您必须使用GPL许可的应用程序的源代码(但不仅仅是您选择的许可证下的开源代码)。这使得GPL实际上是一个相当严格的许可证,“污染”产品,这就是为什么它也被称为病毒许可证。
答案 2 :(得分:3)
与GPL许可证的关键区别在于构成根据本许可证发布的软件包的“使用”。 GPL将此区别称为“合并”与释放“并排”GPL许可软件,以及后者是否构成“公平交易”关系。
大多数使用GPL许可软件的软件可能会“合并”它,因此如果它被发布,它本身就需要在GPL下发布。 (GPL不需要发布,而只是管理必须发布的版本。)例如,使用基于GPL的库可以作为合并。
FAQ中提到的previous answer包含此问题的precise discussion,并给出了一个示例,说明编译器和内核有资格具有长臂关系,因此如果发布正确完成,编译器可以在没有内核可能具有的任何GPL许可的情况下单独发布。但是,我认为这比GPL涉及的规则更为例外。
重要的是要理解GPL license在这方面与LGPL license相比有显着差异,{{3}}对释放更加宽容。
答案 3 :(得分:1)
我相信FAQ应涵盖您的大部分问题。
简而言之: 不,所有Linux应用程序都不必是开源的。 不,您不能要求Oracle DB的源代码。
真的很简化GPL说如果你分发二进制文件,你还必须提供分发源代码。因此,如果您分发Linux内核的二进制文件,您还必须提供分发这些二进制文件的源代码。