1983 年 9 月 27 日,MIT 人工智能实验室的一台打印机引发了一场运动。理查德·斯托曼(Richard Matthew Stallman,缩写 RMS)想修改一台 Xerox 激光打印机的驱动程序——它频繁卡纸却不通知用户。但 Xerox 拒绝提供源代码。
这个拒绝让斯托曼极度不安。在他看来,软件本该像科学知识一样自由流通:任何人都应该能读它、改它、分享它。无法修改一台自己在用的机器的软件,是对用户自由的根本剥夺。
同年,他在网络新闻组上发布了一条公告:他将开始编写一个完全由自由软件构成的类 Unix 操作系统。他把它叫做 GNU(GNU's Not Unix,递归缩写)。
破除误解:"免费"不是关键,"自由"才是
"Free Software"在英文中有双重含义:免费(free as in free beer)和自由(free as in free speech)。斯托曼强调的始终是后者。
自由软件的四项基本自由: 1. 使用自由:任何目的下运行程序的自由 2. 学习自由:学习程序如何工作、修改以适应需求的自由(需要源代码) 3. 分发自由:分发副本以帮助他人的自由 4. 改进自由:改进程序并向公众发布改进版的自由(需要源代码)
这四项自由,是斯托曼整个思想体系的核心。一个软件是否"自由",不取决于价格,而取决于用户是否拥有这四项权利。
现场:GNU 项目与 GPL
1983 年底启动 GNU 项目后,斯托曼开始逐一编写 Unix 工具链的自由替代品:Emacs 文本编辑器、GCC(GNU 编译器集合)、GDB(GNU 调试器)、GNU Make……
这些并非平庸的复制品。早在 1976 年,斯托曼就在 MIT 人工智能实验室参与创造了最早的可扩展 Emacs——它的革命性在于编辑器本身可以用 Lisp 方言改写和扩展,用户定制编辑器就像写普通配置一样自然。GNU Emacs(1985 年首次广泛发布)最初基于詹姆斯·高斯林(James Gosling)写的 Unix 版 Emacs,但高斯林把代码卖给了 Unipress 公司,后者主张版权、禁止自由分发。斯托曼被迫逐行重写了全部代码。这次"自由变私有"的亲身经历让他确信:光有共享的善意不够,必须有法律机制把自由固定下来。
GCC 的故事同样说明问题。1987 年 3 月 GCC 发布首个测试版,两个月后 1.0 版问世。它真正的创举不在优化技术,而在架构:语言前端与机器后端清晰分离,支持一门新语言或一种新 CPU 都只需补写对应的一半。这个设计让 GCC 成为可移植的自由编译器底座——先有一个能自由使用的编译器,才可能从源码构建出整个自由系统,而不必信任任何专有二进制。斯托曼后来因 Emacs 获 1990 年 ACM 格蕾丝·霍珀奖,同年获麦克阿瑟奖;2015 年,ACM 又将软件系统奖授予 GCC,称其为自由软件社区的基石。
GNU 工具还有一条贯穿始终的工程准则:不设武断的限制。原版 Unix 工具常有写死的行宽、文件名长度或内存上限,GNU 版本被要求以动态分配消除这类天花板——同样的工具,必须能吞下任何规模的输入。这条准则让 GNU 工具在实用性上反超了它模仿的对象,为后来的 GNU/Linux 组合铺平了道路。
但代码写出来,怎么保证它不会被人"私有化"?如果有人修改 GNU 软件后以专有软件发布,不提供源代码,自由软件不就失去意义了?
斯托曼的解决方案是法律上的天才之举:Copyleft(版权左置)。他不放弃版权,而是用版权来要求:任何人分发基于 GNU 软件的作品,必须以同等条款(即也提供源代码和相同的自由)分发。
1989 年,这个想法被写入 GPL(GNU General Public License,GNU 通用公共许可证)。GPL 的逻辑是:用版权法来对抗版权法对自由的限制——用斯托曼的话说,是"版权黑客(copyright hack)"。
Copyleft 的机制值得细看。版权在作品完成时自动产生,无需登记,GPL 正是利用这一点:它不放弃任何权利,而是把授权变成有条件的——你可以复制、修改、再分发,条件是衍生作品必须以同样的条款附带源代码继续分发。一旦违反条件,授权自动终止,此后再分发即构成版权侵权。条款因此随代码自动传播,不需要与每个下游使用者逐一谈判。GPL 自身也在封堵漏洞中迭代:1991 年的 GPLv2 加入"若法律限制使你无法自由分发,则你根本不得分发"的条款;2007 年 6 月 29 日发布的 GPLv3 针对两类新威胁——TiVo 式硬件锁定(厂商给出源码,却用数字签名阻止用户运行修改版)和微软与 Novell 2006 年的专利协议(让部分 Linux 用户单独获得专利豁免,分化社区)——分别加入了安装信息条款与专利反制条款。到 2020 年代,GPL 家族仍是自由软件世界使用最广泛、法律实践最充分的许可证之一。
GPL 后来成为开源世界影响最广的许可证。Linux 内核使用 GPL v2,GCC、GDB 等 GNU 工具使用 GPL,这意味着这些工具形成的整个"自由软件生态系统",其自由性由 GPL 的法律机制来保障。
1985 年:自由软件基金会
1985 年,斯托曼创建了自由软件基金会(Free Software Foundation,FSF),作为 GNU 项目的法律和资金组织。FSF 持有 GNU 软件的版权(通过版权分配协议),这使它能够以统一立场应对潜在的法律挑战。基金会的运转本身也是一场实验:在互联网尚未普及的年代,FSF 靠销售装有 GNU 软件的磁带、印制手册和接受捐赠维持——"卖自由软件的物理载体"算是最早的自由软件商业模式之一。
斯托曼本人拒绝收取商业软件的专利费,放弃了本可带来巨额财富的个人利益。他认为,接受这些钱意味着与他所反对的体制合谋。
GNU/Linux:被遗忘的前缀
1991 年,Linus Torvalds 发布了 Linux 内核。这填补了 GNU 体系中最后一块缺失:GNU 有所有工具,但缺少一个完整的内核。GNU 自己的内核 Hurd 选择了学术上更时髦的微内核路线(基于 Mach),调试难度远超预期,始终未能长成能日常使用的系统——这段历史常被引为"架构选择决定项目命运"的案例,也反衬出 Linux 宏内核"先跑起来再说"路线的幸运。GNU 工具 + Linux 内核 = 一个完整的自由操作系统。
但这个系统被广泛称为"Linux",而不是"GNU/Linux"。斯托曼对此至今耿耿于怀:他坚持认为应该称之为"GNU/Linux",因为 GNU 工具是整个系统的重要组成部分,将其省略是对历史的不公。这场名称之争的实质是归因之争:在一个 GNU 组件的体量和历史都早于内核的系统里,只叫 Linux,会让自由软件运动的贡献在公众认知中变得不可见——名字背后,是"谁来叙述这段历史"的问题。这一争论在技术社区延续至今,双方各持己见,Linus Torvalds 本人明确表示不认同斯托曼的立场。
代价与争议
斯托曼以其不妥协著称——在思想上和行为上。他拒绝使用智能手机(因为大多数智能手机运行专有软件),不使用服务条款不符合自由软件标准的网站,不接受在使用专有软件演示的场合发表演讲。
2019 年 9 月,斯托曼在公开邮件中就杰弗里·爱泼斯坦(Jeffrey Epstein)案发表了一系列措辞不当的评论,被广泛认为是在为相关性行为辩护(尽管他本人否认这一解读)。事件引发强烈批评,他随即辞去了 FSF 主席职务和在 MIT 的访问科学家职务。
2021 年 3 月,斯托曼宣布重新加入 FSF 董事会,再度引发争议。超过 2600 位开发者和研究者签名呼吁他退出所有领导职务;同时也有人签名支持他复职。这场风波折射出开源/自由软件社区内部,关于技术贡献与个人行为标准之间边界的深层矛盾。
"开源"vs."自由软件":1998 年 2 月,网景宣布开放浏览器源码后,埃里克·雷蒙德(Eric Raymond)、布鲁斯·佩伦斯(Bruce Perens)等人召开策略会议,决定启用"开源"(open source)一词——由克里斯汀·彼得森(Christine Peterson)在会上提议——刻意向企业示好,把话术从"自由与伦理"换成"工程效率"。斯托曼与开源运动的分歧由此公开化。开源强调的是开放源代码的实用好处(软件质量更高、安全性更好);斯托曼强调的是道德层面的自由——这是价值观的差异,不是表述上的不同。他明确拒绝使用"开源"这个词,因为它回避了他认为最重要的伦理问题:在"开源"框架里,企业大规模采纳就是胜利;在"自由"框架里,用户得到多少自由才是判据。
跨域连接
- 科斯定理:科斯说在交易成本为零时,权利的初始配置不影响最终结果。版权左置的实际效力恰好证明交易成本从来不为零:把"衍生作品必须同样开放"写进许可证,条款就随代码自动传播,不必逐个谈判。它的力量来自把协商成本压到零,而不是来自道德说服。
- 法治:一条规则能否被执行,取决于违规是否可观察、由谁提起、以何种救济。这套许可把触发点设在分发这个可观察行为上,由版权持有人提起,救济是许可终止而非赔偿——比赔偿更有威慑,因为继续使用本身就变成侵权。基金会集中持有版权,正是为了让第二项成立;三者缺一,条款就形同虚设。
- 自由:四项自由里,学习与改进都明确附带了行使条件——没有源代码,"修改的自由"在物理上无法行使。这是把自由定义成实际可行使的能力,而不是法律上的不被禁止。判据由此变得可操作:一项自由若缺少行使条件,宣告它并不改变任何人的处境,只改变宣告者的姿态。
- 社会运动:同一批实践、两套论证,胜负条件因此不同。在"自由"的框架里,企业大规模采纳算作妥协;在"开源"的框架里,同一件事算作胜利。框架分裂通常发生在运动即将进入主流时,因为这时必须把"什么算赢"说清楚——分歧不是措辞之争,而是目标函数之争。
- 编译器:自由软件运动最先产出的是编译器与调试器,这不是偶然。工具链是能自我复制的最小闭包:先有可自由使用的编译器,才可能从源码构建出整个系统而不依赖任何专有二进制。这条自举问题至今没有完全解决,可重现构建仍在处理它的残余。
参考文献
- Williams, S. Free as in Freedom: Richard Stallman's Crusade for Free Software. O'Reilly, 2002. (传记,GNU FDL 授权,可免费在线获取)
- Stallman, R. The GNU Manifesto. 1985(gnu.org). (GNU 项目的纲领文件,自由软件论证的起点)
- Free Software Foundation. GNU General Public License, Version 3. 2007. (copyleft 机制的成熟形态,含安装信息与专利条款)
延伸阅读
- Stallman, R. Free Software, Free Society: Selected Essays. 3rd ed. FSF, 2015. (论文集,涵盖自由软件的伦理与政治论证)
- Raymond, E. The Cathedral and the Bazaar. O'Reilly, 1999. (从开源角度对比自由软件运动)
- GNU 操作系统官网:gnu.org