作者:lola 策划:lola
如果没有 Linux,这个世界会怎样?
二十多年前,Linux 之父 Linus Torvalds 说:“如果在我创造 Linux 之前 386BSD 已经可用,那么 Linux 可能不会出生。”
后来,当人们回想反思时,也不乏有人认为:“如果 Linux 未能蓬勃发展,FreeBSD 将填补今天的空白。”
BSD(Berkeley Software Distribution,也称 Berkeley Unix),作为 Unix 最绕不开的一族分支,它的摇篮是当时美国最为激进的左派大本营 —— 加州大学伯克利分校。在这个以自由著称的学校,老学长 Ken Thompson 创造并带回了 Unix,小学弟 Bill Joy 接力发展了 BSD,经过更多校内校外参与者的一起努力,才从一场浩劫中保下了这一不同于 GNU/Linux 一派的“开源火种”。
或许是学院派作风在作祟,又或许是 BSD 的创造者都是天才式人物,BSD 整体上都呈现出一种“精英主义”的气质,以公共利益和远大理想为己任,严于律己,且天生傲慢。BSD 由小群体精英把持,在努力保持自身与 Linux 之间的距离的同时,坚持着精英式的产品理念。正如 OpenBSD 创始人 Theo de Raadt 所言:“我们更多的时间是花在让东西更好,而不是让它符合大众的口味。”
01 被一笔带过的开源前史
当我们谈及开源起源和历史,第一个想到的是什么?
更多充斥我们脑中的是:自由软件运动、GNU、Linux、copyleft、OSI 等等关键词。开源的历史线更多是被划分在了 1983 年 GNU 计划诞生的那一刻,而 BSD 所代表的那部分“开源前史”常常会被一笔带过。
但实际上,开放源代码的传统、软件开源的自由精神、与专有垄断之间的战争等等在这之前早就已经扎根而下,并且在 BSD 身上集中体现了出来。
故事从 1970 年开始。当时,贝尔实验室还归属于如日中天的 AT&T,研究员 Ken Thompson 参与了几年的 Multics(一个分时操作系统)计划,无所事事的时候在这个系统上写了一个叫做太空大战(Space Travel)的打飞机游戏,结果那一年贝尔实验室退出了 Multics 计划,Thompson 的游戏也就没法运行了。
为了继续玩游戏,Ken Thompson 花了一个月的时间写了一个小型的操作系统,这就是 Unix 的雏形。所以,1970 年也被称为 Unix 元年。
随后,和 Dennis Ritchie 一起, Ken Thompson 用 C 语言重写了 Unix 操作系统。幸运的是,当时 AT&T 受到了美国《谢尔曼反托拉斯法》的限制,不能销售电话机电报机之外的商品,这为 Unix 流向学术机构打开了窗口。
Ken Thompson 和 Dennis Ritchie
因为上述原因,当时很多大学和研究机构能够相当容易地得到 Unix 的源代码和二进制代码,这样他们就可以自由地对其进行分析和改进,相互交流意见和成果,由此促进了 Unix 的迅速发展。其中,伯克利的作用不可忽视。
1975 年,伯克利购买了 DEC 公司最新的计算机 PDP-11/70 。恰逢 Ken Thompson 休假一年,回母校担任客座教授。就在这台计算机上,他安装了最新版本的 Unix(V6 版本)。在 Ken Thompson 的引导下,当时还是研究生的 Bill Joy 在 1977 年 开始编译第一个 BSD。在 AT&T 的放养状态下,Unix 得到了长足发展。
好景不长。1977 年开始,AT&T 分解后终于摆脱反垄断的掣肘,立马将 Unix 进行商业化。从 1979 年 UNIX 的 V7 版本开始,Unix 的许可证开始禁止大学使用 Unix 源码,包括在授课中学习。如果想要继续使用,就要支付价格不菲的费用得到授权。
而且,BSD 系统发行版包含每个部分的完整源代码,而不是以纯二进制格式发布。因此,BSD 每一次对外分发,都要在 AT&T 的许可之下。到了 80 年代后期,Unix 日益流行 ,AT&T 将许可费从最初的 99 美元稳步提高到 250,000 美元。
“我们编写了这段代码,他们(AT&T)却声称它是他们的。这让我们很生气,因为他们拿走了我们的工作,没有支付一分钱,还通过出售该死的许可证赚钱。”
—— Marshall Kirk McKusick (他亲身参与了 4.3BSD 和 4.4BSD 的开发和发行)
至此,UNIX 开始分为两大流派: AT&T 一路的商业化版本 Unix 和 BSD 系列(其中前者是闭源的,而 BSD 是开放源代码的)。这种格局在 1990 年代初期达到极盛,各路 Unix 版本达到了 100 多种,其中包括 SUNOS、IBM AIX、HP-UX、DEC Ultrix 与 SCO Xenix、Sun Solaris 等。这些 Unix 变种均基于 Unix 开源版本派生而来,且多为闭源的商业版。
90 年代初期,BSDi(伯克利计算机研究小组 CSRG 成立的公司)开始销售其自己的 Berkeley Unix 版本,而加州大学多年来一直在销售其版本。1992 年,AT&T 起诉加州大学和 BSDi,声称 BSD Unix 包含专有的 AT&T 代码。但实际上,AT&T 当时推出的 Unix 版本 System 5 也包含了最初由 BSD 黑客编写的大量代码 —— 包括 TCP/IP 堆栈。
于是,像 McKusick 这样的黑客被激怒了。加州大学的律师抓住了这一机会,以侵犯版权为由向 AT&T 提出反诉。一场浩浩荡荡、留名史册的版权战争就此拉开序幕。
从 70 年代 Ken Thompson 种下 Unix,再到 90 年代这场轰轰烈烈的诉讼纷争,我们能从 BSD 身上找到很明显的 FOSS(Free and Open Source Software)主要特征:
首先,BSD 的发展模式就是典型的开放模式。
在 IT 产业刚创立之时,根本没有什么开源闭源一说,软件依附于硬件的绑定附送,以源代码的形式提供的,而非现在的执行码。商业化之前的 Unix 源代码几乎是向公众开放的,随着 BSD 传播到越来越多的机构,用户开始添加额外的功能和程序,并将它们发送回伯克利的团队,以包含在下一个 BSD 版本中。
黑客返回修改版 —— 这种开放模式在开源运动还没有名字之前,就已经存在了。
其次,BSD 就是典型的自由软件。
1989 年 6 月,在 BSD 许可证下,伯克利发布了第一个可自由再分发的版本 —— Network Release 1(Net/1),它包含了实现 OSI 网络协议栈和全新 TCP/IP 算法方面的代码。
BSD 许可证是宽松的许可证。被许可人可以以源代码或二进制形式发布代码,而无需向伯克利支付任何费用或版税。尽管伯克利的一盘磁带要收取 1000 美元的费用,但任何人都可以从他人那里免费获得一份副本。事实上,在它发布后不久,几个大型网站就将其用于匿名 FTP。
最后,BSD 的精神内核就是自由,BSDer 不畏强权。
在这一时期,众多支持开源的工程师们把自己形象的比喻为《星球大战》中的自由反抗军联盟,对抗邪恶的垄断帝国。在后来,不少历史学者都将伯克利黑客描述为“自由斗士”。就像后人的评判那样:他们中没有一个人将自己视为十字军,但时不时会渗出一丝理想主义。
“我们当中很多人的目标是:生产我们心中理想的系统,为自己所用。这也是 Ken Thompson 和 Dennis Ritchie 创立 Unix 的初衷。”在后来的采访中,成立伯克利计算机研究小组 CSRG 的 Bob Fabry 教授这样表示。
就当 BSD 深陷泥淖之中时,开源世界众所周知的另一个故事也正在发生:1984 年,RMS 打出“GNU's not Unix” 的标语,发起自由软件(Free Software)运动;1991年,Linux 诞生,开源世界里的最大宇宙 —— GNU/Linux 话语体系就此形成。接下来,Linux 发展,而 BSD 让出了 C 位。
02 失去两年后,物是人非
“AT&T 与 BSD 之间的诉讼,是当代版权制度最恶劣的应用之一。”阮一峰认为这场诉讼的本质是:
一家利益至上的公司,以微不足道的理由,为了一个自己根本不在乎的产品,悍然发动一场损人不利己的战争。
之所以如此评价,是因为这场战争给 BSD 带来了毁灭性的打击 —— 所有的开发活动都被迫停止,用户人心惶惶,担心自己也遭到 AT&T 的追究,因此 BSD 的使用急剧减少。最后在 1994 年,双方达到和解,BSD 才恢复开发。
This is simply a shame, actually intends to BSDi enter and stupid legal disputes AT&T's when, in the occurrence leadership vacuum, BSD community full of fear, uncertainty and doubt in the critical moment, it led to a massive loss of territory to Linux outcome.
这简直是一种耻辱,把 BSDi 卷入和 AT&T 的愚蠢的法律纠纷,这就出现了领导真空的情况,整个 BSD 社区都充满了恐惧、不确定性和怀疑,导致了我们失去了巨大领土给 Linux。
—— FreeBSD 创始人之一 Jordan Hubbard
1992~1994,BSD 失去了两年。这两年后来被证明是至关重要的两年:90 年代初恰好是计算机工业决定性的年代。硬件迅速发展、Intel 的 80x86 芯片横空出世、个人电脑时代来临,IT 技术的商业模式也迎来变革......被官司拖住的 BSD 没法去做移植操作系统这件事。许多本应为 BSD 做出贡献的人转而为 Linux 贡献了代码和错误修复。
We have a considerable technical background and good mind, but the lack of adequate legal safety awareness and effective leadership can unite the different tribes in BSD as a difficult moment, to lead us out to bring significant harm to the BSD community storm. We lose a very important strategic two years.
我们有相当的技术背景和良好的头脑,但是缺乏足够的法律安全意识和有效的领导可以将 BSD 的不同部落团结起来,去带领我们走出去艰难时刻。这场重大的风暴中,我们失去了非常重要的两年战略。
—— FreeBSD 创始人之一 Jordan Hubbard
其实,在本篇开头,那个被 Linus 提及的 386BSD 是最有希望重整旗鼓的 BSD 后代。
Linus 起初还是个芬兰大学生,因为买不起工作站,只好自己写了一个能在 386 上运行的操作系统。而如果他要是早知道 BSD 没有法律问题,并且可以被移植到 386,他就会加入 BSD 的开发,而不是自己写一个。(真有意思,这场官司还改变了 Linus 的命运。)
什么是 386BSD?386BSD 和 Linux 的开发几乎是同时起步的。
其实,在 Net/1(1989 年)之后,伯克利计算机研究小组 CSRG 成员 Keith Bostic 就开源领导了一个项目——抛弃 AT&T 代码,重新实现大多数 Unix 实用程序。18 个月以后,所有源自 AT&T 的实用程序都被替换,除了六个内核文件,因为它们无法轻易重写。
稳妥起见,1991 年,伯克利计算机研究小组 CSRG 发布了没有包含这六个文件的版本——Network Release 2(Net/2)。仅六个月内,Willian Jolitz 和 Lynne Jolitz (没错,夫妻档)编写了六个替代文件,并将 BSD 移植到基于 Intel 80386 的微处理器中,这个新的操作系统就被称为 386BSD。
386BSD 的初始版本可以工作,但几乎没有功能。因此,Jolitz 夫妇开始致力于创建完整版本,并在一段时间内得到了广泛关注,可惜却遭到了分裂。
当时,386BSD 的开发速度很缓慢,开发者对 386BSD 合并新补丁的速度感到不满。由于 Jolitz 夫妇和 patchkit 维护者对 386BSD 的未来方向和发布时间表存在分歧,patchkit 的维护者于 1993 年创立了 FreeBSD 项目以继续他们的工作。
而大约在同一时间,NetBSD 项目是由一组不同的 386BSD 用户创建的,目的是将 386BSD 与其他 BSD 开发分支统一为一个多平台系统。不久之后,NetBSD 内核一场内部纠纷导致了 OpenBSD 的诞生。至此,开源的 BSD一脉就主要由 FreeBSD、 NetBSD、OpenBSD 所构成。
不少人都认为,这场分裂直接导致了 BSD 在今天的操作系统的竞争中处在落后地位。
03 傲气仍在,气数渐弱
关于 BSD 和 Linux 有一个很经典的说法:
BSD is what you get when a bunch of UNIX hackers sit down to try to port a UNIX system to the PC. Linux is what you get when a bunch of PC hackers sit down and try to write a UNIX system for the PC.
BSD 的黑客们试图将 Unix 移植到电脑上,而 Linux 则是黑客们尝试在电脑上写一个 Unix。
事实上,BSD 就是传统 Unix 的直接衍生品。而 Linux,则是一个松散的基于 Unix 衍生品 (Minix) 而新创建的一个 OS 。
Unix 各族图谱
而在 BSD 的血液里,傲慢几乎是与生俱来的。
BSD 的第一版撰写者 Bill Joy 是个神童,Salon 的一篇报道中不掩赞许之情:如果有人有权傲慢,那就是Bill Joy。Bill Joy 写出了 vi 这个让无数程序员爱不释手编辑器,被称为“编辑器之神”;与 GNU 发起人 RMS 所写的 “神的编辑器”Emacs 一起比较,拉开了程序员之间有关编辑器的“甜咸之战”。
Bill Joy
不仅是 Bill Joy,整个 BSD 的傲气都十分外漏。 Marshall Kirk McKusick 后来深度参与了 FreeBSD,他就曾表示,90% 的 committers 所贡献的代码都不能用,还剩下的一小部分则需要“were peed upon to make them smell like Berkeley”(不翻译了,大家自行体会。)而这也是 FreeBSD 保存有整个等级制度的原因。
这种傲慢还体现在了他们看待开源协作 和 GNU/Linux 的方式上。
从 Bill Joy 开始,他就不认同 Linux 的基本信条 —— 去相信庞大的志愿程序员群体。他不相信拥有更多的程序员就等于更好的代码:
大多数人都是糟糕的程序员,让很多人盯着代码不会真正发现错误。真正的错误是由几个非常聪明的人发现的。大多数人看代码不会看到任何东西......不能期望成千上万的人做出贡献并都达到高标准。
当然,后来的事实证明这种看法是错误的。而 BSD 与 GNU/Linux 的分歧远不止这些,他们对自由的理念也南辕北辙。
We never considered GPL license like BSD, like it's short and flexible like him popular for engineers and lawyers to read, which achieved our aim, although it limits our responsibility (liability), but! At the same time as the code uses as many people. GPL is not what we think of identity license, but a political declaration.
我们从来没有考虑过 GPL。BSD 虽然限制了我们的责任,但它短小灵活,很受工程师和律师的欢迎,这达到了我们的目的。然而,同样是为了代码得到尽可能多的人的使用,GPL 并不符合我们的身份认定, 是一种政治宣言。
—— FreeBSD 创始人之一 Jordan Hubbard
Linux 他们做的事是因为他们讨厌微软,我们所做的事情是因为我们热爱 Unix。
—— OpenBSD 创始人 Theo de Raadt
I do not mind whether the user back to their feedback to modify the code, and if this happens, is the icing on the cake (an added bonus), but I What do not tend to do to make it happen, such as a gun to force it to the other side into submission (enforce at the point of a gun ).
我不在乎用户是否会返回修改后的代码,如果有当然是锦上添花,但我并不有意去这样要求,这就像拿着枪去强迫别人屈从一般。
—— FreeBSD 创始人之一 Jordan Hubbard
因此,在 FreeBSD 的官网介绍上,其以“Liberal ”自称,而特意与“Free”区别开来。
FreeBSD 官网截图
分裂之后, FreeBSD、 NetBSD 和 OpenBSD 的发展都不太尽如人意。
以最高调的 OpenBSD 为例,在 2014 年的时候,OpenBSD 一度因为资金问题陷入困境。此外,其创始人 Theo de Raadt 还非常直言不讳,有次因为谴责美国对伊拉克的战争,导致美国国防部先进研究计划总署(DARPA)中止其对 OpenBSD 二百三十万美元的资助。此后, OpenBSD 年初“喊穷”的新闻成为了好长一段时间的固定节目(罗永浩的锤子科技还多次成为其白衣骑士)。
三者之中,混得最好、市场份额最大的莫过于 FreeBSD。当 NetBSD 和 OpenBSD 出现问题时,不少 BSD 的开发者都在向 FreeBSD 靠拢。如今它已在全球数百万台服务器中使用,被 Netflix 、苹果(苹果OS 与 FreeBSD 渊源颇深)、WhatApp、IBM、诺基亚等公司广泛使用,它几乎渗透进了现在 IT 产业的半壁江山,却从不显山露水,被称为“操作系统的无名英雄”。
FreeBSD 吉祥物 —— Beastie 小恶魔
在 2020 年的一场采访中,FreeBSD 基金会的执行主管 Deb Goodkin 这样呼吁:
We need more PR for FreeBSD and get more tech journalists like yourself to write about FreeBSD. We also need more trainings and classes that include FreeBSD in universities, trainings/workshops at technical conferences, more FreeBSD contributors giving talks at those conferences, more technical journalists, as well as, users writing about FreeBSD, and finally we need case studies from companies and organizations successfully using FreeBSD.
FreeBSD 需要更多的 PR 与曝光,欢迎更多的媒体来报道 FreeBSD。 同时,我们还需要开设更多 FreeBSD 相关的大学课程和培训、在研讨会上组织工作坊、更多 FreeBSD 的贡献者可以在论坛上畅所欲言,更多科技记者和写手的关注 FreeBSD。最后,我们希望能看到更多企业和组织成功地使用 FreeBSD。
其实,BSD 同样也需要更大范围的认可,希望能够站在聚光灯下,让大家都能看到。
McKusick 有句话说得很对:BSD 和 Linux 阵营在组织战略上的分歧是微不足道的。重要的是开源,而不是 Linux 或 BSD 胜出。