1.3.关于 FreeBSD 项目

1.3. 关于 FreeBSD 项目

以下部分提供了有关该项目的一些背景信息,包括简要历史、项目目标以及项目的开发模型

1.3.1. FreeBSD 简要历史

FreeBSD 项目始于 1993 年初,部分是由非官方的 386BSDPatchkit 的最后三位协调员:Nate Williams、Rod Grimes 和 Jordan Hubbard 的构想。

最初的目标是生成 386BSD 的中间快照,以解决一些补丁机制无法解决的问题。项目的早期工作名称是 386BSD 0.5 或 386BSD Interim,以引用这一事实。

386BSD 是 Bill Jolitz 开发的操作系统,到那个时候已经受到了将近一年的严重忽视。随着每一天过去,补丁机制变得让人越来越不舒服,他们决定通过提供这个临时的“清理”快照来协助 Bill。然而,在没有明确表明将采取什么行动的情况下,Bill Jolitz 突然决定退出该项目,计划被粗鲁地打断。

即使在没有 Bill 的支持的情况下,三人认为目标仍然值得追求,因此他们采用了 David Greenman 提出的名称“FreeBSD”。在咨询了当前系统的用户后,制定了初始目标,在清楚地认识到该项目甚至有可能成为现实后,Jordan 联系了 Walnut Creek CDROM,以改善 FreeBSD 的发行渠道,以满足那些没有便捷访问互联网的人的需求。Walnut Creek CDROM 不仅支持在 CD 上分发 FreeBSD,还提供了一台用于开发工作和快速互联网连接的机器。没有 Walnut Creek CDROM 对当时一个完全未知项目的几乎空前的信心,很难想象 FreeBSD 会取得如今如此迅猛的发展。

第一个 CD-ROM(以及全网)发行版本是 FreeBSD 1.0,于 1993 年 12 月发布。它基于加州大学伯克利分校的 4.3BSD-Lite(“Net/2”)磁带,其中许多组件还由 386BSD 和自由软件基金会提供。对于首次发布来说,它是一个相当不错的成功,并在 1994 年 5 月发布了极其成功的 FreeBSD 1.1。

在这个时候,一些意外的风暴云在地平线上形成,当时 Novell 和加州大学伯克利分校解决了关于 Berkeley Net/2 磁带的法律地位的长期诉讼。解决方案的一个条件是加州大学伯克利分校承认 Net/2 的三个文件是“有负担的”代码,必须予以删除,因为它们是 Novell 的财产,而 Novell 则曾经从 AT&T 那里收购过这些文件。作为交换,加州大学伯克利分校获得了 Novell 的“祝福”,即 4.4BSD-Lite 发布时,它将被宣布为不受限制的,所有现有的 Net/2 用户都将被强烈鼓励切换到 4.4BSD-Lite。这也包括了 FreeBSD,项目被赋予了截至 1994 年 7 月底停止运送其自己基于 Net/2 的产品的权利。根据协议的条款,在截止日期之前,项目被允许发布最后一个版本,即 FreeBSD 1.1.5.1。

随后,FreeBSD 开始从全新且相当不完整的 4.4BSD-Lite 位重新发明自己。尽管只有与 System V 共享内存和信号量相关的三个文件被删除,但对 BSD 分发进行了许多其他更改和错误修复,因此将所有 FreeBSD 开发合并到 4.4BSD-Lite 是一项巨大的任务。项目花费了将近到 1994 年 11 月才完成这个过程,并在 1994 年 12 月发布了 FreeBSD 2.0。尽管它在很多方面仍然不太完善,但这次发布是一个重要的成功,并在 1995 年 6 月发布了更稳定且易于安装的 FreeBSD 2.0.5 版本。

从那时起,FreeBSD 每次都进行了一系列的发布,不断改进之前版本的稳定性、速度和功能集。

目前,长期的开发项目仍在 14.0-CURRENT(main)分支中进行,14.0 的快照版本将根据工作进展的情况持续提供。

1.3.2. FreeBSD 项目目标

FreeBSD 项目的目标是提供可以用于任何目的且无附加条件的软件。我们中的许多人在代码(和项目)中投入了相当大的资源,偶尔会期望一些财务补偿,但我们绝对不会坚持这一点。我们认为我们的首要任务是向任何人提供代码,无论出于何种目的,以便代码得到尽可能广泛的使用并提供尽可能广泛的益处。我相信这也是自由软件的最基本目标之一,我们全力支持这一点。

在我们的源代码中,属于 GNU 通用公共许可证(GPL)或库通用公共许可证(LGPL)的代码可能会附加稍多一些的条件,尽管只是强制要求开放源代码而不是别的。由于在商业使用 GPL 软件中可能出现的额外复杂情形,因此在合适的情况下,我们更倾向于用更宽松的 BSD 许可证发布软件。

1.3.3. FreeBSD 开发模式

FreeBSD 的开发过程非常开放、灵活,它实际上由世界各地成千上万的人贡献代码构建而成的,这可以从我们的贡献者列表中看出。FreeBSD 的开发基础设施允许这些成千上万的贡献者通过互联网进行协作。我们始终在寻找新的志愿者,有兴趣更紧密地参与的人应该查阅有关《为 FreeBSD 贡献》的文章。

无论是独立工作还是紧密合作,了解有关 FreeBSD 项目及其开发过程的有用信息:

Git 存储库

多年来,FreeBSD 的中央源代码由 CVS(Concurrent Versions System,一种免费的源代码控制工具)维护。在 2008 年 6 月,项目切换为使用 SVN(Subversion)。由于 CVS 引入的技术限制在源代码树的迅速扩展和已存储的历史量方面变得明显,因此认为必须进行切换。文档项目和 Ports Collection 仓库也分别在 2012 年 5 月和 2012 年 7 月从 CVS 切换到 SVN。然后,在 2020 年 12 月,项目将源代码和文档存储库迁移到 Git,而 Ports 则于 2021 年 4 月追随迁移。有关获取 FreeBSD src/ 存储库的更多信息,请参阅《获取源代码》部分,有关获取 FreeBSD Ports Collection 的详细信息,请参阅《使用 Ports》。

提交者列表

提交者是具有推送访问权限的人,有权对 FreeBSD 源代码进行修改(“提交者”这个术语来自 commit,这是用于将新更改引入存储库的源代码控制命令)。任何人都可以向 Bug 数据库提交错误报告。在提交错误报告之前,可以使用 FreeBSD 邮件列表、IRC 渠道或论坛来帮助验证问题是否确实是错误。

FreeBSD 核心团队

如果 FreeBSD 项目是一家公司,那么 FreeBSD 核心团队 就相当于董事会。核心团队的主要任务是确保整个项目处于良好状态并朝着正确的方向前进。邀请专注和负责任的开发者加入我们的提交者组是核心团队的职能之一,招募新的核心团队成员则是在其他人离开时的职责之一。当前的核心团队是从提交者候选人中选举出来的,在 2022 年 5 月进行了选举。选举每 2 年举行一次。

注意

与大多数开发人员一样,当涉及到 FreeBSD 开发时,大多数核心团队成员也是志愿者,并且并不从项目中获得财务收益,因此“承诺”也不应被误解为“有保障的支持”。上述的“董事会”类比并不是很准确,可能更适合说这些人是在不明智的判断下为了 FreeBSD 而放弃了他们的生活!

FreeBSD 基金会

FreeBSD 基金会是一个 501(c)(3)、总部位于美国的非营利组织,致力于支持和推广全球范围内的 FreeBSD 项目和社区。基金会通过项目拨款资助软件开发,并让员工立即回应紧急问题并实施新功能和功能。基金会购买硬件以改进和维护 FreeBSD 基础设施,并资助员工以提高测试覆盖率、持续集成和自动化。基金会通过在世界各地的技术会议和活动中宣传 FreeBSD 来推动 FreeBSD。基金会还提供研讨会、教育材料和演示,以招募更多的 FreeBSD 用户和贡献者。基金会还代表 FreeBSD 项目执行合同、许可协议和其他需要承认的法律事物。

外部贡献者

最后,但绝不是最不重要的,最大的开发者群体是用户自己,他们几乎在不断地向我们提供反馈和错误修复。保持与 FreeBSD 基础系统开发的联系的主要方法是订阅 FreeBSD 技术讨论邮件列表,其中讨论此类事项。对于移植第三方应用程序,可以使用 FreeBSD ports 邮件列表。关于文档——FreeBSD 文档项目邮件列表。有关各种 FreeBSD 邮件列表的更多信息,请参阅互联网上的资源

FreeBSD 贡献者名单很长且在不断增长,那么为什么不通过向 FreeBSD 贡献一些东西来加入呢?提供代码并不是唯一的方式!

总之,我们的开发模式组织成为一组松散的同心圆。中心化模式旨在方便 FreeBSD 用户跟踪一个中央代码库,而不是阻止潜在的贡献者加入!我们的愿望是提供一个稳定的操作系统,带有一套大量协调的应用程序,用户可以轻松安装和使用——这种模式在实现这一目标方面非常成功。

对于那些希望成为 FreeBSD 开发人员的人,我们只要求有些与当前人员对其持续成功一样的奉献精神!

1.3.4. 第三方程序

除了基础发行版外,FreeBSD 还提供了一个移植的软件集,其中包含了成千上万个常见的常用程序。这些移植的程序范围从 HTTP 服务器到游戏、编程语言、编辑器,几乎覆盖了各种各样的应用。大约有 36000 个 Port;整个 Ports 大约需要 3 GB 的空间。要编译一个 Port ,您只需切换到要安装的程序的目录,输入 make install 命令,然后让系统执行其余的操作。几乎每个 Port 都提供了预编译的“软件包”,那些不希望从源代码编译自己的 Port 的人可以使用简单的命令(pkg install)来安装。有关软件包和 Port 的更多信息,请参阅《安装应用程序:软件包和 Port》。

1.3.5. 其他文档

所有受支持的 FreeBSD 版本在安装程序中提供了在初始系统设置期间安装其他文档的选项,位于 /usr/local/share/doc/freebsd 目录下。也可以稍后使用软件包来安装文档:

# pkg install en-freebsd-doc

对于本地化版本,请将“en”替换为所选语言的语言前缀。请注意,某些本地化版本可能已过时,可能包含不再正确或相关的信息。您可以使用网络浏览器查看本地安装的手册,使用以下链接:

FreeBSD 手册

/usr/local/share/doc/freebsd/en/books/handbook/handbook_en.pdf

FreeBSD FAQ

/usr/local/share/doc/freebsd/en/books/faq/faq_en.pdf

您可以随时在《文档门户》上找到最新的文档。