岁月如梭:我个人的时间线
作者:GREG LEHEY
译者:basebyte 【】为译者注,部分链接为校对者注
FreeBSD 已经有 30 年的历史了!那么我在其中扮演着什么角色呢?虽然我并不是创始人之一,但我一直在默默关注着。以下是从我的视角描述的事情经过:
在 FreeBSD 的早期阶段
当 FreeBSD 出现时,我在这个行业已经工作了将近 20 年。1973 年 5 月,我开始在法兰克福和梅因的 UNIVAC 工作。后来,我加入了位于法兰克福的 Tandem 公司。从 1987 年开始,我开始与 Tandem 全新的 Unix 系统(System V)合作,并组建了欧洲 Unix 技术支持团队。在 1990 年,我们按照“吃自己的狗粮”的传统,在 Tandem 欧洲安装了第一批台式机 Unix 机器,那是搭载 Intel 80386 处理器,拥有惊人的 8MB 内存,运行交互式 Unix System V/386 操作系统。
在 1992 年 3 月,我离开了 Tandem 成为一名顾问。对我来说,不再有 Unix 源代码的访问机会了!实际上,几乎没有使用 Unix 了:我不能把公司的设备带走,我当时认为是这样,虽然后来我发现我还剩下了可能是最后一台 Tandem LXN 系统。但那并不适合用于桌面,而且在那个年代 Unix 是非常昂贵的。巧合的是,一个名为 BSD/386 的产品几乎在我离开 Tandem 的同一时期问世了。只需 1000 美元,还附带完整的源代码!是的,它不是 System V,但应该可以接受。令人惊讶的是!它比 System V 容易使用得多。我写了一篇文章,于 1992 年 6 月发表在德国 iX 杂志上。当然,我也一直保持着关注。在 1992 年中期,Bill Jolitz 发布了 386BSD,它看起来与 BSD/386 惊人地接近,不仅仅是名称上的相似。我下载了它,安装了它,看着它崩溃了,然后继续寻找其他选择。
1993 年
FreeBSD 呢?人们是什么时候发现它的?实际上,1993 年 6 月 19 日只是人们决定使用这个名字的日期。
FreeBSD 呢?人们是什么时候发现它的?实际上,1993 年 6 月 19 日只是人们决定使用这个名字的日期。我一直在 USENET【新闻组】 上关注相关的进展,但特别是在我尝试了 386BSD 后,没有什么让我觉得有必要尝试 FreeBSD,尤其是在那个时代网络流量的费用非常可怕。
但是在 1993 年 9 月 27 日,我在 Walnut Creek 与该公司的所有者:Jack Velte 和 Bob Bruce,见面商谈:我当时刚刚发布了一张名为“Applications for Unixware”的 CD-ROM,我希望他们能帮我推广销售。在那里,我看到大厅的另一侧有人在一台电脑上工作。Jack 告诉我那是 FreeBSD 的开发机。我对此很感兴趣,他答应一旦有了 CD 版本,就会给我寄送一张。
1994 年
我的 FreeBSD 1.0 CD-ROM 终于到了!我当即安装了它并尝试了一下,不过我当时并没有打算真的使用它。但后来,我在 BSD/386 的排序程序中发现了一个错误。那个错误在 FreeBSD 中存在吗?没有!而且更令人高兴的是,这个程序的二进制版本在 BSD/386 上完美运行。自然而然的,我对 FreeBSD 的看法大为改观。
1995 年
在 1995 年 5 月,我在新加坡担任 Tandem Computers 的顾问,为 Singapore Telecom 项目工作。我们都在使用 Tandem 公司的 Unix System V 版本操作系统,但办公室里大多数人使用的是微软的产品,而在那个时代,网络是一种新奇陌生的事物。他们似乎还没有听说过域名系统(Domain Name System),他们通过 IP 地址连接到其他机器。
有一天,我想打印一些东西。走到打印机旁,发现上面贴着一个 IP 地址的标签,于是我向它发送了打印任务。打印任务已经发出去了,但打印机却没有打印任何东西。后来我发现,那台打印机原来属于 Tandem 位于雅加达的办公室,但它出了故障,被送到新加坡修理,然后就一直留在了办公室。但他们没有更换标签,所以我的打印任务被发送到了雅加达。
我们需要一个域名服务器!我找到了一台很少使用的个人电脑,在上面安装了 FreeBSD 和 bind,并把它藏在了一张桌子下。哇!sing.tandem.com
域名就这样诞生了。
同年的十月,在德国,Walnut Creek 公司的几位成员来访。我刚刚提交了我的第一本书《Porting UNIX Software》进行出版,并向他们展示了草稿。Jack Velte 对此印象深刻,并说:“你能写一本关于如何安装 FreeBSD 的书吗?不需要太长,大概 50 页左右就行。”
那听起来是个好主意,于是我开始着手写那本书。我在《Porting UNIX Software》的过程中遇到了一些问题:校对人员对我的措辞和标记有异议,最后导致出版出现了重大错误。因此,我设定了一个条件,我会亲自提交最终的 PDF 版本。我几乎可以肯定最开始我使用的是 BSD/386 系统,但显然,我需要更好地了解 FreeBSD,于是我将工作转移到了一台 FreeBSD 机器上。我还想强调的是,我要在 FreeBSD 平台上完整地创作整本书。
在 1990 年代中期,用 FreeBSD 写书是怎样的体验?我听说过可能比现在困难得多。但不,问题不在于工具,而是内容会让人头疼。这一点并没有改变。这本书总共经历了 5 个版本,在每个版本中,我都不得不重新安排内容,使它们听起来更合乎逻辑。是的,当时的计算机速度很慢——我想它是一台 66 MHz 的 Intel 486——每个章节的格式化都需要几分钟的时间。但我设计了一些 Makefile 的技巧,让我可以逐个构建章节,同时仍然保持与其他章节的交叉引用。
1996 年
在 1996 年 2 月 24 日,我提交了《Running FreeBSD 2.1》的最终版本,而 Jack(只在封面上做了修改)将其改为《Installing And Running FreeBSD》。它并不完全是 Jack 所要求的 50 页,而是膨胀到了 200 页的编辑内容以及另外 100 页的手册页、目录和索引。
这令 Jack 满意了吗?当然没有!他想要更庞大的作品。我几乎没有时间喘息,就开始着手下一版,题为《The Complete FreeBSD》(Jack 定的标题)。他想要 1000 页的书!
我们没有完成 1000 页的目标。在仅仅不到 5 个月后的 1996 年 7 月 19 日,我提交了我们所认定为第一版的《The Complete FreeBSD》,只有 844 页。我是如何做到的呢?手册页是我的朋友:总共有 542 页的手册页。
在这个时间段内,我逐渐迁移到了 FreeBSD,并花了一些时间编写 ISDN 子系统。这期间遇到了一件我意想不到的事情:在处理日志时,我接到了一个电话。我接听了电话,但来电者立刻挂断了。
还好我有一个来电日志记录,它包含了来电者的电话号码,在那个时代这是不寻常的。所以,我回拨了电话,并询问是否需要帮助。原来,他是想买我的房子!
1997 年
卖掉我家的房子是一个漫长的过程。由于气候原因,我和家人们决定离开德国,但我们应该去哪里呢?最终,我们决定搬到澳大利亚,整个搬迁过程花了我们 6 个月的时间。
在 1997 年 9 月,我正在尝试使用 ccd,这是一个用于连接磁盘的工具。但它效果不好,我心想“一定有更好的方法”。我刚从中国回来,在那里我教授了一些关于 Tandem 的 NonStop-UX 产品的课程,其中包括 Veritas Volume Manager(VxVM)。那正是我们需要的!这有多难呢?
我开始实现 VxVM 的一个复刻版本,因为显而易见的原因,我将它命名为 Vinum。这让我更加接近 FreeBSD 的开发社区,当然,这也让我忙碌了一段时间。Cybernet 帮助了 Vinum 的开发,他们正在寻找一个 RAID-5 实现,所以我也实现了这个功能。那一定是我写过的最复杂的代码。在我终于觉得我做到了的那一天,有三只笑翻天的笑翠鸟围绕着我的房子飞来飞去。我以前从未有过这样的经历。
1998 年
在 1998 年 6 月,我参加了在新奥尔良举行的 USENIX 年度技术会议,并与一些 FreeBSD 开发者见面。我发现我的 Vinum 设计与实现 GEOM 的计划发生了冲突。
同年晚些时候,Vinum 准备好并被纳入了 FreeBSD 源代码树。我在 9 月份的 AUUG 年度会议上提交了一篇论文,Peter Wemm,也就是 CVSMeister,也在场。他帮助我提交了 Vinum 的代码,这是我第一次提交。真是太好了:由于某种原因,可能是网络问题,提交失败了。第二次提交成功了,但同时我们也提交了一个额外的文件:emacs.core,引起了普遍的激动。
1999 年
在十月份,我们在伯克利举办了一次会议(“FreeBSDCon”),我在会上展示了 Vinum。
FreeBSD 已经成熟了!在十月份,我们在伯克利举办了一次会议(“FreeBSDCon”),我在会上展示了 Vinum。与前一年在新奥尔良的会议相比,情况似乎在向着更专业的方向发展,我们第一次感觉到有人对 FreeBSD 感兴趣,而不仅仅是作为项目的一部分。我们有了追随者!
2000 年
我们恐惧地发现,微软在 Web 服务器应用方面的性能超过了 FreeBSD。
我什么时候停止使用 BSD/OS(现在称为 BSD/386)呢?我手上最后一张 CD 是 3.0 版本的,它是在 1997 年 2 月发布的。我猜想我在搬到澳大利亚时停止使用了:我不得不设置新的机器,而 FreeBSD 与 BSD/OS 一样好用。
看起来 BSD/OS 也是这样认为的:在 2000 年 3 月,他们与 Walnut Creek“合并”,但具体条件我并不了解。最初有宣布称 FreeBSD 和 BSD/OS 的基线代码将合并成一个产品,尽管这个想法也遭到了一些强烈的反对,特别是来自 Mike Karels。而众所周知,这从未发生过。
同样在 2000 年 3 月,我收到了一份无法拒绝的工作邀请:加入 Linuxcare,这是一家专门支持 Linux 的公司。那与我有什么关系呢?他们想要拓展到支持 BSD,而且他们已经雇佣了一名员工 Ceren Ercen,她与 Mike Smith 是朋友。好消息是我可以在家工作,并且我会得到报酬来进行 BSD 方面的工作。
在四月份,一位核心团队成员提交的更改破坏了 Vinum!虽然我之前已经与他讨论过这个问题,但他似乎并不在意。经过大量讨论,最终 Jordan Hubbard 认为当前的核心团队结构(由最早的 17 名成员组成,无论是否仍活跃)已经过时。最后,人们提出了选举产生核心团队的想法,而我被选为第一个团队的成员("core.2")。逐渐地,这个团队变得更加国际化:3 名澳大利亚人、3 名美国人、2 名英国人和 1 名日本人。
当年的重大技术问题是与多核处理器系统有关的性能问题,这正是一个刚刚开始兴起的领域。令我们恐惧的是,我们发现微软在 Web 服务器应用方面的性能超过了 FreeBSD。我们明白了原因:Unix 内核是为单核处理器机器构建的,一次只能有一个进程进入内核。为了进入内核,一个进程必须获取一个名为 Giant 的锁,如果需要的话,等待直到该锁的拥有者离开内核。这导致了大量的处理器空闲时间。
幸运的是,在这个时期(“互联网泡沫”时期),很多项目成员,包括我在内,都受雇于愿意资助这类工作的公司。尽管 BSD/OS 已经与核桃溪光盘公司合并,但我们仍然没有获得他们的代码库访问权。他们在 BSD/OS 5.0 的这个领域做了一些工作,他们愿意让我们使用这些代码。于是,在 2000 年 6 月 15 日,我们在雅虎(位于 Sunnyvale)聚集在一起,商讨细节,其中之一就是项目名称:SMPng。原则上,我们将把与 SMP 有关的 BSD/OS 代码合并到 FreeBSD 中。最终,只有 Matt Dillon、Jason Evans 和我成为了执行团队的成员。我在整个职业生涯几乎都在与多核处理器系统打交道,因此我非常渴望参与其中。由于这是我的日常工作,由 Linuxcare 资助,所以我有充足的时间投入其中。
很快,我们发现我们对项目有不同的期望。Matt 离开了团队,John Baldwin 加入,并且 Jason 成为了项目负责人。他在 2000 年 9 月 7 日提交了 SMPng 的第一个版本,不到 3 个月的时间。而在那时,我已经理解了 Mike Karels 对代码合并的反对意见:即使合并 BSD/OS 和 FreeBSD 之间有相对较少差异的代码,也是非常费力的。
在 2000 年 10 月,我们在加利福尼亚州蒙特雷举办了第一届 BSDCon(而不是 FreeBSDCon)。这也是核心团队成员首次聚集在一起。我还发现 Justin Gibbs 成立了一个 FreeBSD 基金会。对于这种重复,我感到困惑,对于界限究竟在哪里,以及为什么会有两个组织,我并不清楚。经过将近 25 年的时间,我至今仍然不理解这个问题。
2021 年
在 2001 年,核心团队成员了解到了新秩序的模样:不再是特别关注技术方面,而是变得行政化。我们不再是一个小团体的业余爱好者,而是一个官僚机构。核心团队不再制定技术方向;相反,我们主要负责分发提交权限,并且我们的主要工作是处理提交者之间的争执。
在 2001 年初,Linuxcare 开始解体。我们的“OzLabs”部门,有像 Andrew Tridgell 和 Rusty Russell 这样的 Linux 明星,被解散了。Paul Mackerras 与 IBM 有良好的联系,他设法让大部分团队成员很快加入了 IBM。当然,那将是纯粹的 Linux 工作,我花了一些时间寻找其他工作,但没有找到好的,最终在 2001 年 5 月加入了 IBM。
这要求我更加深入地了解 Linux。人们决定让我创建一个 IBM JFS 版本 1 的复刻,以在 Linux 上运行。为什么要复刻?因为那是公司的不同部门,我们无法获得更多的东西,只能拿到头文件。这是一次非常有趣的经历,但这是另一个故事。从我的角度来看,我从内部了解了 Linux,但并没有让我感到兴奋。我还在我的一台普通机器上运行了 Linux,并且时不时地,当一些 FreeBSD 的缺陷让我感到烦恼时,我会尝试转换到 Linux。然而,所有这些尝试都没有成功:截至 2023 年,我家网络中仍然只运行 FreeBSD。
在这段时间里,我做了许多关于 FreeBSD 的演讲和教程,包括我最后一次关于“安装 FreeBSD”的教程,以及在波士顿举行的 USENIX ATC 和悉尼举行的 AUUG 会议上的论文。当然,Vinum 和 SMPng 需要大量的调试工作,我围绕这些内容构建了一个教程,并多次进行演讲,首次演讲是在 2021 年 11 月于 Brighton 举行的 EuroBSDCon 会议上。
这个调试教程很有趣。其中的一部分涉及演示调试技巧,当然了。在 Brighton 的第一次演讲中,我对要展示什么并没有太多的想法,但午餐后,我打开了我的笔记本电脑... 然后它崩溃了!因此,我没有任何准备就不得不分析崩溃。而且它是一个有趣的崩溃:我重新启动了我的笔记本电脑,但系统检查了一些随机内存位置,看看是否需要重新启动服务。结果发现,内存没有完全清空,许多内存仍然保留有旧内容。因此,系统认为没有重新启动,尝试访问其他地方的内存,导致了问题。到晚上,有一位参与者找出了解决办法并提交了修复。非常令人满意的结果。
但在另一个场合,事情并没有那么顺利。在台北举行的第一届 AsiaBSDCon 上,我决定进行一次真正的演示,带着两台笔记本电脑,并得到了 Warner Losh 的帮助。在拥挤的主会场前,我们连接了这两台机器,将其中一台置于调试状态...而另一台却卡住了:它试图访问第一台笔记本电脑上的内核源代码。两台机器都需要重新启动。这着实让我尴尬了一把。
2002 年
逐渐地,我在项目中的活动减缓了:不再有雇主愿意资助我的开发工作,而这已经成为在该项目上开展任何重要工作的必要条件。但我继续从事其他方面的工作,比如在《Daemon's Advocate》发表文章以及在会议上做演讲分享和教程。由于 Walnut Creek 公司不再存在,O'Reilly 出版社也就同意我出版《The Complete FreeBSD》的第四版。
在核心团队中的日子并不总是很愉快。我们遇到了数量惊人的流氓提交者,其中两个提交者在公开场合大打出手,是一个尤其引人注目的案例。我们最终得出的结论是,我们不得不开除其中一个——Matt Dillon,尽管并不清楚他是否有更大的过错。他后来创建了 DragonFlyBSD 项目。
这种压力显现出来了:相对较短的时间内,Jordan Hubbard 和 Mike Smith 相继从核心团队以及项目中辞职。
引用 Jordan 的话:“最后,还需要指出的是,虽然参与 FreeBSD 项目有很多意义,但对于参与者来说,它至少应该在某种程度上是‘有趣’的,否则参与其中就没有什么意义了”。
Mike 也有同感:“已经不好玩了”。这句话象征着前十年发生的变化。
2003 年
在我看来,事情继续走向平淡。在四月份,第四版的《The Complete FreeBSD》出版了,我也多次进行了我的内核调试教程演讲。我继续对源码和 ports 树进行提交,但此时我已经成为一个陪伴者,我的时代已经过去了。
二十年后:2023 年
现在,这个概述的时间范围对于一些人来说似乎是很遥远的过去。很多项目成员,甚至核心团队成员,甚至在项目开始时还没有出生。现在的情况如何呢?
当然,它们发生了变化,比我预期的要多。从外部来看,情况并没有那么大的不同,我在 2022 年再次参加了核心团队的选举,并当选了。而从内部来看,许多事情都发生了变化,大部分是好的,但不是全部。
“早期”的部分理念是“我们走在人群的前面”和“吃自己的狗粮”。但这些概念似乎已经不再适用了。我只使用 FreeBSD 工具,用 troff 写了《The Complete FreeBSD》。当被要求提交这篇文章时,我可以选择纯文本或(微软)“Word”。在过去,虽然“Word”也存在,但没人会想到这一点。我们的许多交流工具都是项目外部的。我仍在试图理解这个“勇敢的新世界”。
GREG LEHEY 出生于澳大利亚,曾在马来西亚、英国和德国接受教育。他职业生涯的大部分时间在德国度过,退休前 10 年返回澳大利亚。他曾为多家计算机制造商、德国航天研究机构、匿名软件公司、大型用户工作,也曾自己担任顾问。
在 35 年的行业生涯中,他几乎做过所有工作。他唯一没有做过的事情就是编写商业应用软件或搞明白微软软件。
他从 1989 年开始参与自由软件运动,从 1998 年开始成为 FreeBSD 开发团队的一员,在 FreeBSD 核心团队中担任过三届成员,目前仍是该团队的一员。他还是 NetBSD 开发人员和澳大利亚 Unix 用户组 AUUG 的主席。
他著有《Porting UNIX Software》(O'Reilly and Associates,1995 年)和《The Complete FreeBSD》(Walnut Creek,1996 年和 O'Reilly and Associates,2003 年)。他于 2007 年退休,但仍活跃在 FreeBSD 社区。
最后更新于