65.9K
CodeProject 正在变化。 阅读更多。
Home

GNU GPL 傻瓜指南

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.41/5 (9投票s)

2008年4月14日

GPL3

5分钟阅读

viewsIcon

55616

以简单术语讨论 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 发布你的专有代码,即使你一开始应该这样做;你很可能会被命令停止分发相关软件,并可能被要求支付罚款、损害赔偿等。

附注:您可能还对阅读以下内容感兴趣:选择开源许可证

blog.milkingthegnu.org

历史

  • 2008 年 4 月 14 日:首次发布
© . All rights reserved.