众多开发者眼中的采用了GPL授权的Linux


开源软件革命是否埋藏了导致其衰落和死亡的种子?知名FreeBSD开发者、Varnish web-server缓存作者Poul-Henning Kamp认为,开源软件的市集开发模式(见ESR的《大教堂和市集》)创造了一代只知道拷贝粘贴的无能IT专业人士,混乱的软件毁灭了优雅的Unix教堂及其著名的简约设计理念,他认为一代人迷失在了市集中。Theregister的评论称,无数采用GPL许可的开源软件分裂,Linux没有分裂是因为它有一个强有力的、富有魅力的领袖Linus Torvalds,但Linus只有一个,很少有开源项目拥有类似Torvalds那样的领袖。
看完了上面的温和的批评之声外,下面来看看国内对GPL抨击与反抨击,尽管本站作者对GPL协议敬而远之,但如此激烈的口舌交锋还是难得一见的。
在百度里面搜“斯托曼 GPL”,第一条就是“GPL协议大剖析—GPL就是给软件开发者们准备的坑”,这是一篇猛烈抨击GPL和斯托曼的文章,该网站名为“斯托曼与GNU运动评论”,域名居然是stallman.cn,这可真是太有趣了;略扫一眼,便极大地激发了辩论欲。
该网站还声称:“理查德·马修·斯托曼(RMS),自由软件运动(GNU)发起人、自由软件基金会(FSF)前主席、与知识产权为敌的斗士、XX派、对XXX、XXX等XXXXX也要送温暖的极端左翼分子,被人尊称为顶级黑客、精神领袖,不过是明日黄花。开办此站的目的是正本清源、破除对RMS的迷信、揭露GNU运动的本质、最大程度地清除GNU带毒意识形态。”
文章没有直接标明作者,但看了一下网站页面底部,作者应该是一个叫“小衲”的人(他似乎还有个网站叫linux.zone)。
小衲在该文中,以标注的形式,对GPLv3全文进行大肆抨击,选用的翻译版本是阮坤良版。
GPL本身比较难懂,虽然阮版已经翻译的很不错了,但小衲在很多地方还是没有看明白,有很多自称看不懂的地方,也有很多完全理解错误的地方。其中可能还有点市场的论点,这些观点多少反映了一些人的困惑。
注1:本文中的GPL,不特指某个版本,虽然主要是说v3。
注2:本文中举的一些开源软件的例子,很多并不是GPL软件,但就是个例子而已,不用太纠结。正如小衲貌似批判GPL,很多地方更多是批判开源精神。
注3:本文所说“GPL软件”,是指按照GPL许可证发布的软件。
纵观该文,小衲的困惑主要是以下五点:
一、为什么只为用户着想,而欺负开发者?
小衲说:“近来细读了一下GPL协议中文版,发现它满是针对开发者的霸王条款,分不清开源的主方(开发者)和客方(用户),一个劲的强调用户自由自由自由,浅一看,挺美好,挺蛊惑人心,但只要仔细想想,这个只为用户着想的协议,本身前提就搞错了。没有开发者的代码,哪里来用户的自由?”
此人可能没有搞清楚开源软件的“用户”是什么概念,据我所知,凡是对源代码感兴趣的,都是程序员,都是软件公司,君不见,那些互联网大厂,哪个不是开源软件和开源代码的重度用户?!那些混迹在各个软件公司、各个甲方、乙方的所谓软件工程师、架构师,哪个不是高度受益于开源软件和开源代码?
从Linux到Android,从MySQL到Postgres,从Hadoop到Elasticsearch,从Apache到Nginx,从Docker到Kubernetes,哪家大厂没有用过?哪个代码是给最终用户看的?
所以,开源代码,最大的受益者是开发者、是软件公司、是互联网公司。所以GPL所给的自由,是开发者享受了最多!
不过,今后的世界将进入软件的世界,人人都将成为程序员。自由软件最终造福的,是所有人。
二、GPL自相矛盾,到底免费还是收费?
小衲说“GPL通篇都是一小撮人的一厢情愿,充满自相矛盾的表述,一会儿说所谓自由非免费,一会儿又说开源必须免费,真不知道经历了多少次内斗才形成这么一个文本!”
小衲看来对GPL允许收费的若干处描述没有完全看明白,尤其是他对第10条的理解完全错误(小衲错误以为“一旦第一次对自由软件进行收费,就不能重复收费”,完全不是那么回事嘛,有空可以看看我的“人话解读GPLv3”)。
其实,斯托曼也是人,也知道程序员要吃饭,他当年也曾靠卖Emacs过活,所以并不排斥收费。
下面是我整理的GPL关于收费的部分,给小衲以及不了解这块的看客解个惑。GPL认为可以收费的有这么几种:
1、你可以卖别人写的开源代码
比如你可以卖Linux内核源代码,虽然你没有写过一行Linux代码,你都可以卖,而且你收多少钱都可以。
但这里面的逻辑在于:你会下载,别人也会下载,别人为什么要从你这里买?除非他不知道这是开源的。或者,除非是你整理得很好,包装得很漂亮,弄得很方便,收费也不贵,那是有人乐意花钱买的(就好比有些收费的Linux发行版)。
去年有人在“咸鱼”上买一个开源程序“新蜂商城”,他卖30元,也确实有人买,因为他还手把手教人怎么搭建呢!“新蜂商城”作者可没兴趣干这事。
2、你可以卖你修改过的别人的代码
你收多少钱都可以。你觉得有人买就行。
你不要太高估了别人买你修改过代码的兴趣。
就好比你把Vim的源码改了改,你卖,你说能卖多少呢?所以不用给你限价。
3、你可以卖目标码
所谓目标码,可以简单理解为可执行文件这类。通常,所有商业软件卖的其实都是目标码。目标码你卖多少钱都行,但你要免费或者以不高于成本价提供源码。
由于你提供了源码,这样一来,别人也可以做出目标码,别人也可以卖,所以竞价就开始了。
由于作者(可以是公司、团队等)毕竟比较正宗、权威一些,所以可以卖的贵一点,毕竟大家都认他嘛!
为什么说要给源码限价(免费或者不高于成本价)?
我想到的一个原因是,对于一个GPL软件,如果你是作者或者衍生品作者,软件你收10万元,源码你收1000万(如果不限价),由于源码只在你手里,那几乎就是不开源了,因为一般人也买不起。除非有人花1000万买下来挂网上,大家才能免费获得。
4、你可以收维保费
就是说,你帮着安装软件、帮着解决问题和故障、帮着升级打补丁、帮着定期来看看有没有异常啥的,这种收费我觉得很正常,这就是一种服务费,也是一种典型的商业盈利模式(如红帽订阅)。大多数有点钱的甲方,都会买大量的维保服务,以免出了事没人托底。
5、其他并不在GPL关注范围之内的情况。
你可以用一切不违反GPL或者与GPL无关的方式赚钱,比如你用GPL软件提供云服务来赚钱(用这种的太多了);你可以利用自己的名声赚钱;原创作者可以通过双许可证赚钱(下面会提到);原创作者还可以弄一个多一些功能的企业版(就是专有软件)来赚钱。
注意,上面说的是可以收费的情况。GPLv3里面还有一条(第10条)是明令禁止收费的:你不能收GPL软件的版权费、专利费、许可费、版税等等这类授权费,授权都只能是免费的。
三、写代码这么辛苦,为什么让我们免费!
小衲说:“码代码是非常辛苦的活动,有时甚至可以用呕心沥血、鞠躬尽瘁来形容,在这种情况下正当权益还要被GPL剥夺,不是作死吗?”
本人评论:如果你是一个软件的原创作者,没人逼着你开源你的代码,没人逼着你用GPL。
用不用GPL,对原创作者而言,是一个心甘情愿自主选择的事。而如果你只是拿了别人的GPL源码,做了一些改动,你再呕心沥血,你也要贡献出源码。
道理是很浅显的,你免费用了我的代码,你也要回馈一些,对不对,这很公平吧!不服你就当原创作者。当原创作者是有很多好处的,你可以选择不用GPL,而且,即便你用了GPL,你仍然可以再用另一个许可证专门卖给企业。
有人会感到奇怪,一个已经用了GPL的软件,同时可以再以其他商业许可证出售?
是的,因为你是原创作者。你是版权人,你可以给一部分人用GPL授权,给另一部分人用其他许可证授权。
有人会说,那既然有开源的,为什么还会有人去买你其他许可证的呢?
有这么一种情况:企业想用某个开源软件,但又不想把自己的修改版开源,这时就可以花钱请作者授权,许可让自己的修改版无需开源。
说白了,就是“花钱免传染”。
GPL第5条说:“本许可证不允许你以其他形式授权该衍生作品。但如果你得到所有权人的允许,那你就可以。”
MiniGUI采用这种双许可证模式,仅在2007至2012年,就获得几千万元的软件许可收费。
四、为什么开发者只有虚名,没有权利!
小衲说:“GPL协议长篇大论,目的就一个:“确保用户的自由”,而且这个自由是绝对的自由。至于开发者的权利呢?就一条:申明版权,然而这个版权只是个虚名而已。”
本人评论:我活这么大,发现就是有些人,死活也不相信,这个世界真有能做无私贡献的人。依我这么多年对人性的了解,做无私奉献的人,光他获得的成就感、优越感、声望感,早就把他满足若干遍了!
五、开放了源码,怎么挣钱?
GPL第6条说目标码可以收费,源码要免费(或不高于成本)。小衲评论说:“这是为同行(英文counterpart冤家)大开方便之门啊。有了免费的源码,二进制包继续收费有什么意义?”
本人评论:没错,有了源码,理论上大家都可以做出目标码。所以开源代码的目标码通常也不收费。我下载过很多开源软件的目标码,几乎没见到有收费的。但GPL的初心,本来就不是赚大钱的。就好比你不能埋怨一个慈善组织,说他赚钱太少。想赚钱,你要靠其他方法,你不能靠建立或加入慈善组织来赚钱。
结语
怎么说呢,一个很现实很狭隘的人,理解不了有理想有情怀的人。
关于大教堂与市集
《大教堂与市集》(The Cathedral and the Bazaar)是埃里克·斯蒂芬·雷蒙(Eric Steven Raymond)所撰写的软件工程方法论。以Linux的核心开发过程以及作者自己主持开发的开放源代码软件──Fetchmail为讨论案例。文章在1997年5月27日发表,并在1999年出版成书。书中讨论两种不同的自由软件开发模式:
大教堂模式(The Cathedral model):源代码在软件发行后公开,但在软件的每个版本开发过程中是由一个专属的团队所控管的。作者以GNU Emacs及GCC这两软件为例。
市集模式(The Bazaar model):源代码在开发过程中即在互联网上公开,供人查看及开发。作者以Linux核心的创始者林纳斯·托瓦兹带领Linux核心的开发为例,亦引用fetchmail的开发为例。
此书的要义是“让够多人看到源代码,错误将无所遁形”(Given enough eyeballs, all bugs are shallow)林纳斯定律。作者表示大教堂模式的软件开发让程序调试的时间大幅增加,因为只有少数的开发者可参与修改工作,市集模式则相反。
雷蒙指出了19点在他开发多个软件项目中所学到的 "教训",每个学到的教训都跟开放软件所使用的最佳实践有关:
好软件都是起源于程序发展者要解决切身之痛。
优秀的程序师知道要写程序,伟大的程序师知道要改写(和重复利用)程序。
计划好如何舍弃一条路吧,你迟早会想尽办法这么做的(引自 Frederick Brooks'《人月神话:软件项目管理之道》)。
抱持正确的态度,就会发现有趣的问题。
当你对一个问题不再感兴趣时,你最后的责任就是找位能胜任的接棒人。
把用户视为共同开发者来对待,可以让你伤最少的脑筋,但做到源代码的快速改善和有效率地调试。
尽早且经常发表新版本,并且倾听用户的意见。
在一群足够多的 beta 测试者与共同开发者的情况下,几乎程序中的每一个问题都可以很快地找出来,并且由某个人很直觉的解决。
聪明的数据结构配上笨拙的代码要比相反的组合好。
如果你视 beta 版测试者如同你最珍贵的资源,那么他们会以此做为回报。
体认用户提供的巧思,以获取好点子,有时候越后到的越好。
通常,最适切和最有创意的解题法来自于发觉自己对问题原先的观念是错误的。
设计上完美,不是“没有东西能再被加入”,而是“没有东西能再被移出”。
任何的工具以我们所知道的方法来使用都会有用,但一个真正了不起的工具会以你从未想过的使用方法来发挥它的功能。
写作任何的通信闸软件时,要尽可能地不去扰动到通信的资料流 -- 并且绝对不要丢掉其中任何的信息,除非接收方强迫你这么做。
当你设计的语言不是严谨到“Turing-complete”,你可以采用比较平易的语法。
一个保密系统是否安全依存于它隐藏的秘密,注意不要有“虚拟秘密”。
解决一个有趣的问题,由找到一个你觉得有趣的问题开始。
假如项目发展协调者拥有至少跟互联网一样好的媒体,而他也不靠强制力来领导,那么一群人必定胜过一个人。
欧莱礼出版社于1999年发行此书的创举是,首次商业印刷出版的书以Creative Commons授权模式出版。
GPLv3基本精神
1、你可以免费使用、复制、修改、分发受保护程序,但分发时一定要提供源码。
2、你可以收费。比如可以针对目标码、源码的分发收费,可以针对软件的维修保养(主要是提供技术支持)收费;但不能收许可费、版税、专利许可费、授权费这类费用。
3、GPL程序的所有贡献者,自动免费提供了专利许可,承诺不会告人侵犯专利权(前提是你遵守了GPL)。
4、GPL程序允许别人破解。如果是用在消费类硬件上,要允许人修改并安装程序。
如果读过GPLv2
主要区别就是:
1、GPLv3对专利做了明确的说明。
2、GPLv3对类似TiVo这种硬件做了一些要求。
3、使用者可以按照要求加一些补充条款(主要是免责和保护版权人权益方面的)。
4、其他诸如允许破解、授权中止和恢复、术语改动等一些较小的改动。
TiVo是一种数字录像设备,它能帮助人们非常方便地录下电视节目并跳过广告。TiVo是基于Linux开的(Linux使用GPLv2),为了安全性考虑,TiVo Series2中添加了硬件保护,在启动时,由ROM对启动文件进行签名验证,以防止任何人修改TiVo软件(这被称为Tivoization)。人们确实可以自由查看TiVo源代码,复制它,并更改它,但如果没有签名私钥,你就无法在TiVo上运行你修改后的程序。
GPLv3在第六条要求TiVo这类厂商提供签名私钥(如果使用了GPLv3程序),使得人们可以运行修改后的代码。不过Linus对此表示明确的反对,他认为软件开发人员没有权利规定硬件厂商的行为,如果感到一家硬件厂商的专有行为是讨厌的,你可以购买其它厂商的产品。所以Linux现在使用的还是GPLv2。
GPLv2是没有这个要求的,而且GPLv2第6条说:“不能添加任何额外的限制”。仅从这一点看,GPLv2和GPLV3是不兼容的,因为两者的第6条是冲突的,不能合并GPLv2的代码和GPLv3的代码在一起。
但Linus Torvalds却不这样认为,Linux 30 年:他与红帽同认为 Linux 成功的关键在于采用了 GPLv2 开源许可
2021年8月25日,Linux 迎来了 30 岁的生日。在 Linus Torvalds 发布 Linux 30 周年之际,Red Hat 公司表示,Linux 之所以这么成功,是因为采用了正确的许可方式,即 GPLv2 许可,允许复制、改进、分发和要求共享更改。
Linus Torvalds 曾表示,他最初在非 GPL 版权下发布了带有完整源代码的 Linux,比 GPL 版权要严格很多:它要求所有源代码永远可用,并且不允许将 Linux 源代码用于商业用途。Linus 还表示,Linux 的诞生源于一个叫“Minix”教学操作系统,由于“Minix”不仅昂贵,而且功能简单,因此他才着手开发了 Linux。Torvalds 希望人们可以通过 ftp 轻松获得完整的 Linux 源代码,而且不希望它太贵。大约发布半年后,Torvalds 将版权更改为了 GPL,因为他发现如果版权限制太严格,会禁止掉一些原本非常合适的使用场景。Linus Torvalds 表示,改为 GPL 是他为 Linux 做过的最正确的事情。
Torvalds 说开发 Linux 时他真的没有想得太远,更多是一种概念验证,向外展示下他过去几个月的工作成果,更好的理解他的新 PC 硬件。Linux 最初是作为替代品提供给负担不起昂贵的商业 UNIX 系统的人,因此它采用的许可证是不能商业使用。当有人想通过软盘在本地的 Unix 用户组分发 Linux 但想要至少收回软盘的费用后,他切换到了 GPL 许可证。随后基于软盘的发行版 SLS 和 Slackware 就诞生了。他相信选择 GPL 是 Linux 以及 Git 成功的一个重要部分,他认为 GPLv2 完美的平衡了“每个人在相同规则下的工作”。
有人认为 Red Hat 是最商业化的 Linux 发行版,对此红帽 Linux 工程副总裁 Mike McGrath 回应说:“ 现在最重要的是社区人才的竞争,如果你是一名想要参与开源的开发人员,那么只有在 Linux 社区工作才能拥有更多的机会。但对于一个企业来说,商业化不一定是坏事情。”
Linux 另一个成功的因素是一直由 Linus Torvalds 所领导。“我在 1995 年就开始使用 Linux,我认为 Torvalds 在领导 Linux 这方面做得很好。”Mike McGrath 说,并且,“如果没有 Linux,就不会有 Android。”如今 30 年过去,Linux 无疑发展得非常成功,目前从我们每天以来的智能手机到国际空间站,都运行着 Linux。2020 年的最新数据表明,全球云计算市场每年投入超过 1000 亿美元,90% 的云端设备运行在 Linux 上。我们甚至可以说,对互联网的依赖就等同于对 Linux 的依赖。
另一个成功的关键在于保持Unix Posix兼容性,外加大量商业公司投入。虽然不是每个开源软件都喜欢 GPL,但是如果没有 GPL ,或许不会有如今的 Linux 和整个开源世界。
Linus 全身每一个细胞都在拒绝 GPLv3
“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 就立马神经反射性地做出反应。
1、表面上 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 的理由到底是什么?答案呼之欲出。
2、实际上是一次理念分歧大爆发
“我自己也不一定喜欢 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 的问题核心。
2.1、GPLv3 注定比 GPLv2 更 GNU、更政治,Linus 坚决不入教
16 年未变动,GPLv2 难免会有些过时,比如不够国际化、不够兼容、不够宽容等,GPLv3 的推出似乎顺理成章。但这也注定了 GPLv3 会朝 RMS 设定好的自由软件哲学(RMS 希望所有软件都是自由的,专有软件狗带)更进一步。
“这个协议(GPLv3)带有宗教性质”,Linus 代表的开源阵营并不反对专有软件,而且,Linus 在 Transmeta 从事专有软件工作多年,他允许专有显卡驱动程序作为模块加载到 Linux 内核中。
Linus 自比是奥本海默,这位科学家因为自己的成果被用来制造原子弹而深切自责,所以 Linus 拒绝涉猎政治。而与他同阵营的 ESR 也是一样本能性拒绝政治,一旦被人说是共产主义者,还会面红耳赤。

在纪录片《操作系统革命》中,被问及是否是共产主义,ESR 一秒变脸,RMS 就很淡定
2.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."
我想要的许可证只需要两个功能:源码可见并确保持续改进。
2.3、到处吵架和法律诉讼,让 Linus 的小心脏受不了
Linus 不仅一次表达了自己对法律问题的不耐烦,他宁愿老老实实写代码,也不愿意一周抽出一天时间来处理法律问题。某次,Linus 甚至还建议 Linux 内核峰会上关于 GPL 的会议的标题应该是 ——“律师:对开放有毒,对社区有毒,对项目有毒”。
而 GPL 在被制造出来的那一刻,就是准备好了被拿上法庭的。
当看到一些人在法庭上大打出手时, Linus 表示,“ 诉讼会破坏社区,会破坏信任,会破坏我们多年来通过友善而建立的所有善意。” 相较于这种激烈的方式,Linus 更喜欢的是 “悄悄地与公司合作,从内部说服他们。”
2.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 无关。
看完了上面的温和的批评之声外,下面来看看国内对GPL抨击与反抨击,尽管本站作者对GPL协议敬而远之,但如此激烈的口舌交锋还是难得一见的。
在百度里面搜“斯托曼 GPL”,第一条就是“GPL协议大剖析—GPL就是给软件开发者们准备的坑”,这是一篇猛烈抨击GPL和斯托曼的文章,该网站名为“斯托曼与GNU运动评论”,域名居然是stallman.cn,这可真是太有趣了;略扫一眼,便极大地激发了辩论欲。
该网站还声称:“理查德·马修·斯托曼(RMS),自由软件运动(GNU)发起人、自由软件基金会(FSF)前主席、与知识产权为敌的斗士、XX派、对XXX、XXX等XXXXX也要送温暖的极端左翼分子,被人尊称为顶级黑客、精神领袖,不过是明日黄花。开办此站的目的是正本清源、破除对RMS的迷信、揭露GNU运动的本质、最大程度地清除GNU带毒意识形态。”
文章没有直接标明作者,但看了一下网站页面底部,作者应该是一个叫“小衲”的人(他似乎还有个网站叫linux.zone)。
小衲在该文中,以标注的形式,对GPLv3全文进行大肆抨击,选用的翻译版本是阮坤良版。
GPL本身比较难懂,虽然阮版已经翻译的很不错了,但小衲在很多地方还是没有看明白,有很多自称看不懂的地方,也有很多完全理解错误的地方。其中可能还有点市场的论点,这些观点多少反映了一些人的困惑。
注1:本文中的GPL,不特指某个版本,虽然主要是说v3。
注2:本文中举的一些开源软件的例子,很多并不是GPL软件,但就是个例子而已,不用太纠结。正如小衲貌似批判GPL,很多地方更多是批判开源精神。
注3:本文所说“GPL软件”,是指按照GPL许可证发布的软件。
纵观该文,小衲的困惑主要是以下五点:
一、为什么只为用户着想,而欺负开发者?
小衲说:“近来细读了一下GPL协议中文版,发现它满是针对开发者的霸王条款,分不清开源的主方(开发者)和客方(用户),一个劲的强调用户自由自由自由,浅一看,挺美好,挺蛊惑人心,但只要仔细想想,这个只为用户着想的协议,本身前提就搞错了。没有开发者的代码,哪里来用户的自由?”
此人可能没有搞清楚开源软件的“用户”是什么概念,据我所知,凡是对源代码感兴趣的,都是程序员,都是软件公司,君不见,那些互联网大厂,哪个不是开源软件和开源代码的重度用户?!那些混迹在各个软件公司、各个甲方、乙方的所谓软件工程师、架构师,哪个不是高度受益于开源软件和开源代码?
从Linux到Android,从MySQL到Postgres,从Hadoop到Elasticsearch,从Apache到Nginx,从Docker到Kubernetes,哪家大厂没有用过?哪个代码是给最终用户看的?
所以,开源代码,最大的受益者是开发者、是软件公司、是互联网公司。所以GPL所给的自由,是开发者享受了最多!
不过,今后的世界将进入软件的世界,人人都将成为程序员。自由软件最终造福的,是所有人。
二、GPL自相矛盾,到底免费还是收费?
小衲说“GPL通篇都是一小撮人的一厢情愿,充满自相矛盾的表述,一会儿说所谓自由非免费,一会儿又说开源必须免费,真不知道经历了多少次内斗才形成这么一个文本!”
小衲看来对GPL允许收费的若干处描述没有完全看明白,尤其是他对第10条的理解完全错误(小衲错误以为“一旦第一次对自由软件进行收费,就不能重复收费”,完全不是那么回事嘛,有空可以看看我的“人话解读GPLv3”)。
其实,斯托曼也是人,也知道程序员要吃饭,他当年也曾靠卖Emacs过活,所以并不排斥收费。
下面是我整理的GPL关于收费的部分,给小衲以及不了解这块的看客解个惑。GPL认为可以收费的有这么几种:
1、你可以卖别人写的开源代码
比如你可以卖Linux内核源代码,虽然你没有写过一行Linux代码,你都可以卖,而且你收多少钱都可以。
但这里面的逻辑在于:你会下载,别人也会下载,别人为什么要从你这里买?除非他不知道这是开源的。或者,除非是你整理得很好,包装得很漂亮,弄得很方便,收费也不贵,那是有人乐意花钱买的(就好比有些收费的Linux发行版)。
去年有人在“咸鱼”上买一个开源程序“新蜂商城”,他卖30元,也确实有人买,因为他还手把手教人怎么搭建呢!“新蜂商城”作者可没兴趣干这事。
2、你可以卖你修改过的别人的代码
你收多少钱都可以。你觉得有人买就行。
你不要太高估了别人买你修改过代码的兴趣。
就好比你把Vim的源码改了改,你卖,你说能卖多少呢?所以不用给你限价。
3、你可以卖目标码
所谓目标码,可以简单理解为可执行文件这类。通常,所有商业软件卖的其实都是目标码。目标码你卖多少钱都行,但你要免费或者以不高于成本价提供源码。
由于你提供了源码,这样一来,别人也可以做出目标码,别人也可以卖,所以竞价就开始了。
由于作者(可以是公司、团队等)毕竟比较正宗、权威一些,所以可以卖的贵一点,毕竟大家都认他嘛!
为什么说要给源码限价(免费或者不高于成本价)?
我想到的一个原因是,对于一个GPL软件,如果你是作者或者衍生品作者,软件你收10万元,源码你收1000万(如果不限价),由于源码只在你手里,那几乎就是不开源了,因为一般人也买不起。除非有人花1000万买下来挂网上,大家才能免费获得。
4、你可以收维保费
就是说,你帮着安装软件、帮着解决问题和故障、帮着升级打补丁、帮着定期来看看有没有异常啥的,这种收费我觉得很正常,这就是一种服务费,也是一种典型的商业盈利模式(如红帽订阅)。大多数有点钱的甲方,都会买大量的维保服务,以免出了事没人托底。
5、其他并不在GPL关注范围之内的情况。
你可以用一切不违反GPL或者与GPL无关的方式赚钱,比如你用GPL软件提供云服务来赚钱(用这种的太多了);你可以利用自己的名声赚钱;原创作者可以通过双许可证赚钱(下面会提到);原创作者还可以弄一个多一些功能的企业版(就是专有软件)来赚钱。
注意,上面说的是可以收费的情况。GPLv3里面还有一条(第10条)是明令禁止收费的:你不能收GPL软件的版权费、专利费、许可费、版税等等这类授权费,授权都只能是免费的。
三、写代码这么辛苦,为什么让我们免费!
小衲说:“码代码是非常辛苦的活动,有时甚至可以用呕心沥血、鞠躬尽瘁来形容,在这种情况下正当权益还要被GPL剥夺,不是作死吗?”
本人评论:如果你是一个软件的原创作者,没人逼着你开源你的代码,没人逼着你用GPL。
用不用GPL,对原创作者而言,是一个心甘情愿自主选择的事。而如果你只是拿了别人的GPL源码,做了一些改动,你再呕心沥血,你也要贡献出源码。
道理是很浅显的,你免费用了我的代码,你也要回馈一些,对不对,这很公平吧!不服你就当原创作者。当原创作者是有很多好处的,你可以选择不用GPL,而且,即便你用了GPL,你仍然可以再用另一个许可证专门卖给企业。
有人会感到奇怪,一个已经用了GPL的软件,同时可以再以其他商业许可证出售?
是的,因为你是原创作者。你是版权人,你可以给一部分人用GPL授权,给另一部分人用其他许可证授权。
有人会说,那既然有开源的,为什么还会有人去买你其他许可证的呢?
有这么一种情况:企业想用某个开源软件,但又不想把自己的修改版开源,这时就可以花钱请作者授权,许可让自己的修改版无需开源。
说白了,就是“花钱免传染”。
GPL第5条说:“本许可证不允许你以其他形式授权该衍生作品。但如果你得到所有权人的允许,那你就可以。”
MiniGUI采用这种双许可证模式,仅在2007至2012年,就获得几千万元的软件许可收费。
四、为什么开发者只有虚名,没有权利!
小衲说:“GPL协议长篇大论,目的就一个:“确保用户的自由”,而且这个自由是绝对的自由。至于开发者的权利呢?就一条:申明版权,然而这个版权只是个虚名而已。”
本人评论:我活这么大,发现就是有些人,死活也不相信,这个世界真有能做无私贡献的人。依我这么多年对人性的了解,做无私奉献的人,光他获得的成就感、优越感、声望感,早就把他满足若干遍了!
五、开放了源码,怎么挣钱?
GPL第6条说目标码可以收费,源码要免费(或不高于成本)。小衲评论说:“这是为同行(英文counterpart冤家)大开方便之门啊。有了免费的源码,二进制包继续收费有什么意义?”
本人评论:没错,有了源码,理论上大家都可以做出目标码。所以开源代码的目标码通常也不收费。我下载过很多开源软件的目标码,几乎没见到有收费的。但GPL的初心,本来就不是赚大钱的。就好比你不能埋怨一个慈善组织,说他赚钱太少。想赚钱,你要靠其他方法,你不能靠建立或加入慈善组织来赚钱。
结语
怎么说呢,一个很现实很狭隘的人,理解不了有理想有情怀的人。
关于大教堂与市集
《大教堂与市集》(The Cathedral and the Bazaar)是埃里克·斯蒂芬·雷蒙(Eric Steven Raymond)所撰写的软件工程方法论。以Linux的核心开发过程以及作者自己主持开发的开放源代码软件──Fetchmail为讨论案例。文章在1997年5月27日发表,并在1999年出版成书。书中讨论两种不同的自由软件开发模式:
大教堂模式(The Cathedral model):源代码在软件发行后公开,但在软件的每个版本开发过程中是由一个专属的团队所控管的。作者以GNU Emacs及GCC这两软件为例。
市集模式(The Bazaar model):源代码在开发过程中即在互联网上公开,供人查看及开发。作者以Linux核心的创始者林纳斯·托瓦兹带领Linux核心的开发为例,亦引用fetchmail的开发为例。
此书的要义是“让够多人看到源代码,错误将无所遁形”(Given enough eyeballs, all bugs are shallow)林纳斯定律。作者表示大教堂模式的软件开发让程序调试的时间大幅增加,因为只有少数的开发者可参与修改工作,市集模式则相反。
雷蒙指出了19点在他开发多个软件项目中所学到的 "教训",每个学到的教训都跟开放软件所使用的最佳实践有关:
好软件都是起源于程序发展者要解决切身之痛。
优秀的程序师知道要写程序,伟大的程序师知道要改写(和重复利用)程序。
计划好如何舍弃一条路吧,你迟早会想尽办法这么做的(引自 Frederick Brooks'《人月神话:软件项目管理之道》)。
抱持正确的态度,就会发现有趣的问题。
当你对一个问题不再感兴趣时,你最后的责任就是找位能胜任的接棒人。
把用户视为共同开发者来对待,可以让你伤最少的脑筋,但做到源代码的快速改善和有效率地调试。
尽早且经常发表新版本,并且倾听用户的意见。
在一群足够多的 beta 测试者与共同开发者的情况下,几乎程序中的每一个问题都可以很快地找出来,并且由某个人很直觉的解决。
聪明的数据结构配上笨拙的代码要比相反的组合好。
如果你视 beta 版测试者如同你最珍贵的资源,那么他们会以此做为回报。
体认用户提供的巧思,以获取好点子,有时候越后到的越好。
通常,最适切和最有创意的解题法来自于发觉自己对问题原先的观念是错误的。
设计上完美,不是“没有东西能再被加入”,而是“没有东西能再被移出”。
任何的工具以我们所知道的方法来使用都会有用,但一个真正了不起的工具会以你从未想过的使用方法来发挥它的功能。
写作任何的通信闸软件时,要尽可能地不去扰动到通信的资料流 -- 并且绝对不要丢掉其中任何的信息,除非接收方强迫你这么做。
当你设计的语言不是严谨到“Turing-complete”,你可以采用比较平易的语法。
一个保密系统是否安全依存于它隐藏的秘密,注意不要有“虚拟秘密”。
解决一个有趣的问题,由找到一个你觉得有趣的问题开始。
假如项目发展协调者拥有至少跟互联网一样好的媒体,而他也不靠强制力来领导,那么一群人必定胜过一个人。
欧莱礼出版社于1999年发行此书的创举是,首次商业印刷出版的书以Creative Commons授权模式出版。
GPLv3基本精神
1、你可以免费使用、复制、修改、分发受保护程序,但分发时一定要提供源码。
2、你可以收费。比如可以针对目标码、源码的分发收费,可以针对软件的维修保养(主要是提供技术支持)收费;但不能收许可费、版税、专利许可费、授权费这类费用。
3、GPL程序的所有贡献者,自动免费提供了专利许可,承诺不会告人侵犯专利权(前提是你遵守了GPL)。
4、GPL程序允许别人破解。如果是用在消费类硬件上,要允许人修改并安装程序。
如果读过GPLv2
主要区别就是:
1、GPLv3对专利做了明确的说明。
2、GPLv3对类似TiVo这种硬件做了一些要求。
3、使用者可以按照要求加一些补充条款(主要是免责和保护版权人权益方面的)。
4、其他诸如允许破解、授权中止和恢复、术语改动等一些较小的改动。
TiVo是一种数字录像设备,它能帮助人们非常方便地录下电视节目并跳过广告。TiVo是基于Linux开的(Linux使用GPLv2),为了安全性考虑,TiVo Series2中添加了硬件保护,在启动时,由ROM对启动文件进行签名验证,以防止任何人修改TiVo软件(这被称为Tivoization)。人们确实可以自由查看TiVo源代码,复制它,并更改它,但如果没有签名私钥,你就无法在TiVo上运行你修改后的程序。
GPLv3在第六条要求TiVo这类厂商提供签名私钥(如果使用了GPLv3程序),使得人们可以运行修改后的代码。不过Linus对此表示明确的反对,他认为软件开发人员没有权利规定硬件厂商的行为,如果感到一家硬件厂商的专有行为是讨厌的,你可以购买其它厂商的产品。所以Linux现在使用的还是GPLv2。
GPLv2是没有这个要求的,而且GPLv2第6条说:“不能添加任何额外的限制”。仅从这一点看,GPLv2和GPLV3是不兼容的,因为两者的第6条是冲突的,不能合并GPLv2的代码和GPLv3的代码在一起。
但Linus Torvalds却不这样认为,Linux 30 年:他与红帽同认为 Linux 成功的关键在于采用了 GPLv2 开源许可
2021年8月25日,Linux 迎来了 30 岁的生日。在 Linus Torvalds 发布 Linux 30 周年之际,Red Hat 公司表示,Linux 之所以这么成功,是因为采用了正确的许可方式,即 GPLv2 许可,允许复制、改进、分发和要求共享更改。
Linus Torvalds 曾表示,他最初在非 GPL 版权下发布了带有完整源代码的 Linux,比 GPL 版权要严格很多:它要求所有源代码永远可用,并且不允许将 Linux 源代码用于商业用途。Linus 还表示,Linux 的诞生源于一个叫“Minix”教学操作系统,由于“Minix”不仅昂贵,而且功能简单,因此他才着手开发了 Linux。Torvalds 希望人们可以通过 ftp 轻松获得完整的 Linux 源代码,而且不希望它太贵。大约发布半年后,Torvalds 将版权更改为了 GPL,因为他发现如果版权限制太严格,会禁止掉一些原本非常合适的使用场景。Linus Torvalds 表示,改为 GPL 是他为 Linux 做过的最正确的事情。
Torvalds 说开发 Linux 时他真的没有想得太远,更多是一种概念验证,向外展示下他过去几个月的工作成果,更好的理解他的新 PC 硬件。Linux 最初是作为替代品提供给负担不起昂贵的商业 UNIX 系统的人,因此它采用的许可证是不能商业使用。当有人想通过软盘在本地的 Unix 用户组分发 Linux 但想要至少收回软盘的费用后,他切换到了 GPL 许可证。随后基于软盘的发行版 SLS 和 Slackware 就诞生了。他相信选择 GPL 是 Linux 以及 Git 成功的一个重要部分,他认为 GPLv2 完美的平衡了“每个人在相同规则下的工作”。
有人认为 Red Hat 是最商业化的 Linux 发行版,对此红帽 Linux 工程副总裁 Mike McGrath 回应说:“ 现在最重要的是社区人才的竞争,如果你是一名想要参与开源的开发人员,那么只有在 Linux 社区工作才能拥有更多的机会。但对于一个企业来说,商业化不一定是坏事情。”
Linux 另一个成功的因素是一直由 Linus Torvalds 所领导。“我在 1995 年就开始使用 Linux,我认为 Torvalds 在领导 Linux 这方面做得很好。”Mike McGrath 说,并且,“如果没有 Linux,就不会有 Android。”如今 30 年过去,Linux 无疑发展得非常成功,目前从我们每天以来的智能手机到国际空间站,都运行着 Linux。2020 年的最新数据表明,全球云计算市场每年投入超过 1000 亿美元,90% 的云端设备运行在 Linux 上。我们甚至可以说,对互联网的依赖就等同于对 Linux 的依赖。
另一个成功的关键在于保持Unix Posix兼容性,外加大量商业公司投入。虽然不是每个开源软件都喜欢 GPL,但是如果没有 GPL ,或许不会有如今的 Linux 和整个开源世界。
Linus 全身每一个细胞都在拒绝 GPLv3
“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 就立马神经反射性地做出反应。
1、表面上 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 的理由到底是什么?答案呼之欲出。
2、实际上是一次理念分歧大爆发
“我自己也不一定喜欢 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 的问题核心。
2.1、GPLv3 注定比 GPLv2 更 GNU、更政治,Linus 坚决不入教
16 年未变动,GPLv2 难免会有些过时,比如不够国际化、不够兼容、不够宽容等,GPLv3 的推出似乎顺理成章。但这也注定了 GPLv3 会朝 RMS 设定好的自由软件哲学(RMS 希望所有软件都是自由的,专有软件狗带)更进一步。
“这个协议(GPLv3)带有宗教性质”,Linus 代表的开源阵营并不反对专有软件,而且,Linus 在 Transmeta 从事专有软件工作多年,他允许专有显卡驱动程序作为模块加载到 Linux 内核中。
Linus 自比是奥本海默,这位科学家因为自己的成果被用来制造原子弹而深切自责,所以 Linus 拒绝涉猎政治。而与他同阵营的 ESR 也是一样本能性拒绝政治,一旦被人说是共产主义者,还会面红耳赤。

在纪录片《操作系统革命》中,被问及是否是共产主义,ESR 一秒变脸,RMS 就很淡定
2.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."
我想要的许可证只需要两个功能:源码可见并确保持续改进。
2.3、到处吵架和法律诉讼,让 Linus 的小心脏受不了
Linus 不仅一次表达了自己对法律问题的不耐烦,他宁愿老老实实写代码,也不愿意一周抽出一天时间来处理法律问题。某次,Linus 甚至还建议 Linux 内核峰会上关于 GPL 的会议的标题应该是 ——“律师:对开放有毒,对社区有毒,对项目有毒”。
而 GPL 在被制造出来的那一刻,就是准备好了被拿上法庭的。
当看到一些人在法庭上大打出手时, Linus 表示,“ 诉讼会破坏社区,会破坏信任,会破坏我们多年来通过友善而建立的所有善意。” 相较于这种激烈的方式,Linus 更喜欢的是 “悄悄地与公司合作,从内部说服他们。”
2.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 无关。
该文章最后由 阿炯 于 2024-01-05 11:29:56 更新,目前是第 2 版。