GNU GPL 傻瓜指南






3.41/5 (9投票s)
以简单术语讨论 GPL v3 的概要。
更新
我还发布了GNU GPL 入门 (II):混合 GPL 和非 GPL 代码,以更好地回答最常见的问题。
引言
网上有很多资源解释GNU GPL。可以公平地说,其中大部分讨论 GNU GPL,但它们并不总是描绘出...(嗯)简单的图景。如果你对以下问题没有疑问,那么本文不适合你。
- 你是否被迫重新分发你所有的 GPL 修改?(答案:否)
- 你可以销售 GPL 源代码和/或可执行文件吗?(答案:是)
- 你可以在不重新分发专有代码源代码的情况下,将 GPL 代码与专有代码一起分发吗?(答案:取决于情况)。
- 官方 GPL FAQ 在哪里?(答案:这里)
注意:本文之后将有一篇关于 LPGL 的文章,还有一篇关于 Affero GPL 的文章。
所以这里有几段简短的文字,用通俗易懂的自然语言解读 GNU GPL(嘿,不是每个人都是Eben Moglen。 :))
这里的一切都适用于最新版本 v3 的 GNU GPL。下面所有的条目都应该被理解为大多数情况。请记住,目标是让你有一个好的理解,一个宏观的图景,它不是一个合适或合法的解释:请咨询律师(我不是律师)。
GNU GPL 赋予你为任何目的使用软件、以任何你希望的方式修改它、以及与任何人分享(包括修改)的自由[1]。为了享有这些权利,你必须遵守以下规定。
[1] GPL 并不意味着你在现实生活中也有权这样做;例如,分享的权利并不赋予你打破出口法律的权利,以及以任何你希望的方式使用的权利并不是闯入银行账户的通行证。
使用和修改权
你可以以任何你希望的方式修改、混合(包括与任何其他源代码)、匹配、运行、编译 GPL 代码,只要你不重新分发它,就没有任何义务。请注意,你不能修改许可证本身或对 GPL 代码进行再许可。
特殊情况:如果你将修改外包给第三方并且你不分发生成的代码,你没有任何义务重新分发源代码(第三方也没有)。
分享权:源代码分发传染
如果你分发包含 GPL 代码的可执行代码:大多数情况下,你还必须提供对所有源代码的访问权限,包括最初不属于 GPL 的源代码。
- 如果两个代码紧密交互而没有兼容的许可证,你就不能将它们一起分发, periodo。
- 如果你的 GPL 可执行文件被分发以便运行和紧密交互于另一个代码,你必须向用户提供两个源代码的访问权限(是的,链接通常意味着紧密交互)。
- 在 Linux 上运行用 PHP 编写的专有软件并使用 MySQL不会强制要求重新分发你的专有源代码。
- 仅仅在媒体上(或通过网络)分发可执行文件并不会触发任何源代码分发传染;例如:Linux 发行版通常包含许多不同许可证下的文件,有时彼此不兼容。
等效访问分发
你可以以任何你希望的方式分发 GPL 代码(包括收费),只要用户获取源代码的难度不比获取可执行文件更大。这意味着:
- 如果用户为可执行文件付费,则不能向他们收取获取源代码的额外费用。
- 如果要遵守特定程序来访问可执行文件,那么访问源代码的程序不能在实质上更难、更长、更复杂或更昂贵等。
- 源代码的访问应提供足够的信息/工具/文件,包括适当库的源代码[2],以便可以相对容易地编译成可工作的代码。
[2] 不过有一些常识性的例外:你不必分发整个 Linux 内核、C 或 Python 源代码库等的源代码。
盒子就是电脑(Tivoization)
如果一个设备运行 GPL 代码,并且该设备被分发,那么用户必须能够访问[3]源代码,并且必须提供[4]清晰的说明,以便用他们希望的任何修改重新安装盒子。
[3] 如果盒子连接到网络,这并不意味着你可以随意访问盒子所连接的网络。例如,如果盒子是一个 DSL 类的路由器,访问通常的 ISP 服务可能没问题,但访问其他附加服务可能不行。
[4] 一些常识性的例外,主要与有时(一次性刷写等)提供商本身无法修改代码的事实有关。
在 GPL 下编写的 DRM 软件(非 DRM 破解软件)
任何以 GPL 发布(或包含 GPL 软件)的 DRM 系统都可以被程序绕过,而不会构成DMCA 违规[5]。请记住:GPL 的编写方式是为了提供一些合理的保护,但不能保证法官最终会如何裁决。
[5] 这并不意味着以 GPL(或包含 GPL 代码)编写的破解代码可以以任何方式免受 DMCA 的侵害(除非你破解的 DRM 是用 GPLv3 下的软件编写的,在这种情况下你可能没问题)。
GPL 对专利的影响
- 通过在 GPL(包括修改)下编写代码,你放弃所有与 GPL 条款相悖的专利权(例如,你不能阻止人们按照 GPL 的规定使用、修改和分享代码)。
- 如果 GPL 贡献者因专利侵权起诉另一位 GPL 贡献者,他们根据 GPL 的权利将立即终止。
注意:这也意味着你不能做微软和 Novell 那样的交易(在GPL 中搜索歧视一词)。
GPL 合规之路
如果你善意地违反了 GPL 的条款,在证明合规后,你可以恢复你的权利。
FUD 考量:值得注意的是,GPL 是一个许可证,而非合同。因此,版权法不能强迫你以 GPL 发布你的专有代码,即使你一开始应该这样做;你很可能会被命令停止分发相关软件,并可能被要求支付罚款、损害赔偿等。
附注:您可能还对阅读以下内容感兴趣:选择开源许可证。
历史
- 2008 年 4 月 14 日:首次发布