开源,是背叛自由还是以退为进?
2021-11-07 21:55
文 | 肖滢
出品 | OSC开源社区(ID:oschina2013)
当我们谈论开源时,很少谈论自由,尽管开源与自由同行。从 1998 年开源一词兴起时,我们就无法把开源和自由分割开来。因为它孕育于自由软件运动,自由使用、复制、修改、分发源码,其精神内核一直延续至今。“自由”,为何对开源如此重要?我们将依次用 《开源,是背叛自由还是以退为进?》、 《开放协作:赋予开发者的自由》、 《商业自由:从边缘到核心贡献》三篇文章来回答这个问题,本文为第一篇。
为软件用户的自由而战
事后二十多年,Richard Matthew Stallman(RMS)对施乐公司拒绝提供打印机源码的愤怒仍然挥之不去,以至于他在开展自由软件运动演说时频频提及。
20 世纪八十年代初,麻省理工学院 AI 实验室获赠了一台新的激光打印机,机器能以更高的精度打印图形,并减少了 90% 的打印时间,但经常会出现卡纸的情况,这很常见。如果在以前,RMS只要简单地修改一下源码,就可以通知人来解决这个问题,然而这一次,赠送打印机的施乐公司没有像以前一样提供人类可读的源码,这意味着他无法自己修改。而后向开发人员索求源码也遭到拒绝,对方称签署了保密协议。
打印机事件让 RMS 切身感受到,商业公司为了利益,限制他人使用源码或者停止提供源码剥夺了自己的自由。那段时期,实验室计算机的密码保护、黑客成员的流失、商业公司对源码的保密,让他不止一次意识到,其引以为傲的黑客文化——自由共享源码、创新、合作,由于商业行为的冲击正在消亡。
而随着微处理器的出现,计算机进一步小型化,个人计算机时代到来,成千上万带有使用许可证和保密协议的专有软件扑向了用户。这些用户并不是开发者,他们只关心新软件、新功能,并不关心是否有源码。
但对于 RMS 来说,则陷入了两难的境地:要么默许使用专有软件,但他曾多次旗帜鲜明地反对专有软件捍卫软件自由;要么创造一套自由的软件系统,但这是一项浩大的工程。
在此之前,为了反击 Symbolics 公司不再给提供更新后的源码,他曾有几个月的时间,在实验室单枪匹马写代码,以改进 Lisp 机器 ,实现了 Symbolics 一个团队才能完成的各种新功能和 Bug 修正。这让他对走第二条路充满了信心。他决定避免使用专有软件,并且创造一套完全自由的操作系统及其外围软件,来帮助其他用户获得完全控制软件的自由。
首先是要开发一套自由的操作系统。因为每一台计算机都需要一个操作系统,然而在20世纪八十年代,几乎所有的软件都是专有软件,操作系统也一样。
于是在 1983 年 9 月,RMS 公开发布了 GNU 项目的初始声明。声明提到,要编写一个完全和 Unix 兼容的软件系统 GNU。为什么要与 Unix 兼容?因为 Unix 的整体设计历经考验并且可移植,而且兼容性会让 Unix 用户很容易从 Unix 系统转移到 GNU 系统。
RMS 提出了明确的构想:GNU 会有一个内核,以及一系列编写和运行 C 程序所需要的应用:编辑器、shell、C 编译器、连接器、汇编器以及一些其他程序。此后,还会加入文本排版工具、Yacc、 Empire 游戏、电子表格和数百个其他应用。
GNU 项目初始声明的发布,标志着自由软件运动拉开了序幕。
开始的过程并不那么顺利,他想把 VUCK 编译器纳入 GNU,却被告知不允许;想用 Gosling 的代码编写解释器避免重复造轮子却被告知有版权保护,这让 RMS 更加坚定了自由软件运动的政治目标。
1985 年 ,RMS 终于发布了 GNU 项目的第一款软件——GNU Emacs 编辑器,同时还发布了“GNU 宣言”。宣言是对 1983 年 9 月发布的初始声明的扩展。为了更好地推动 GNU 计划,RMS等人成立了自由软件基金会(FSF),还设计了 GNU 通用公共许可证(GNU GPL),并以该许可证发行大部分软件。
GPL 是最能体现 RMS 自由思想的证据之一,因为它是 Copyleft 许可,在最大程度上保护了所有用户的自由。Copyleft 一词虽然不是 RMS 创造,但是他赋予其更加丰富、确切的含义。Copyleft 是一种方法,确保用户拥有使用、研究、复制、分发、修改及再分发作品的自由。还有一些许可同样授予这些自由,不同的是,Copyleft 还确保 Copyleft 许可作品的任何修改版本,也必须授予这些自由。要指出的是,Copyleft 是一种抽象的概念,抽象的概念无法直接使用,因此,Copyleft 以许可证形式存在。
站在后续或衍生版本的软件发布者角度来看,Copyleft 是一种限制;站在原始软件及后续或衍生版本的所有用户来看,Copyleft 是慷慨地给予。
当时,大部分的自由软件许可向直接的下游开发者提供了最大的自由,包括将代码用于闭源项目。然而,代码用于闭源项目之后,等同于断送了用户学习、分发、修改和再分发该软件的自由。而 Copyleft 许可 ,则保证了这些“自由”不被中断,可以随着后续或衍生版本延续下去。
商业软件开发人员通过 Copyright(版权)剥夺了用户的自由,而 RMS 通过 Copyleft 来给予用户自由,而且是最大程度上的自由。
开源是对自由软件的背叛吗?
在1991 年,GNU 操作系统大部分组件都已经选择好或开发完成,包括强大的 GNU 编译器套件 GCC,但独独缺了一个重要的内核。因为原定的 GUN Hurd 内核开发进展缓慢,迟迟未能发布。
直到 1992 年 2 月,事情迎来了转机,Linus Torvalds 发布了 Linux 内核 0.12 版,也是从这个版本开始,Linux 内核采用了GNU GPL 许可证,成为了自由软件。几乎完成的 GNU 系统和 Linux 内核的结合,诞生了第一款完全自由的操作系统 GNU / Linux ,现在,我们称之为 Linux 系统。
在此之前,尚不存在完全自由的操作系统,而 Linux 内核补上了最后一块拼图。
Hurd 的难产以及 Linux 的成功,让前 GNU 成员 Eric Steven Raymond(ESR) 开始思考软件项目管理问题。而思考的成果,掀起了一场轰轰烈烈的开源软件运动。
RMS 不会想到,1998 年 4 月他未被邀请的那场小型的“自由软件峰会”,让 ESR 等人达成了用“开源”一词取代自由软件的共识。参会的关键人物还包括 Linux 内核创始人 Linus Torvalds、Apache 主要开发者 Brian Behlendorf、 Sendmail 创始人 Eric Allman、Perl 语言创始人 Larry Wall、Python 语言创始人 Guido Rossum 等人。
之后,自由软件阵营中的部分成员分裂出来,以“开源”的名义开展活动。几个月后,它通过报纸、杂志等媒体流行开来,并得到了企业及开发人员的广泛支持。
一开始,RMS 并没有持反对意见,但很快他就发现,开源这个词所代表的主张已经开始异化,使得其背后的逻辑与自由软件运动的初衷相去甚远,因此他坚定地撇清自由软件与开源软件的关系。RMS 认为:“自由软件运动为用户的计算自由而战斗;这是一个为自由和公正而战的运动。相反,开源理念重视的是实用优势而不是原则利害。我们因此不赞同开源运动,也不使用开源这个词。”尽管他自己也承认,“自由软件”和“开源”基本上指的是同一范围的程序。
他曾解释过开源异化的原因:“一旦支持者开始为开源营销的时候,自由软件运动所珍视的那些价值观就被抛诸脑后。于是,‘开源’一词很快就单纯地和各种实用主义的价值观联系起来。比如说怎么能创造一个强大、稳定的软件。很多开源支持者从一开始就把这些价值观推崇至极,也难怪局外人会有如此联系了。大多数‘开源’的讨论都绝口不谈是非对错,而只是讨论流行与成功。”
但这并不能说是 ESR 等人对自由软件运动的背叛,恰恰相反,他们的本意是要让“自由软件”获得主流企业的支持,从而实现更广泛地传播。
我们可以从 ESR 于 1998 年 2 月发表的《再见,自由软件;你好,开源软件》一文轻易得出结论。他认为,“free software”一词的问题是双重的。因为 “free” 一词的意思令人困惑,因为它既有免费的意思,也有自由的意思。“free”是意味着“不收费”,还是指“任何人都可以自由修改”,还是其他什么意思?其次,“free”一词的免费含义,让很多企业感到紧张,应该用一个新的定义来争取他们的认可。这也是 ESR 首次公开呼吁使用“开源”一词。
ESR 为何会说企业对“free software”感到紧张?因为在几天前,他试图通过网景公司受自由软件文化影响从而公开源码的案例来说服企业效仿,却遇到了阻碍。多数企业高管在第一次听到“free software”时,将其解释为“零成本”的同义词,明显与追求利益背道而驰。尽管一直以来,RMS和其他黑客尽了最大努力宣传,自由软件中的“free”一词代表自由而不是价格。
开源促进会(OSI)由 ESR 等人成立,是开源运动的主要支持者和倡导者之一,它曾公开发表观点称,“free software”一词已被商业人士误解,他们将分享的意愿误认为是反商业主义,或者更糟,是盗窃。主流企业 CEO 和 CTO 永远不会购买“免费软件”。但是,如果把同样的传统,同样的人,同样的自由软件许可证和标签更改为“开源”,他们会买。
比起 RMS 热衷于自由软件所表达的政治主张,ESR 等人更看重自由软件的开放、协作的开发模式。Linux 内核的开发就是基于这一模式。
在 Linux 之前,复杂的软件是由小团体精心设计的,源代码在软件发行后公开,但在软件的每个版本开发过程中都由一个专属的团队所控管,比如 GNU Emacs 及 GCC 就是在这种模式下开发的,ESR 将其称之为大教堂模式。但 Linux 以完全不同的方式发展。几乎从一开始,源码就被公开,它被大量志愿者查看并参与开发,仅通过互联网进行协调。质量不是通过严格的标准或独裁来保持的,而是通过每周发布并在几天内从数百名用户那里获得反馈这样简单的策略来保持,这被成为集市模式。除了 Linux 项目之外,ESR 自己的项目 Fetchmail 也沿用这一模式开发并且获得了成功。
这两种模式最后被 ESR 整理成论文《大教堂与集市》,于 1997 年对外发表。网景公司也正是受到这篇文章的启发,公开网页浏览器的源代码,并启动 Mozilla 项目。
从这一层面来说,ESR 等开源倡导者的确是有意避开政治运动。但不可否认的是,撇开政治隐喻不谈,开源软件运动在捍卫软件用户自由上,实际上与自由软件运动是大体一致的。事实上,由 OSI 发布的“开源软件”的官方定义,间接源自自由软件的标准。虽然这些运动有不同的价值观和目标,但并不妨碍开源社区和自由软件社区的人们在实际项目中进行合作。
可以这么认为,开源软件运动是向商业公司妥协后的自由软件运动,听起来是有些软弱,但确实起到了实质性的作用,“开源”一词的出现,极大地推动了开源历史进程。没有了对“free”一词的误解,也没有了剑拔弩张的政治运动,许多大型机构和企业如雨后春笋般涌现,以支持开源软件运动的发展。Apache 软件基金会(ASF)就是其中之一,此后贡献了Apache Hadoop 等多个顶级开源项目。1998 年,四款自由软件 Linux、Apache、MySQL 和 PHP 组成的“LAMP 包”成为替代商业包的典型代表被展示在杂志上,在很长一段时间内,它都是交付 Web 应用程序的最常见方式之一。
发展到今天,开源软件已经极其普遍,几乎存在于全球 2000 强企业的所有关键任务软件组合中。以至于当 Marc Andreessen 发出“软件吞噬世界”的感叹时,有人补上了后一句,“开源吞噬软件”。
这么说的话,开源并不是背叛自由,而是以退为进,将自由软件运动的精神内涵承袭下来,以更加柔和、包容的方式对外宣传开去。
参考资料:
1、Why Open Source Misses the Point of Free Software
https://www.gnu.org/philosophy/open-source-misses-the-point.en.html
2、Linux and the GNU System
https://www.gnu.org/gnu/linux-and-gnu.en.html
3、Linux
http://foldoc.org/linux
4、Overview of the GNU System
https://www.gnu.org/gnu/gnu-history.en.html
5、Initial Announcement
https://www.gnu.org/gnu/initial-announcement.en.html
6、Goodbye, "free software"; hello, "open source"
http://www.catb.org/~esr/open-source.html
7、The Cathedral and the Bazaar
http://www.catb.org/~esr/writings/cathedral-bazaar/
8、Free as in Freedom : Richard Stallman's Crusade for Free Software
https://www.oreilly.com/openbook/freedom/ch02.html
9、What is Copyleft?
https://www.gnu.org/licenses/copyleft.html
END