本文根据《考鼎录》视频号内容整理而来。
Linux 内核使用的是 GPLv2 许可证,为什么不使用 GPLv3 许可证?
要回答这个问题,首先要搞清楚以下两个问题:GPLv3 许可证比 GPLv2 许可证增加了什么条款?为什么 Stallman 要发布GPLv3 许可证?
GPLv3 许可证修复了 GPLv2 许可证中一些没有定义的条款,比如其中的:
专利。 假设,代码贡献者就某个软件申请了专利,随后又以 GPLv2 许可证发布了这个软件,大部分人认为以 GPLv2许可证发布的代码是免费的,所以纷纷使用了代码。代码贡献者某一天突然宣布自己拥有了软件专利,使用者都要交费。这种情况就阻碍了 Stallman 所期望的“程序自由”。Stallman 提出自由软件和 GPL 许可证的初衷是为了创建一个自由软件的王国,就是可以自由修改、复制和分发任何软件的“程序自由”。为了避免上述这种情况的发生,GPLv3 许可证就增加了代码贡献者已承诺放弃收取已授权或者未来会授权的专利的许可费这样的条款。
衍生作品的可获取性。 GPLv3 许可证就衍生作品(原有 GPLv3 许可证软件的修改版本)的源代码的可获取性做了更加严格的约定,有效打击了“想要源码上门自取”的这类企业。
实际上,GPLv3 许可证中新增的上述条款,是 Linus 喜闻乐见的:
有关专利的条款可有效避免专利纠纷,显然对 Linux 内核是有利的。
Linus 认为 GPLv2 许可证强制回馈源码是 Linux 获得成功的关键。
由此看,上述新增条款不是 Linus 反对 GPLv3 许可证的真正原因。
Linux 内核不使用 GPLv3 许可证的真正原因到底是什么?其实与 GPLv3 许可证中新增的允许别人修改并替换原有二进制代码的强制性要求有关。
GPLv3 许可证诞生于 2007 年,同一年诞生的还有 iPhone 。2007 年或者更早几年,消费类电子产品开始大行其道。在 PC 上,只要你得到了某个程序的源代码,就可以自行编译生成二进制程序,然后替换掉原有的二进制程序,你的程序自由很容易得到保证。然而 iPod、iPhone 等消费类电子产品,厂家会锁上硬件,不允许消费者破解其中的程序。消费者即使拿到了源码,修改了其中的缺陷,或者增加了新功能,优化了算法,也无法放到你的设备上运行,所以无法保障程序自由。如 Stallman 这样执着于全人类程序自由的人,怎么会容忍这种情况发生?因此,Stallman 试图通过 GPLv3 许可证来弥补这个漏洞:GPLv3 许可证要求衍生作品必须提供源代码,并且允许任何人可以修改源代码并替换掉原有的二进制版本。Linus 追求的是全世界人人都用上 Linux,他不在乎最终用户是否可以破解整个系统,只要消费类电子产品的厂商能回馈代码到 Linux 内核。但明显 GPLv3 许可证的这个条款会阻碍 Linux 在嵌入式或者消费类电子产品,比如智能手机上的推广,这是 Linus不能接受的,也导致 Linux 不使用 GPLv3 许可证。
归根究底,Stallman 是个理想主义者,而 Linus 是个实用主义者。也许,现实世界就是宽容博大,既需要 Stallman 这样的理想主义者,也需要 Linus 这样的现实主义者。
比文字更有魅力的视频,请观看。
更多精彩内容,请关注考鼎录视频号。





