出品|开源中国
文|lola
“GPLv3 的作者是一群伪君子。”
“那些将 GPLv3 视为有史以来最好的东西的人,有多少是真正做成事情了的?我问了 25—30 位最顶级的内核开发人员,没有一个人喜欢 GPLv3。”
“做了错误的技术决策,才会选择 GPLv3。杰出工程师的标志之一是做出正确技术选择,GPLv2 可以接受,GPLv3 不能。”
“GPLv3 只会让自由软件更不自由。”
......
GPLv3 作为现在最主流的 copyleft 开源许可证之一,却在诞生之初被 Linux 之父 Linus Torvalds 疯狂吐槽。
2006 年 1 月,自由软件基金会(Free Software Foudation,简称 FSF)公布了 GPLv3 第一个草案,并开启了预计为期一年的讨论和修订,Linus 这时就坚定 say no。这一年里,Linus 一边批评一边拒不参与,说了不少狠话。
“我当然希望最终的 GPLv3 不会有什么明显问题,但我对这些草稿非常不满意。”不仅是 Linus,当时在 Linux 的核心开发小组, 29 个高级架构师有 28 个反对这个协议。
2007 年,GPLv3 草案进程加快,接连在 3 月和 5 月推出新版,并在 6 月 29 日最终定案。Linus 虽然态度有所缓和,但也在不同场合多次表示 Linux 内核永远不会采用 GPLv3。因此,目前 Linux 内核还是继续采用 GPLv2。
2014 年的 DebConf(Debian 聚会,就因为这次发言 Linus 还被 Debian 内部抵制了) 上,当被问及相关问题时,Linus 大方承认:“我讨厌 GPLv3,我就是在故意贬低它。”
到底是何仇何怨,使得 Linus 全身每个细胞都在抗拒着 GPLv3 呢?
理性分析一下,GPLv3 是一个优秀的开源许可证,它改进了 GPL 许可证所存在的一些不足,比如采用更通用和国际化的法律词汇、明确对专利的说明、更好地兼容其它许可证、放松终止条款、对下游自动授权等等,并且逐渐得到开源软件的主流认可。
综合 Linus 的“症状”,基本可以诊断: Linus 对 GPLv3 的厌恶是起源于更深处,是从心底的哲学态度、世界观、技术理念等出发的,最终表现出来的就是 Linus 一听到 GPLv3 就立马神经反射性地做出反应。
01 表面上,Tivoization 是罪魁祸首
GPL ,全称 GNU 通用公共许可证(GNU General Public License),由 RMS(Richard Mattew Stallman)在上个世纪 80 年代撰写最初版本,自由软件基金会(FSF)发行,用于 GNU 计划,是自由软件运动的重要成果。
1989年,GPL 第一版诞生;1991 年 GPLv2 也随之公布,在之后漫长的 16 年中 GPLv2 都作为 GPL 的主力,被广大 FOSS(Free and Open Source Software)所采用。其中,就包括了 Linux 内核。
“我觉得 GPLv2 是一个非常棒的协议,我喜欢它的理由很简单:我给你源代码,你给我你的修改,我们就扯平了。”
“GPLv2 是个非常成功的许可证,无论是自由软件阵营,还是开源阵营,人们可以在 GPLv2 下和谐相处。”
谈起 GPLv2,Linus 完全是另一个画风,不仅力赞 GPLv2 是完美的协议,还要感谢 GPLv2,没有 GPLv2 就没有今天的 Linux。然而,同样是 RMS 和 自由软件基金会发起,同样是继续沿用修改返回上游的 copyleft 原则,同样是以自由软件之名,为什么 GPLv3 就不行了呢?
在多数观点和 Linus 的自我阐述中,Tivoization 在背这口大锅。
TiVo 是一种数字录像设备,在上个世纪末电视和录像还很盛行的年代被发明出来,用于帮助人们录下电视节目并跳过广告,深受美国家庭用户的喜欢,被称为“电视界中的Google”。
Tivo 中包含了带有 GPL 许可证的软件,按照 copyleft 原则,这些软件应该允许用户随意修改使用。当然,Tivo 也允许用户修改,只是修改之后的软件就不能直接在原有硬件上运行了。
其中,也涉及 DRM(Digital Rights Management,数字版权保护技术)。DRM 是一个与版权相关的保护技术,通过数字加密和权限控制,来保护数字内容,为数字付费保驾护航。DRM 自身充满争议,反对者认为 DRM 会损害用户的利益(如果消费者购买的音乐受 DRM 保护,通常他们就只能在一种设备上播放)。
从 Tivo 的这种做法演化而来,此类做法被称为 Tivoization。在维基百科上,Tivoization 指的是通过硬件限制或者 DRM 使得用户无法在原有硬件上运行修改过的代码的现象。
在 RMS 和自由软件基金会看来,Tivoization 剥夺了用户修改软件的自由,是“最不应该发生在个人用户身上”的,这些计算机软硬件的生产商享受了自由软件提供的自由,但却没有赋予大家同样的自由。
这种 Anti-Tivoization 的观念,其实在彼时的一些开源和自由软件圈子里不算少见,这些程序员认为这种锁定和认证措施侵犯了软件自由。
GPLv3 的第一个草案就剑指了这一现象。在最终定版中,GPLv3 并没有要求禁用 DRM,但是要求 GPL 程序的 DRM 必须允许被人破解(要求 Tivo 类似厂商提供签名秘钥);同时,使用 GPL 软件的家用设备必须允许用户执行他们自己修改的版本,这样就可以“刷机”绕开 DRM。
Linus 有不一样的看法。早在 2003 年,Linus 就在内核邮件列表的一篇帖子中明确对 DRM 打开大门,他表示 Linux 操作系统的基本规则中,没有任何阻止开发者使用 DRM 的内容。
2006 年 1 月,GPLv3 刚公布第一个草案没多久,Linus 就明确表示 Linux 不会将许可证转换至 GPLv3,因为他反对该草案中的 DRM 相关条款。
“我认为,要求人们提供他们的私人签名密钥是很疯狂的。”
“在我的世界观中,如果你生产硬件去锁定其中的软件,这是你作为硬件提供者的决定,完全不能影响我给你提供软件的决定。”
“迪斯尼的问题根本不是什么 DRM,而是他们在上游的内容垄断。他们之所以这么做,是因为内容产业本就倾向于垄断。”
“如果你想要反对 DRM 就去支持知识共享运动(the Creative Commons movement)。”
“所有有关 DRM 的讨论,其实和操作系统半毛钱关系没有。尝试把两者连接在一起,是个馊主意。”
“禁止 DRM 坏的用途,也就意味着好的用途也不被允许。”
至此,DRM 和 Tivoization 相关的条例,是 Linus 喷 GPLv3 的一个主要火力点。在 Linus 看来,DRM 没有什么好反对的,甚至 Tivoization 都是 RMS 造成的词。搞操作系统就老老实实搞操作系统,我不想掺和你们反对这反对那的一摊子破事。
也有人支持 Linus 这样的理念,他们认为并不是所有用户都想过要修改自己电子设备上的软件,这仅仅是一小撮黑客的需求。GPLv3 声称要保护绝大多数用户的自由,根本就是屁话,绝大部分用户根本不在乎这些,它仅保护了少数黑客。而 Tivo 什么也没做错,就直接被针对了,也是很无辜了。
看出来了吗?一方面,GPLv3 这项反 DRM 条款正在试图保护大多数人自己都不太在意的自由;另一方面, Linus 正在极力反对 GPLv3 的原因,其实和操作系统的运作半毛钱关系也没有。
Tivoization 根本就不是问题的关键!那么,Linus 如此激烈反对 GPLv3 的理由到底是什么?答案呼之欲出。
02 实际上,是一次理念分歧大爆发
“我自己也不一定喜欢 DRM”,Linus 说了一大堆撑 DRM 的大道理,才指出问题的关键——“技术上差异为零,这只是一个意图问题。”
1991 年,GPLv2 问世,此时 RMS 发起自由软件运动已经有一段时间了,酝酿已久的 GNU/Hurd 内核一直难产。也就是这一年,芬兰大学生 Linus 写出了 Linux,完美补上了自由软件运动的这个“缺”。因此,RMS 找到了 Linus,说服他采用 GPLv2,Linus 也认同 copyleft 的观念,从 Linus 之后的言论可以看出他用 GPLv2 用得很开心。
双方的分歧发生在几年后。1998 年左右,一股势力从自由软件分裂了出去——开源(Open Source)这个词诞生了。详情可查看:《开源,是背叛自由还是以退为进?》
1998 年 4 月,前 GNU 成员 ESR (Eric Steven Raymond)与 Debian 刚下台的领导人 Bruce Perens 一起,攒了一个聚会, Linux 内核创始人 Linus Torvalds、Apache 主要开发者 Brian Behlendorf、 Sendmail 创始人 Eric Allman、Perl 语言创始人 Larry Wall、Python 语言创始人 Guido Rossum 等人都参与了,就是没请 RMS。
很明显,Linus 自认是开源这一边的。而且,自由阵营对阵开源阵营,两者之间的分歧要比我们想得大得多。这个维度,才是 Linus 抗拒 GPLv3 的问题核心。
1、GPLv3 注定比 GPLv2 更 GNU、更政治,Linus 坚决不入教
16年未变动,GPLv2 难免会有些过时,比如不够国际化、不够兼容、不够宽容等,GPLv3 的推出似乎顺理成章。但这也注定了 GPLv3 会朝 RMS 设定好的自由软件哲学(RMS 希望所有软件都是自由的,专有软件狗带)更进一步。
“这个协议(GPLv3)带有宗教性质”,Linus 代表的开源阵营并不反对专有软件,而且,Linus 在 Transmeta 从事专有软件工作多年,他允许专有显卡驱动程序作为模块加载到 Linux 内核中。
Linus 自比是奥本海默,这位科学家因为自己的成果被用来制造原子弹而深切自责,所以 Linus 拒绝涉猎政治。而与他同阵营的 ESR 也是一样本能性拒绝政治,一旦被人说是共产主义者,还会面红耳赤。
在纪录片《操作系统革命》中,被问及是否是共产主义,ESR一秒变脸,RMS 就很淡定
2、 Linus 想要所有人都用上 Linux,而站队显然没好处
2021 年是 Linux 首个版本的 30 周年,今年年底,Linux 基金会公布了 2021 年度报告,该报告称:“现在这个世界上,没有人能够在缺少 Linux 支持的环境下度过一天。”
这很好地体现了 Linus 的一个重要理念:他希望全世界人人都用上 Linux。
所以,当 GPLv3 准备狙击 Tivoization 时,Linus 的吐槽输出会如此密集,因为这一条款很明显会阻碍 Linux 在嵌入式或者消费类电子产品的发展,这是 Linus 不能接受的。
"I really want a license to do just two things: Make the code available to others, and make sure that improvements stay that way."
我想要的许可证只需要两个功能:源码可见并确保持续改进。
3、到处吵架和法律诉讼,让 Linus 的小心脏受不了
Linus 不仅一次表达了自己对法律问题的不耐烦,他宁愿老老实实写代码,也不愿意一周抽出一天时间来处理法律问题。某次,Linus 甚至还建议 Linux 内核峰会上关于 GPL 的会议的标题应该是 ——“律师:对开放有毒,对社区有毒,对项目有毒”。
而 GPL 在被制造出来的那一刻,就是准备好了被拿上法庭的。
当看到一些人在法庭上大打出手时, Linus 表示,“ 诉讼会破坏社区,会破坏信任,会破坏我们多年来通过友善而建立的所有善意。 ” 相较于这种激烈的方式,Linus 更喜欢的是“悄悄地与公司合作,从内部说服他们。”
4、积怨已久、不良沟通,双方的梁子很大
“我只被邀请参加那些每个人都被邀请的会议。”说起 GPLv3 的起草过程,Linus 也有牢骚。他质疑自由软件基金会的起草过程根本就不透明公开,GPLv3 委员会就是一个“过场”。
这种阴谋论被 Linus 进一步扩大了 —— 他担心 GPLv3 的目标之一是吸收部分开源社区,就因为 GPLv3 的既定目标之一是与 Apache 许可证兼容。
也不能完全怪 Linus 疑神疑鬼。或许是 Linux 的分量太重了,自由软件基金会也做了一些让 Linus 非常炸毛的事情。比如,自由软件基金会要求遵守 GPLv2 的人们在发布自己的代码时候必须兼容它的任何未来版本(Any future version),向 Linus 施威;又比如,在劝说 Linus 采用 GPLv3 时某些不诚实的言论。
“自由软件基金会暗地里做的那些事情,让我当下决定永远不再和他们有任何瓜葛。” Linus 在 2014 年的 DebConf 上这样说到。
与此同时,自由软件阵营的一些举动碰触到了 Linus 的底线:Linux 到底听谁的?
Linux has the power and influence to move mountains in the software industry, and shouldn't shy away from the opportunity to take moral responsibility when it arises. You do have to realize that Linux has never been an FSF project, and in fact has never even been a "Free Software" project.
Linux 有能力在软件行业掀起波澜,当我们有机会承担一些道德责任时,我们不应回避。很明确,Linux 从来都不是一个 FSF 项目,并且永远也不会是一个“自由软件”项目。
The whole "Open Source" renaming was done largely exactly because people wanted to distance themselves from the FSF. The fact that the FSF and it's followers refused to accept the name "Open Source", and continued to call Linux "Free Software" is not our fault.
Similarly, the fact that rms and the FSF has tried to paint Linux as a GNU project (going as far as trying to rename it "GNU/Linux" at every opportunity they get) is their confusion, not ours.
重新命名为“开源”正是因为人们想要和自由软件基金会区保持距离,自由软件基金会和他们的追随者不但拒绝“开源”这个名字,还一直将 Linux 称为“自由软件”。同样,RMS 和自由软件基金会试图将 Linux 描绘成一个 GNU 项目,迄今为止在所有场合都称其为“GNU/Linux”。
And please, when you join that fight, use your own copyrights. Not somebody elses. I absolutely hate how the FSF has tried to use my code as a weapon, just because I decided that their license was good.
做个人吧,如果你加入自由软件运动,就用自己的版权,而不是别人的!我太烦自由软件基金会将我的代码作为武器了,就因为我用了他们的许可证。
至此,Linus 的病根被找到了。正如他自己所言,这种裂痕不是新的,也与 GPLv3 无关。