浅谈自由软件

· · 科技·工程

当你听到英文的“自由软件”(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 给出了自由软件的定义——用户必须拥有四项基本自由

  1. 运行的自由:无论出于何种目的,你都可以按照自己的意愿运行这个程序。
  2. 学习的自由:你可以研究程序的工作原理,并根据自己的需求修改它。(访问源代码是这项自由的前提)
  3. 分发的自由:你可以重新分发这个程序的副本,从而帮助他人。
  4. 改进的自由:你可以改进程序,并将改进后的版本发布给公众,从而让整个社区受益。(访问源代码同样是前提)

为什么从 0 开始编号 因为程序员喜欢从 0 开始数数!其实是因为 RMS 之前写了后三条,后面发现没写运行自由,就插到 0 里面了

听起来很抽象?

想象你有一个软件:

但如果这辆车是“闭源”的:

GPL:Copyleft 的诞生

光有理念还不够,RMS 还需要一个法律工具来保护自由软件。

1989 年,他发布了 GPL(GNU General Public License),这是世界上第一个自由软件许可证。

GPL 的核心思想是 Copyleft——这是对 Copyright(版权)的反转:

更具体地说,GPL 规定

这就像一个“自由病毒”——它确保了自由软件的自由性不会在传播过程中丢失。

很多公司对 GPL 又爱又恨:

但这恰恰是 GPL 的设计初衷:防止自由软件被私有化

二、Linux 的诞生与自由软件的胜利

一个大学生的意外之作

RMS 的 GNU 计划进展顺利,到 1990 年代初,GNU 项目已经提供了:

但缺了最关键的一环:操作系统内核。

GNU 的 Hurd 内核开发遇到了困难,进展缓慢。

就在这时,一位 21 岁的芬兰大学生出现了。他叫 Linus Torvalds

1991 年,Linus 因为买不起昂贵的 Unix 系统,决定自己写一个内核玩玩。最初只是一个业余项目,甚至连名字都起得很随意——Linux(Linus + Unix)。

但 Linus 做了一个关键决定:用 GPL 许可证发布 Linux

这个决定改变了历史。

大教堂与集市

部分参考:大教堂与集市

为什么 Linux 能成功?

传统软件开发模式像建造大教堂——一小群精英在封闭环境中精心设计,等一切完美后才展示给世人。微软、苹果都是这样做的。

而 Linux 采用了集市模式——代码从第一天起就公开,任何人都可以贡献,任何人都可以提意见。

“多人的眼睛盯着,bug 无处藏身。”

——Eric Raymond《大教堂与集市》

GPL 的力量在这里显现出来:

1991 年的 Linux 内核:1 万行代码

2025 年的 Linux 内核:超过 3000 万行代码,5000+ 贡献者

今天,Linux 运行在:

自由软件赢了。

三、开源 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:

误解 3:“我不是程序员,自由软件和我无关”

即使你不写代码,自由软件也在保护你:

2020 年,哈工大、北航等高校被禁用 MATLAB。这时候,自由软件(如 GNU Octave、SciPy)成了救星。

自由软件的价值,在危机时刻尤为明显。

注: 我自己的软件通常使用 AGPL 许可证——它要求任何通过网络提供服务的软件也必须开源。

五、现代自由软件运动的发展

新一代的许可证战争

近年来,出现了一些新的矛盾:

案例:Elasticsearch 的许可证变更

类似的还有 MongoDB、Redis、Neo4j...

揭示了一个问题:云计算时代,传统的自由软件许可证是否还够用?

RMS 的愿景

2025 年,RMS 已经 70 多岁了,但他依然在为自由软件奔走呼号。

他的愿景是:

每个人都应该能控制自己的计算设备。软件应该服务人类,而不是奴役人类。

听起来很理想主义?

但正是这种理想主义,让今天的我们能免费使用 Linux、GCC、Python、Apache、WordPress...

正是这种理想主义,让中国的程序员在被禁用商业软件时,还有自由软件作为退路。

正是这种理想主义,让我们在隐私泄露、算法监控的时代,还有一些工具可以保护自己。

六、写在最后:你能做什么?

看到这里,你可能会想:“自由软件很好,但我能做点什么呢?”

即使你不写工程,也可以:

  1. 使用自由软件:让更多人知道自由软件的存在,比如 Firefox、LibreOffice、GIMP、VLC 等。
  2. 传播理念:让更多人知道“Free 是自由,不是免费”。
  3. 捐赠支持:FSF、Mozilla、Wikimedia 等组织都接受捐赠。不过似乎不是我们现在要考虑的

如果你编写软件:

  1. 开源你的代码:即使是小项目,也可能帮助到别人。
  2. 选择合适的许可证:如果你想保护自由,用 GPL;如果你想商业友好,用 LGPL/MPL/MIT。
  3. 回馈社区:报告 bug、提交补丁、编写文档。
  4. 抵制伪开源:警惕那些“源码可见但不可自由使用”的许可证。

结语

自由软件不仅仅是技术,更是一种价值观:

用户应该拥有决定自己计算机做什么的权利。

在这个算法推荐、隐私泄露、技术垄断的时代,这个理念比以往任何时候都更加重要。

RMS 曾说过一句话:

“如果你不为自由而战,你将失去自由。”

自由软件,不是免费的午餐,而是对抗数字奴役的武器。

愿自由软件的理念,能被更多人理解。

愿我们的计算机,真正属于我们自己。

本文采用 GNU Free Documentation License 1.3 许可证进行许可——正如自由软件精神所倡导的那样。

您有权根据自由软件基金会发布的 GNU Free Documentation License 1.3 及更高版的条款复制、发布和/或修改本文档;本文档没有恒定部分、没有封面文字、也没有封底文字。