Open source 开源许可证(如GNU-GPL)是什么意思?

Open source 开源许可证(如GNU-GPL)是什么意思?,open-source,licensing,Open Source,Licensing,我期待着使用一个具有GNU-GPL许可证的开源产品,它说如果我使用该产品,我必须共享我的应用程序的源代码 我对此有点困惑。我知道Linux也是在GNU-GPL许可下提供的。这是否意味着所有的linux应用程序都必须是开源的?这是否意味着我可以向Oracle公司索取完整的Oracle DB源代码(至少是在Linux上运行的部分) 编辑: 摘自: 如果库是在GPL(而不是LGPL)下发布的,这是否意味着 任何使用它的程序都必须 在GPL或GPL兼容下 许可证? 是的,因为程序是这样的 实际运行包括库

我期待着使用一个具有GNU-GPL许可证的开源产品,它说如果我使用该产品,我必须共享我的应用程序的源代码

我对此有点困惑。我知道Linux也是在GNU-GPL许可下提供的。这是否意味着所有的linux应用程序都必须是开源的?这是否意味着我可以向Oracle公司索取完整的Oracle DB源代码(至少是在Linux上运行的部分)

编辑:

摘自:

如果库是在GPL(而不是LGPL)下发布的,这是否意味着 任何使用它的程序都必须 在GPL或GPL兼容下 许可证?

是的,因为程序是这样的 实际运行包括库


我相信你的大部分问题都应该在报告中涵盖

简言之: 不,所有Linux应用程序都不必是开源的。 不,您不能要求提供Oracle DB的源代码


GPL说,如果你分发二进制文件,你还必须提供分发源代码的服务。因此,如果您分发Linux内核的二进制文件,您还必须提供分发这些二进制文件的源代码的服务。

Linux是内核,任何应用程序都不会直接使用内核,而是通过库(通常是在LGPL下发布的GLIBC)使用内核。这稍微打破了GPL链,因为GLIBC系统调用内核,但这似乎是一致的。因此,恐怕您无法从Oracle获得代码:-)


但是,如果应用程序使用任何GPL许可代码,则您必须使该应用程序的源代码可用(但不限于在您选择的许可证下的开源)。这使得GPL实际上是一个限制性很强的许可证,它会“污染”产品,这就是为什么它也被称为病毒许可证。

与GPL许可证的主要区别是什么构成了对根据该许可证发布的软件包的“使用”。GPL将此区分为“合并”与“并排”发布GPL许可软件,以及后者是否构成“公平”关系

大多数使用GPL许可软件的软件可能会“合并”它,因此,如果它被发布,它本身就需要根据GPL发布。(GPL不要求发布,而只是控制发布必须如何进行。)例如,使用基于GPL的库符合合并条件

a中提到的包含了这个问题的一个例子,并给出了一个编译器和内核符合arms-length关系的示例,因此编译器可以在没有内核可能拥有的任何GPL许可证的情况下单独发布,前提是发布操作正确。然而,我认为这是一个例外,而不是涉及GPL的规则


还需要了解的是,在这方面与相比明显不同,后者在发布方面更为宽松。

必须认识到,“GPL”可以指两个许可证

  • GNU通用公共许可证
  • GNU Lesser通用公共许可证(aka)图书馆通用公共许可证
这两种方法中的任何一种都非常清楚地指出,它将库中的代码与程序混合视为一种组合工作。这意味着,如果您的程序通过动态加载程序(即公共共享对象)加载库,或静态链接库,则生成的可执行文件是程序本身和支持它的库的组合工作

现在,两个许可证之间的差异变得非常重要

GPL声明,如果您的程序使用库(或GPL涵盖的任何其他代码),则必须按照与GPL相同的条款发布。这(再次)是因为GPL认为生成的程序是您的代码加上其他人的工作的组合

幸运的是(或不是?取决于您的观点),GNUC库不在GPL中。LGPL涵盖了这一点。LGPL表示,简单地加载和使用SystemC库确实构成了一项组合工作,但有一个例外,即允许专有应用程序这样做,而不必遵守GPL的分发要求。因此,在这种情况下,Oracle可以自由使用SystemC库(运行其代码所需),而无需发布其源代码

如果Oracle发布了需要加载或链接GPL覆盖的库的软件,比如
readline()
,那么是的,他们有义务共享代码。Oracle(和许多为类似UNIX的操作系统编写软件的其他公司一样)谨慎地选择在更宽松的许可证(即2或3条款BSD)下发布的库,或者实现自己的库

就内核而言,仅仅使用其syscall接口并不构成一个组合工作。虽然我们中的大多数人只是让SystemC库抽象掉这些复杂性,但您完全可以自由地在任何条件下实现自己的系统调用。这说明了为什么SystemC库的LGPL是一个非常具有战略意义的选择。如果是另一种情况,GNU/Linux会阻止比吸引更多的开发人员。还要注意的是,许多定义与内核的syscall接口通信所需的神奇数字的Linux头没有提到任何许可证。例如,请参见
linux/sysctl.h
,或者在与内核一起分发的
COPYING
文件中,由Linus本人编写的注释:

注意!本版权不受限制 涵盖使用内核的用户程序 正常系统调用的服务-此 仅被视为正常使用 内核,并且不属于 “衍生作品”的标题。阿尔索 请注意,下面的GPL受版权保护 自由软件基金会,但 实例
                    Linus Torvalds