浅谈自由软件
当你听到英文的“自由软件”(Free Software)这个词时,你第一反应是什么?
“哦,就是免费软件吧?”
No!
这恰恰是对自由软件最大、最普遍的误解。英文中的“Free”既可以表示“免费”(free of charge),也可以表示“自由”(freedom)。
那么,自由软件到底是什么?它和我们常说的“开源软件”有什么区别?这背后又有着怎样波澜壮阔的历史?
今天,让我们一起走进自由软件的世界。
其实有时使用“Libre”代表自由软件,以避免“Free”带来的误解
一、那个改变世界的胡子大叔
RMS 的愤怒
故事要从 1980 年代的 MIT 人工智能实验室说起。
那时候,实验室里有一台施乐(Xerox)的打印机,经常卡纸。作为程序员,大家的第一反应是:“能不能改一下驱动程序,让打印机卡纸时自动发送通知?”
这在当时的黑客文化中是再正常不过的事情——有问题?改代码!
但这次不同了。施乐公司拒绝提供打印机驱动的源代码,理由是“商业机密”。
年轻的程序员 Richard Stallman(后来大家都叫他 RMS)愤怒了。
“软件不应该被囚禁在黑盒子里!用户应该有权利查看、修改和分享自己使用的软件!”
这不是一次偶然的情绪爆发。RMS 意识到,整个软件行业正在走向一个危险的方向:软件公司通过闭源和版权限制,把用户变成了“数字农奴”——你花钱买软件,却不知道它做了什么,不能修改它,甚至不能分享给朋友。
GNU:一个疯狂的计划
1983 年,RMS 做了一个在当时看来近乎疯狂的决定:
我要写一个完全自由的操作系统。
这个操作系统叫 GNU(GNU's Not Unix),是一个递归缩写(发现递归了吗?)。
为什么要写操作系统?因为操作系统是软件世界的基石。如果操作系统不自由,建立在它之上的一切自由都是空中楼阁。
1985 年,RMS 发表了《GNU 宣言》,正式提出了自由软件的概念,并成立了自由软件基金会(FSF,Free Software Foundation)。
自由软件的四大自由
RMS 给出了自由软件的定义——用户必须拥有四项基本自由:
- 运行的自由:无论出于何种目的,你都可以按照自己的意愿运行这个程序。
- 学习的自由:你可以研究程序的工作原理,并根据自己的需求修改它。(访问源代码是这项自由的前提)
- 分发的自由:你可以重新分发这个程序的副本,从而帮助他人。
- 改进的自由:你可以改进程序,并将改进后的版本发布给公众,从而让整个社区受益。(访问源代码同样是前提)
为什么从 0 开始编号 因为程序员喜欢从 0 开始数数!
其实是因为 RMS 之前写了后三条,后面发现没写运行自由,就插到 0 里面了
听起来很抽象?
想象你有一个软件:
- 运行的自由:你可以随意使用这个软件,无论是辅助学习,进行商业活动,还是娱乐消遣。
- 学习的自由:你可以看它的源码,研究程序的工作原理。
- 分发的自由:你可以把它发给朋友,一起使用。
- 改进的自由:你可以修改它,让它符合你的需求或有更多功能,甚至可以把修改版分享给别人。
但如果这辆车是“闭源”的:
- 不能随意运行,比如禁止商业使用
- 禁止查看源代码(用户协议里经常出现的:您不得从事:对本软件进行反向工程、反向汇编、反向编译,或者以其他方式尝试发现本软件的源代码)
- 不能分享,比如只能在一台电脑上安装,其他人使用需要重新购买
- 不准修改
GPL:Copyleft 的诞生
光有理念还不够,RMS 还需要一个法律工具来保护自由软件。
1989 年,他发布了 GPL(GNU General Public License),这是世界上第一个自由软件许可证。
GPL 的核心思想是 Copyleft——这是对 Copyright(版权)的反转:
- Copyright:我保留所有权利,你使用需要我的许可。
- Copyleft:我授予你所有自由,但你必须把这些自由传递下去。
更具体地说,GPL 规定:
- 你可以自由使用、修改和分发 GPL 软件。
- 但如果你分发修改后的版本,你必须也用 GPL 许可证发布,并提供源代码。
这就像一个“自由病毒”——它确保了自由软件的自由性不会在传播过程中丢失。
很多公司对 GPL 又爱又恨:
- 爱,因为可以免费使用高质量的代码。
- 恨,因为无法把 GPL 软件闭源后拿去卖钱。
但这恰恰是 GPL 的设计初衷:防止自由软件被私有化。
二、Linux 的诞生与自由软件的胜利
一个大学生的意外之作
RMS 的 GNU 计划进展顺利,到 1990 年代初,GNU 项目已经提供了:
- GCC(编译器)
- Emacs(编辑器)
- Bash(Shell)
- 各种工具(grep, sed, tar...)
但缺了最关键的一环:操作系统内核。
GNU 的 Hurd 内核开发遇到了困难,进展缓慢。
就在这时,一位 21 岁的芬兰大学生出现了。他叫 Linus Torvalds。
1991 年,Linus 因为买不起昂贵的 Unix 系统,决定自己写一个内核玩玩。最初只是一个业余项目,甚至连名字都起得很随意——Linux(Linus + Unix)。
但 Linus 做了一个关键决定:用 GPL 许可证发布 Linux。
这个决定改变了历史。
大教堂与集市
部分参考:大教堂与集市
为什么 Linux 能成功?
传统软件开发模式像建造大教堂——一小群精英在封闭环境中精心设计,等一切完美后才展示给世人。微软、苹果都是这样做的。
而 Linux 采用了集市模式——代码从第一天起就公开,任何人都可以贡献,任何人都可以提意见。
“多人的眼睛盯着,bug 无处藏身。”
——Eric Raymond《大教堂与集市》
GPL 的力量在这里显现出来:
- 世界各地的程序员可以自由下载、修改 Linux。
- 他们的改进必须回馈给社区(GPL 的要求)。
- Linux 因此像滚雪球一样迅速成长。
1991 年的 Linux 内核:1 万行代码
2025 年的 Linux 内核:超过 3000 万行代码,5000+ 贡献者
今天,Linux 运行在:
- 超过 90% 的云服务器
- 100% 的超级计算机
- 数十亿部 Android 手机
- 你家的路由器、智能电视、洗衣机...
自由软件赢了。
三、开源 vs 自由软件:一场分裂
1998 年的分歧
1990 年代末,自由软件运动面临一个尴尬的问题:
“Free Software” 这个名字太容易被误解了。
商业公司一听“Free”就认为这是反商业的,对自由软件敬而远之。
1998 年,一群程序员(包括 Eric Raymond、Bruce Perens 等)提出了一个新概念:开源软件(Open Source Software)。
他们的理由是:
- “开源”更中性,不那么激进。
- 强调实用性(更好的软件质量)而非意识形态(自由)。
- 对商业公司更友好。
他们成立了 OSI(Open Source Initiative,开源促进会),定义了“开源软件”的标准:The Open Source Definition (开源定义)。
开源软件的定义
OSI 定义了开源软件必须满足的 10 条标准,包括:
- 允许自由再分发:软件可以免费或收费地分发给任何人
- 源代码必须公开:用户必须能够获取源代码
- 允许修改和衍生作品:用户可以修改源代码
- 作者源代码的完整性:修改后的软件可以以不同的名字发布
- 不歧视个人或团体:不能限制某些人使用软件
- 不歧视领域:不能限制软件在某些领域的使用,如不能禁止商业使用
- 分发许可证:软件的权利必须适用于所有人
- 许可证不得特定于某个产品:软件不能只依赖于特定产品
- 许可证不得限制其他软件:软件不能限制其他软件的分发,如不能要求所有与它一起运行的软件必须是开源的
- 许可证必须是技术中立的:软件不能依赖于特定技术或接口
::::info[注意]{open} 无论是自由软件还是开源软件,都不能禁止商业使用。
所有真正的自由软件和开源软件许可证都允许商业使用。
任何禁止商业使用的软件都不属于真正的自由软件或开源软件。 ::::
自由软件 vs 开源软件:什么区别?
从技术角度:几乎没区别。
| 维度 | 自由软件 | 开源软件 |
|---|---|---|
| 核心价值 | 自由是首要目标,软件质量是副产品 | 实用性是首要目标,自由是实现手段 |
| 立场 | 闭源软件是道德上不对的 | 闭源软件只是技术上低效的 |
| 商业友好度 | 警惕商业对自由的侵蚀 | 欢迎商业公司参与 |
| 代表组织 | FSF(自由软件基金会) | OSI(开源促进会) |
自由是权利,不是义务。 开源是手段,不是目的。
RMS 的坚持
RMS 拒绝使用“开源”,他坚持叫“自由软件”。
他(和FSF)要求别人把 Linux 叫做 GNU/Linux——因为 Linux 内核只是系统的一部分,大部分工具都来自 GNU 项目。
很多人觉得 RMS 太较真、太偏执。
但正是这种偏执,让自由软件运动走到了今天。如果没有 RMS 的坚持,GPL 可能早就被稀释,软件的自由可能早就被商业利益吞噬。
RMS 说:
“开源软件关注的是实用性,而自由软件关注的是正义。如果你只追求实用,迟早会在不知不觉中失去自由。”
四、常见误解
误解 1:“自由软件 = 免费软件”
错!
自由软件可以收费。如:Red Hat Enterprise Linux(RHEL)是自由软件,但企业支持订阅费高达数千美元。
关键在于:即使你付了钱,你依然拥有四大自由。你没有付钱也可以获得这些自由。付费的只是额外的服务(如技术支持、定制开发等),而不是软件本身。
误解 2:“GPL 是反商业的”
GPL 不反对商业,它反对的是私有化。
- 你可以用 GPL 软件赚钱(卖服务、卖支持)。
- 你不能把 GPL 软件改成闭源后独占。
很多商业公司用 GPL:
- Red Hat(年收入数十亿美元)
- Canonical(Ubuntu 背后的公司)
- WordPress(支撑着全球 40% 的网站)
误解 3:“我不是程序员,自由软件和我无关”
即使你不写代码,自由软件也在保护你:
- 隐私保护:自由软件不会偷偷收集你的数据(因为代码公开,任何偷窥行为都会被发现)。
- 安全保障:闭源软件的漏洞可能被隐瞒,而自由软件的漏洞会迅速被修复。
- 技术主权:如果一个国家的基础设施依赖闭源软件,那它的命运就掌握在别国公司手中。
2020 年,哈工大、北航等高校被禁用 MATLAB。这时候,自由软件(如 GNU Octave、SciPy)成了救星。
自由软件的价值,在危机时刻尤为明显。
注: 我自己的软件通常使用 AGPL 许可证——它要求任何通过网络提供服务的软件也必须开源。
五、现代自由软件运动的发展
新一代的许可证战争
近年来,出现了一些新的矛盾:
案例:Elasticsearch 的许可证变更
- Elasticsearch 原本是开源的(Apache 许可证)。
- AWS 把它拿去做云服务,自己赚钱。
- Elasticsearch 公司愤怒了,把许可证改成了 SSPL(Server Side Public License)——如果你提供 Elasticsearch 的云服务,你必须开源整个云平台。
- OSI 拒绝承认 SSPL 是开源许可证。
类似的还有 MongoDB、Redis、Neo4j...
揭示了一个问题:云计算时代,传统的自由软件许可证是否还够用?
RMS 的愿景
2025 年,RMS 已经 70 多岁了,但他依然在为自由软件奔走呼号。
他的愿景是:
每个人都应该能控制自己的计算设备。软件应该服务人类,而不是奴役人类。
听起来很理想主义?
但正是这种理想主义,让今天的我们能免费使用 Linux、GCC、Python、Apache、WordPress...
正是这种理想主义,让中国的程序员在被禁用商业软件时,还有自由软件作为退路。
正是这种理想主义,让我们在隐私泄露、算法监控的时代,还有一些工具可以保护自己。
六、写在最后:你能做什么?
看到这里,你可能会想:“自由软件很好,但我能做点什么呢?”
即使你不写工程,也可以:
- 使用自由软件:让更多人知道自由软件的存在,比如 Firefox、LibreOffice、GIMP、VLC 等。
- 传播理念:让更多人知道“Free 是自由,不是免费”。
- 捐赠支持:FSF、Mozilla、Wikimedia 等组织都接受捐赠。
不过似乎不是我们现在要考虑的
如果你编写软件:
- 开源你的代码:即使是小项目,也可能帮助到别人。
- 选择合适的许可证:如果你想保护自由,用 GPL;如果你想商业友好,用 LGPL/MPL/MIT。
- 回馈社区:报告 bug、提交补丁、编写文档。
- 抵制伪开源:警惕那些“源码可见但不可自由使用”的许可证。
结语
自由软件不仅仅是技术,更是一种价值观:
用户应该拥有决定自己计算机做什么的权利。
在这个算法推荐、隐私泄露、技术垄断的时代,这个理念比以往任何时候都更加重要。
RMS 曾说过一句话:
“如果你不为自由而战,你将失去自由。”
自由软件,不是免费的午餐,而是对抗数字奴役的武器。
愿自由软件的理念,能被更多人理解。
愿我们的计算机,真正属于我们自己。
本文采用 GNU Free Documentation License 1.3 许可证进行许可——正如自由软件精神所倡导的那样。
您有权根据自由软件基金会发布的 GNU Free Documentation License 1.3 及更高版的条款复制、发布和/或修改本文档;本文档没有恒定部分、没有封面文字、也没有封底文字。