代码之家  ›  专栏  ›  技术社区  ›  Hemant

开源许可证(如GNU-GPL)是什么意思[[关闭]

  •  11
  • Hemant  · 技术社区  · 14 年前

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

    我对此有点困惑。我知道Linux也是在GNU-GPL许可下提供的。这意味着什么 全部 linux应用程序必须是开源的吗?这是否意味着我可以要求完整的源代码 五险合一系统 来自Oracle公司(至少是在Linux上运行的部分)?

    取自 FAQ :

    如果一个库是在GPL(而不是LGPL)下发布的,这意味着什么 任何使用它的程序都必须 执照?

    实际运行包括库。

    4 回复  |  直到 14 年前
        1
  •  23
  •   Tim Post Samir J M Araujo    14 年前

    重要的是要认识到“GPL”可以指两个许可证。

    • GNU通用公共许可证

    其中任何一个都非常清楚地指出,它将库中的代码与程序混合在一起视为 联合工作

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

    幸运的是(还是不是?根据您的视图),gnuc库不包含在GPL中。它由LGPL覆盖。LGPL表示,简单地加载和使用systemc库确实构成了一个组合工作,但是有一个例外,即允许专有应用程序这样做,而不必遵守GPL的分发要求。因此,在这种情况下,Oracle可以自由地使用systemc库(需要运行它们的代码),而不必发布它们的源代码。

    readline()

    就内核而言,仅仅使用其syscall接口并不构成一个组合工作。虽然我们大多数人只是让systemc库将这些复杂性抽象出来,但您完全可以自由地在任何条件下实现自己的系统调用。这说明了为什么systemc库的LGPL是一个非常战略性的选择。如果情况正好相反,GNU/Linux会让更多的开发人员望而却步。还要注意的是,许多定义与内核的syscall接口对话所需的幻数的Linux头都没有提到任何许可证。看到了吗 linux/sysctl.h 例如,或是莱纳斯本人在 COPYING 随内核分发的文件:

    涵盖使用内核的用户程序 正常系统调用的服务-此 仅仅被认为是 内核,并且 落入 请注意,下面的GPL是受版权保护的 自由软件基金会,但是 (Linux内核)的版权归 是我和其他人写的。

    关心的是 特定版本 许可证(即v2,而不是v2.2或 v3.x或其他版本),除非

                        Linus Torvalds
    

    注意,Linus特别指出使用内核头和syscall接口并不构成 派生 (如简单使用的)工作。这是Linux和GNU之间裂痕的一部分。我提到这个只是因为你间接地提到了GPL的影响。Linus(有时)想要修改内核的代码,但是选择了GPL来确保(有时)是他的选择。

    简而言之,如果您链接或加载GPL覆盖的库,则必须使代码在同一许可证下可用。如果您链接或加载LGPL所涵盖的库,则许可条款由您决定。

    另外请注意,LGPL还有很多要说的,特别是关于修改、静态链接等。我所描述的只是回答您问题的部分。

    最后,GPL仅在您分发或 传达

    FSF在licensing@fsf.org -如果你对某个案件有任何疑问,想确保你不会惹上麻烦,他们会非常友好,乐于回答问题。。即使你正在制作非自由软件。他们喜欢人们花一些精力来确保他们适当地遵循许可证,不幸的是,这种情况并不时有发生。

        2
  •  8
  •   jdehaan    14 年前

    Linux是内核,没有应用程序会直接使用内核,而是通过一个库,通常是LGPL下发布的GLIBC。这稍微打破了GPL链,因为GLIBC syscalls内核,但这似乎是一致的。所以我担心你无法从Oracle获得代码:-)。

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

        3
  •  3
  •   Community davidgyoung    7 年前

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

    FAQ 在一份报告中提到了这一点 previous answer precise discussion 并给出了一个编译器和内核符合arms-length关系的例子,因此编译器可以在没有内核可能拥有的任何GPL许可证的情况下单独发布,只要发布操作正确。然而,我认为这是一个例外,而不是涉及到GPL的规则。

    GPL license 在这方面与 LGPL license ,这是更宽容的释放。

        4
  •  1
  •   Christoffer Hammarström    14 年前

    我相信你的大部分问题都应该在 FAQ .

    简而言之: 不,所有的Linux应用程序不一定都是开源的。 不,你不能要求提供oracledb的源代码。