抒怀之旅:与 Doug Rabson 的访谈
作者:TOM JONES
译者:ykla & ChatGPT
FreeBSD 项目最初得到了许多人的贡献,但该 FreeBSD 的早期阶段以及我们最喜爱的操作系统背后的人物并没有得到详细介绍。作为 FreeBSD 成立 30 周年的一部分,我开始与开发初期参与其中的人员进行交流。
本次采访对象是 Doug Rabson,他自 1994 年起成为 FreeBSD 的提交者,并且目前正在致力于改进 FreeBSD 对现代容器部署系统(如 podman 和 kubernetes)的支持。
TJ:你能简要地说一下,在 FreeBSD 项目开始之前的 20 世纪 80 年代末和 90 年代初,你在做些什么吗?
DR: 我于 20 世纪 80 年代初大学毕业。在那之前,我已经接触过了 BSD,并且我们在一些机器上使用了它,但我并没有追求过那种操作系统的专业方向。我开始在一家一些朋友创办的小游戏公司工作,我们告诉他们 Unix 很酷,如果他们要买一台计算机,一定要选择 Unix。他们购买了 MicroVAX,安装了 Ultrix,它是 4.2 BSD 的一个近似版本,然后我们写了 Magnetic Scrolls。我们使用 Unix 系统编写交互式程序,因为我们面向的微型机性能太弱。
这种兴趣背景一直伴随着我。我记得 4.3 BSD 的磁带发布时,我从伦敦帝国理工学院的一个朋友那里得到了一份副本。出于好奇,我想理解它是如何工作的。能够阅读源代码的想法非常酷。我阅读了代码,弄懂了一些缺失的部分,但我也明白我不了解足够的东西来填补这些缺失。
稍后一段时间,这仍然是 FreeBSD 之前,我听说了 386BSD,这是 Open/Net/FreeBSD 团队的前身。有人填补了这些缺失,而且是那些真正知道在做什么的人。我在一些工作场所找到了一些废弃的硬件,并在上面安装了 386BSD。它运行起来了,但不是很好。我的意思是,它有些问题。一些人,像 Jordan 等等,我忘记了所有的名字,Nathan Whitehorn,我想是 David Greenman。总之,他们聚集在一起,为 386BSD 提供了一组补丁,因为作者对继续开发没有太大兴趣。在那个时候,他已经为 Dr. Dobbs 撰写了一篇文章并完成了一些工作。但他没有接受补丁。这是一种将添加到 386BSD 的各种错误和功能的补丁整合起来的有机运动。这就是 386BSD 补丁套件,经历了许多版本。当作者 Jolitz 明确表示对进一步开发不太感兴趣时,那就变成了多个 BSD。
这是 Net 和 Free 分道扬镳的时刻。FreeBSD 的人们想要针对单个可行的平台,即基于 386 的个人电脑硬件。而 NetBSD 的人们则对一直以来在 BSD 平台上存在的可移植性感兴趣。所以,他们在那个时候分道扬镳。我认为他们之间没有什么怨言。那只是一种关注点上的差异。所以,那是我在 FreeBSD 项目开始之前所做的事情。我不是任何部分的贡献者,而是一个热情的用户。
TJ:你是如何关注 BSD 的发展的?
DR: 大约在那个时候,我在一家小公司工作,我们做了和 Usenet 的链接,这是一种在许多传统互联网内容之前的公告板系统。我在那里读了很多相关的事情。你可以在与 BSD 和类似内容相关的 Usenet 组中跟踪开发情况。我设法找到了一种获取电子邮件的方法,在当时并不是那么容易。
我找到了邮件列表,那是我真正开始了解 FreeBSD 的地方。起初,我用一些技巧使其在 ISP 在这个国家还不存在的情况下工作。我设法加入了邮件列表,然后最终这个国家有了个 ISP,我开始拨号上网,之后一切就如火如荼地展开了。
TJ:在还没有 ISP 的时候,你是如何获取软件的?
DR: 所以,勾起了一些旧时回忆,我想其中一些可能是发布到了 Usenet 上。我相信我的雇主确实有一些访问权限。当时我们肯定没有上网,但我们与 Usenet 有联系。
还有一个名为 CompuServe 的总部位于英国的公告板,你可以拨号上网并下载东西。这可能是事情的一部分,而且这似乎更有可能,因为当时的 Usenet 有点像西部荒野,而通过 CompuServe,你肯定可以下载东西。是的,我不太确定我最早是如何得到一份 386 BSD 的副本的。我记得有大约 10 或 15 张软盘。我相当肯定 Usenet 在其中起了一些作用。FreeBSD 存在后,就有了一些非常有用的邮件列表,一些在今天仍然存在。不过,与今天相比,当时邮件列表要少得多。它们在了解 FreeBSD 的最新情况,以及人们在做什么, FreeBSD 项目的发展方向方面非常有用。那是在 FreeBSD 1 时代。
TJ:从热情的用户转变为贡献者的过程是怎样的?
DR: 我在使用 FreeBSD。我们有一家从事 3D 图形技术的小公司。我为我们搭建了一个用于文件共享和电子邮件等用途的服务器。那时,我们已经有了拨号上网。服务器运行着 FreeBSD 1.0,也可能是 1.1。
在那个大约有五六人的公司里,我们只有一个光驱。我说,嘿,我们有网络。我可以将其放在服务器上,通过 NFS 共享。这是一个很棘手的问题,因为它运行得不是很好。其中一个糟糕的问题是,FreeBSD 不能通过 NFS 共享 CD-ROM。我进行了一些研究,找到了其他人编写的一些补丁。老实说,我不知道是谁写的。我将这些补丁应用到了我们的服务器上。酷!它正常运行了。
我认为这些补丁最初是针对 FreeBSD 1.0 的。我记得我不得不将它们移植到 FreeBSD 1.1,因为这两个版本之间存在一些差异。我认为我将我的修改后的补丁集发送到了主邮件列表中,说,嘿,我移植了这个人的工作。它适用于当前版本。在那个时候,FreeBSD 2 几乎要发布了。BSDI 的诉讼正在解决中。我们同意的其中一个事项是,封存来自 FreeBSD 1.0 的整个源代码,然后从 4.4 BSD Lite 2 源代码中取出一个干净且在法律上同意的版本,我想那绝对不包括 AT&T 的知识产权。然后,我们将那些显然没有附加条件的 FreeBSD 部分取出,从一个干净的基础上构建 FreeBSD 2。
当我将这些补丁发布到 FreeBSD 1 时,FreeBSD 2 的事情正在酝酿中。我想在那个时候,我的商业伙伴正在加利福尼亚进行销售旅行,他们刚好遇到了 Jordan。我认为那并不是特别不寻常的,因为他知道我所工作公司的名称。那在我的电子邮件签名里。
他的一个朋友正在与我的同事谈论 3D 图形。Jordan 参加了会议,总之,结果是他给我打了电话,说,你想成为提交者吗?在那时,我将我在 FreeBSD 1 上玩耍时的一些东西移植到了 FreeBSD 2,并参与了将 FreeBSD 2 至少做个和 1.1x 一样好的整个的 FreeBSD,从 FreeBSD 1 移植到 2 的一些东西。从那时起,我开始积极参与其中。这是从 FreeBSD 2.0 开始的,以及之后的版本。那应该是 1994 年吧。
TJ:然后,你从成为提交者转变为加入第一个核心团队。这是怎么发生的?
DR: 从 1995 年到 1997 年,我在微软工作,当时我在 FreeBSD 上没有做太多原创性的工作。通过查看我的提交记录,我当时仍然在与 NFS 做一些事情。我在修复错误和其他方面做了一些工作,但并没有尝试做一些真正有趣的事情,因为我不想让我的雇主对 FreeBSD 的一些酷东西拥有权利。无论如何,在那段时间里,我没有做太多事情。在 1997 年,我离开了微软,花了一些时间摆脱有偿工作,与 FreeBSD 进行了适当的接触。我脑海中有一些基于微软操作系统工作方式的想法,例如可加载的内核模块,在当时 FreeBSD 的支持不佳,但至今仍然非常有用。
我认为那种模式比包含所有内容的庞大内核更好,后者是我们大多数情况下使用的模式。我致力于内核链接器的工作。那让我一直忙到 1997 年中期,我猜是这样的。突然有一天,有个想法浮现了,嘿,我们一直在为一个平台,386,进行开发。我们在它方面取得了不少进展。我们已经有一个稳定的操作系统,人们可以使用。我们是否应该考虑第二个平台?我不知道是谁的想法,但在某个时候,数字公司的某人为我们提供了一些 DEC alpha 的借用硬件。Jordan 将我包含在了讨论中,并说,嘿,你想要一台基于 alpha 的计算机吗?是的,当然。DEC 捐赠了一些硬件。我们有了这样一个想法,我们将 FreeBSD 移植到这个新平台。这是一个有趣的平台,因为至少在当时,它看起来可能是一个商业上可 iable 的平台。芯片的价格并不是非常昂贵。
机器中的其余硬件或多或少地类似于 PC。我们觉得这是可行的。它是一个 64 位平台,这对于 FreeBSD 来说是必要的。对于一些用户来说,我们已经开始接近 32 位平台的限制。Alpha 存在,我开始参与其中。最终,我用 NetBSD 的一些源代码的帮助,移植了内核。这大约发生在 1998 年,大部分是那个时候。作为那项工作的一部分,我对整个设备驱动程序架构进行了改进,因为 alpha 是不同的,需要一个抽象层。我把它放进去并进行了很多工作。1999 年,我参加了 Usenix ATC 会议,与从未真正见过面的同行们讨论了我的工作。那时每个人只是通过电子邮件交流。在会议进行到一半时,Jordan 找到了我,说,嘿,你想加入核心团队吗?核心团队自从 FreeBSD 首次发布以来就一直存在。我只是在第一个核心团队快结束时加入的。第一个核心团队在选举之前就已经存在了,那个人看起来像是在做一些有趣的事情,我们就抓住他了!那就是这样的。
TJ:我不知道选举是否更好。
DR: 我认为它们更好。当时我有些怀疑,但我喜欢它,在完善了以后。任期限制为你提供了一个干净的时间点,你可以在那个时候说,嘿,我不想再承担这个层次的参与了。我要退出。我后来确实做了一些类似的事情。我被邀请加入了第一个核心团队,那是一个相当有机的、自我组织的实体。从最近阅读我旧的电子邮件中,我想起了核心团队非常注重技术。它有一个架构元素,这是现在核心团队职责范围意外的一部分。那时情况有些不同。我认为第一个核心团队起源于补丁套件的人员。参与补丁套件的人最终希望将焦点放在为人们使用构建一些东西上。这些人,总的来说,是第一个核心团队的第一个团队。然后,那一组人邀请了其他人。所以,当然,这就是我进入团队的方式,但我是第一个核心团队的末尾。我不记得确切的情况。我没有太关注谁在做什么。
TJ:在你在第一个核心团队和第二个核心团队上任期间, FreeBSD 发生了什么变化?
DR: 我认为我们做出的最大改变就是选举,这是由第一个核心团队的一些成员推动的,他们希望明确 FreeBSD 的治理方式,并制定一些章程。那是一个巨大的变化。我认为这对于将 FreeBSD 的用户更多地融入 FreeBSD 提交者,至少融入决策过程中,是一种文化上的变革,而且那时确实需要这种变化。那是第一个核心团队的结束。
我们解决了这个过程。我记得在 Usenix 会议和之后的一些会议上,为了明确细节,让会员同意,并安排第一次选举。我参加了第一次选举,部分原因是我仍然希望在 FreeBSD 项目中保持这个层面的参与。我希望过渡到选举模式是成功的,所以我们许多人参加了选举,以便已经认识的人可以参与选举。整个 FreeBSD 项目,整个事情,如果第一个核心团队说,“好的,这就是新的规则——我们要就此结束了。”,那么整个计划都会失败。因此,对于这个新模式的承诺是至关重要的。我是那次选举中的一部分,并当选了,因为我在那个时候有一个相当高的知名度。我在内核方面做了很多工作。我进行了一些重要的更改。我觉得我自然而然地参选,因为我深度参与其中。
我希望选举制度能够成功。虽然不是我的主意,但完善后,我喜欢它。那么,在第一核心期间有什么变化吗?那是在 2000 年吗?是 2000 年还是 2001 年?我想那个时候,我开始对整个核心事情感到有些疲惫。它正在变成一个管理系统,而不是技术监督。我发现,与其弄清楚什么是错误和如何修复,我更难以应付这个。
我们需要做出一些艰难的决定。这是在第一个核心团队时期,大约在 Matt Dillon 和其他一些事情发生的时候。我开始有点疲倦,感觉有些受伤,对 FreeBSD 的治理而不是作为一个贡献者。这更多是个人的事情,变化了一些。我很难想出 FreeBSD 项目中有什么切实的变化。
TJ:我们已经稍微涵盖了 Alpha,但 IA64 Port 呢?
DR: 是的,IA64 很有趣。我们有了一个 64 位的平台,但似乎 Digital 即将放弃这个平台。它仍在生产中。那可能是在康柏收购它之后,我认为 Alpha 的前途堪忧,但人们仍然需要一个 64 位的平台。尤其是雅虎,他们有一些工作负载已经接近 32 位地址空间的限制,他们非常需要一个 64 位的平台。我在 2000 年参加了 Usenix ATC 会议。Paul Saab 出现了,并给了我一大堆关于 IA64 的技术文档,然后说,嘿,你知道如何移植内核!看看这个。当时还不清楚 IA64 是否是正确的方向,但它将我们带向了一个更接近 x86 兼容的 64 位平台。从架构上来说,它很有趣。它用不同的方式做事情,我对它的工作原理很好奇。
当我做 Alpha 时,很大程度上受到了从 NetBSD 获取灵感和代码的帮助。他们比我们早一点完成了移植。我想再次进行这个过程,但这次我要全部自己编写,只是为了向自己证明我能做到。这不仅仅是获取一些乐高积木然后组装起来说,嘿,我做到了。我还想构建这些组件。我为 IA64 做了这些工作,我有一些很棒的工具可以使它更容易。我在这两个移植中都广泛使用了模拟来帮助启动系统。雅虎安排我获取了一些测试硬件,我现在还有它。它就在我桌子下面。20 年来它没有被打开过。我拿到了测试硬件,启动了系统。但我对硬件不是很满意。
与我当时使用的 PC 平台相比,我认为这会变得过于昂贵。我无法看到它在大规模运行。那些时代的端口目标是它能否构建自身。它能够自我托管吗?它能够构建自己的源代码吗?我将它带到了那个状态。在此过程中,我想使用一些仅适用于 386 的工具,这些工具来自我们用于一些私有源代码控制的 Perforce。我没有 IA64 的二进制文件,所以,我编写了现在称为先前 32 位 ABI 的起始部分。那时,它是在我的 IA64 内核中托管的 386 ABI。这段代码现在仍然作为 32 位兼容层使用。
我写了足够多的代码来使 Perforce 工作,但我并不确信它会成为一个成功的平台。最终,它成为了一个小众平台,并在那个小众角色中取得了成功。但我不能想象谷歌、雅虎或其他大型互联网公司会在大规模上使用它,至少不是我所见过的那种硬件。惠普收购了康柏,并最终成为 IA64 的主要支持者,因为我认为他们的一些知识产权从他们的 PA 风险架构中进入了 Itanium。惠普是该平台的主要支持者。
FreeBSD 项目中的另一名成员在惠普工作,对 IA64 感兴趣,我或多或少地让他接管了开发,大约是在 2001 年左右,也可能是 2002 年左右。我记得 2002 年为 IA64 做了 32 位子系统。所以,是的,我在将其发展到可行、自我托管的状态后,别人接管了这个项目。
我认为它们对于不同的原因都是重要的移植。IA64 的存在使得 Peter Wemm 更容易进行 AMD64 移植。
TJ:FreeBSD 的宝贵财富是什么?
DR: 这个财富就是拥有一个真正自由、自我支持、功能完善的操作系统,不涉及许可政策。当你把它嵌入到设备中并销售出去时,没有人会在互联网上开始抱怨你没有勾选正确的框框或者没有发布你的源代码。任何人都可以轻松地继续开发这个 FreeBSD 项目。我们明确了系统中简单版权和复杂版权部分之间的界限。所以,我认为这是一个可行的嵌入式开发资源,适用于几乎任何领域。你可以在各种奇怪的设备中找到 FreeBSD 的身影。它是 Juniper 等厂商生产的一整条路由器硬件线的基础。它是许多存储设备的控制平面。FreeBSD 曾经是一些随机互联网防火墙设备的一部分。它仍然在各种设备中发挥作用,你只需将它视为一个应用程序。
它们只是起作用。而它们能够起作用的原因是因为 FreeBSD 在法律和技术上都非常易于使用。我认为这是其财富的一个重要组成部分。当然,还有其他方面的财富。我认为 FreeBSD 中的代码质量使其成为操作系统社区的积极资源。我们在 FreeBSD 中进行一些工作,以便 FreeBSD 中的想法可以与其他平台相互交流,反之亦然。
如果 FreeBSD 很糟糕,我们就不会真正成为那些自我改进 FreeBSD 项目的一部分。这就是单一文化的危险。FreeBSD 正在努力避免单一文化。健康的交流是其中的一部分。我从 Linux 那里获得了一些想法。希望 Linux 也能偶尔从我们这里获取一些想法。我知道他们以前在某些驱动程序方面采用了我们的东西。所以,在类似 FreeBSD 项目的生态系统中成为一个良好的合作伙伴是其中的一部分。
TJ:还有什么要补充的吗?
DR: 在过去的一年里,我在轻度参与之后重新与 FreeBSD 项目取得了联系。我现在看到的主要差异是,我们更加注意避免破坏事物。如今,我们拥有不错的单元测试套件、持续集成系统和日益增长的代码审查文化,与早期我会在自己的变更上进行临时性测试、有时通过电子邮件将其发送给人们查看,但不总是如此相比,这是一个整体上很好的变化,因为它减少了风险,并倾向于产生稳定的平台,但这是一种不同(更慢)的工作方式,我认为很难在最小化风险和创新之间找到平衡。
Tom Jones 是一名 FreeBSD 的提交者,致力于保持网络堆栈的高速运行。
最后更新于