gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:58:20 25 4
gpt4 key购买 nike

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

6年前关闭。



Improve this question




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

我对此有点困惑。我知道 Linux 也可以在 GNU-GPL 许可下使用。是不是意思所有 linux 应用程序是并且必须是开源的?是不是可以索要完整的源代码 Oracle 数据库 来自甲骨文公司(至少是在 Linux 上运行的部分)?

编辑:

取自 FAQ :

If a library is released under the GPL (not the LGPL), does that mean that any program which uses it has to be under the GPL or a GPL-compatible license?

Yes, because the program as it is actually run includes the library.

最佳答案

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

  • GNU 通用公共(public)许可证
  • GNU 宽松通用公共(public)许可证(又名)图书馆通用公共(public)许可证

  • 任何一个都非常清楚地指定它将来自库的代码与程序混合视为组合工作。这意味着,如果您的程序通过动态加载器(即公共(public)共享对象)加载库,或静态链接它,则生成的可执行文件是程序本身和支持它的库的组合工作。

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

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

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

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

    就内核而言,简单地使用其 syscall 接口(interface)并不构成组合工作。虽然我们大多数人只是让系统 C 库抽象出这些复杂性,但您可以完全自由地以任何您想要的方式实现自己的系统调用。这说明了为什么系统 C 库的 LGPL 是一个非常具有战略意义的选择。如果反过来,GNU/Linux 会阻止更多的开发人员,而不是他们吸引的人。另请注意,许多定义与内核的系统调用接口(interface)通信所需的魔数(Magic Number)的 Linux 头文件都没有提及任何许可证。见 linux/sysctl.h例如,或者 Linus 本人在 COPYING 中的注释。与内核一起分发的文件:

    NOTE! This copyright does not cover user programs that use kernel services by normal system calls - this is merely considered normal use of the kernel, and does not fall under the heading of "derived work". Also note that the GPL below is copyrighted by the Free Software Foundation, but the instance of code that it refers to (the Linux kernel) is copyrighted by me and others who actually wrote it.

    Also note that the only valid version of the GPL as far as the kernel is concerned is this particular version of the license (ie v2, not v2.2 or v3.x or whatever), unless explicitly otherwise stated.

                        Linus Torvalds


    请注意,Linus 特别指出使用内核头文件和系统调用接口(interface)不构成派生(如修改)或组合(如简单使用)的工作。这也是 Linux 和 GNU 之间裂痕的一部分。我提到这一点只是因为您间接提到了 GPL 的后果。 Linus(有时)想要修改内核的代码,但选择了 GPL 以确保(有时)是他的选择。

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

    另请注意,LGPL 有很多话要说,尤其是关于修改、静态链接等。我所描述的只是回答您问题的一点。

    最后,GPL 仅在您分发或传送程序时适用。您可以对计算机上的软件做任何您想做的事情,并且您没有义务与计算机(或服务器,或其他)的其他用户共享它。如果软件与网络交互,AGPL 对此有话要说……但这是另一个问题的主题。

    FSF 在 license@fsf.org 上回答 GPL 相关问题 - 如果您对某个特定案例有疑问并希望确保您不会遇到麻烦,他们会非常友好并乐于回答问题......即使您正在制作非自由软件。他们喜欢人们付出一些努力来确保他们适本地遵守许可证,不幸的是,这种情况不时发生。

    这个话题仍然和 90 年代初一样敏感。

    关于open-source - 开源许可证(如 GNU-GPL)是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3069247/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com