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 Jolitz 突然决定从该项目中撤回他的批准时,这些计划戛然而止,而没有任何明确的迹象表明将做什么来代替。

三人认为,即使没有 Bill 的支持,这个项目也是值得的,因此他们采用了 David Greenman 创造的“FreeBSD”这个名字。最初的目标是在咨询了系统的现有用户之后确定的,而且,发现这个项目正在成为现实后,Jordan 就联系了 Walnut Creek CDROM,其目的是为了改善 FreeBSD 的发行渠道,让那些难以进入互联网的不幸者也能使用 FreeBSD。Walnut Creek CDROM 不仅支持在 CD 上发行 FreeBSD 的这个想法,而且还为该项目提供了一台机器和一个快速的互联网连接。如果没有 Walnut Creek CDROM 对这个在当时完全不为人知的项目的几乎前所未有的信任,FreeBSD 不可能像今天这样走得这么远,这么快。

第一个 CD-ROM(和一般网络)发行版是 FreeBSD 1.0,于 1993 年 12 月发布。它基于 U.C. Berkeley 的 4.3BSD-Lite(“Net/2”) 磁带,其中许多组件也由 386BSD 和自由软件基金会提供。对于第一次发布的产品来说,这相当的成功,随后他们在 1994 年 5 月非常成功的发布了 FreeBSD 1.1。

就在这个时候,一些出乎意料的风暴云在地平线上形成,因为 Novell 和 U.C. Berkeley 就 Berkeley Net/2 磁带的法律地位解决了他们长期的诉讼。和解的一个条件是 U.C. Berkeley 让步,即 Net/2 的大部分“担保”代码,是 Novell 的财产,而 Novell 又在前一段时间从 AT&T 那里收购了它。Berkeley 得到的回报是 Novell 的“祝福”,即在最终发布 4.4BSD-Lite 版本时,将被宣布为不受限代码,并强烈鼓励所有现有的 Net/2 用户使用。这包括 FreeBSD,允许该项目在 1994 年 7 月底之前继续发布它自己基于 Net/2 的产品。根据协议的条款,该项目被允许在截止日期前发布最后一个版本,这个版本就是 FreeBSD 1.1.5.1。

然后 FreeBSD 开始了艰巨的任务,即从一套全新的、相当不完整的 4.4BSD-Lite 代码中重新开发自己。这些“精简版”的发布,部分原因是 Berkeley 的 CSRG 已经删除了大部分的代码,这些代码是用来构建一个可启动的运行系统的(由于各种法律要求),而且 Intel 对 4.4 的移植也非常不完整。这个项目直到 1994 年 11 月才完成这一转变,并在 12 月向世界发布了 FreeBSD 2.0。尽管还有些粗糙,但这次发布还是取得了巨大的成功,并在 1995 年 6 月发布了更加强大和易于安装的 FreeBSD 2.0.5。

从那时起,FreeBSD 就已经发布了一系列的版本,每一次都是在前一个版本的基础上改进稳定性、速度和功能设置。

目前,长期的开发项目继续在 14.X-CURRENT(trunk)分支中进行,而 14.X 的快照版本会随着工作的进展不断在快照服务器中提供。

1.3.2.FreeBSD 项目目标

FreeBSD 项目的目标是提供可以用于任何目的的软件,并且不附带任何条件。我们中的许多人在代码(和项目)上有很大的投资,当然不介意偶尔有一点经济补偿,但我们绝对不准备坚持这样做。我们相信,我们首要的“任务”是向任意以及所有的来者提供代码,无论其出于何种目的,以便代码得到最广泛的使用,并提供最广泛的利益。我相信,这是自由软件最基本的目标之一,也是我们热情支持的目标。

在我们的源代码树中,属于 GNU 通用公共许可证(GPL)或 GNU 较宽松公共许可证(LGPL)的代码会有更多的附加条件,尽管是在强制要求使用的一方,而不是其他。由于在 GPL 软件的商业使用中可能会出现额外的复杂性,因此在合适的情况下,我们更倾向于在更宽松的 BSD 许可证下提交软件。

1.3.3. FreeBSD 的开发模式

FreeBSD 开发过程非常的开放和灵活,它实际上是由全世界成千上万的人贡献出来的,这一点可以从我们的贡献者名单中看出。FreeBSD 的开发基础结构允许这成千上万的贡献者通过互联网进行协作。我们一直在寻找新的志愿者,那些有兴趣更密切参与的人可以参考关于为 FreeBSD 贡献的文章

无论是独立地工作或者封闭式的团队工作, 了解 FreeBSD 计划和它的开发过程都是有益的:

Git 代码库

几年来, FreeBSD 的核心源代码树是由 CVS(Concurrent Versions System)维护的,它是一种免费的源代码控制工具。在 2008 年 6 月,该项目转而使用 SVN(Subversion)。这一转换被认为是必要的,因为由于源代码树的快速扩展和已经存储的历史量,CVS 所带来的技术限制变得很明显。2012 年 5 月和 2012 年 7 月,文档项目和 ports 库也分别从 CVS 迁移到 SVN。在 2020 年 12 月,本项目将源代码和文档库迁移到了 Git,而 Ports 也在 2021 年 4 月跟进。请参阅获取源代码一节以了解更多关于获取 FreeBSD src/ 仓库的信息, 以及使用 Ports Collection 以了解获取 FreeBSD Ports Collection 的细节。

committer 名单

committer 是拥有推送到 Git 仓库的权限的人,他们被授权对 FreeBSD 的源代码进行修改(术语“committer”来自 commit,即用来将新的修改引入仓库的源码控制命令)。任何人都可以向错误数据库提交错误。在提交错误报告之前,可以使用 FreeBSD 邮件列表、IRC 频道或论坛来帮助验证某个问题是否真的是一个错误。

FreeBSD 核心团队

如果 FreeBSD 项目是一家公司,那么 FreeBSD 核心团队就相当于董事会。核心团队的主要任务是确保项目作为一个整体处于良好的状态并朝着正确的方向发展。邀请有奉献精神和责任感的开发者加入我们的提交者群体是核心团队的职能之一,当其他人离开时招募新的核心团队成员也是如此。目前的核心团队是在 2020 年 6 月从提交者候选人库中选出的。每 2 年举行一次选举。

注意: 和大多数开发者一样,核心团队的大多数成员在涉及到 FreeBSD 开发时也是志愿者,并不从项目中获得经济利益,所以“承诺”也不应该被误解为“保证支持”。上面的“董事会”的比喻并不十分准确,或许更好的说法是,他们是一群愿意放弃他们自己的生活,投身于 FreeBSD 项目的人!

FreeBSD 基金会

FreeBSD 基金会是一个基于美国的 501(c)(3)的非盈利组织,致力于支持和促进 FreeBSD 项目和全球社区。基金会通过项目资助来资助软件开发,并提供工作人员来立即应对紧急问题和实现新特性和功能。基金会购买硬件以改善和维护 FreeBSD 的基础设施,并为提高测试覆盖率、持续集成和自动化提供人员和经费。基金会通过在世界各地的技术会议和活动来宣传FreeBSD。基金会还提供研讨会、教育材料和演讲,以招募更多的用户和贡献者加入 FreeBSD。基金会还代表 FreeBSD 项目执行合同、许可协议和其他需要一个公认的法律实体的法律事务。

外围贡献者

最后,但绝对不是最不重要的,最大的开发者群体是用户自己,他们几乎一直在向我们提供反馈和错误修正。保持与 FreeBSD 基本系统开发的联系的主要方式是订阅 FreeBSD 技术讨论邮件列表,在那里讨论这些事情。对于移植第三方应用程序,应该是 FreeBSD ports 邮件列表。对于文档——FreeBSD 文档项目邮件列表。关于各种 FreeBSD 邮件列表的更多信息,请参见互联网上的资源

FreeBSD 贡献者名单是一个漫长而不断增长的名单,那么为什么不在今天通过为 FreeBSD 贡献一些东西来加入它呢?提供代码并不是唯一的方法!

综上所述,我们的开发模式被组织成一个松散的同心圆。集中式的模式是为了方便 FreeBSD 的用户,为他们提供了跟踪一个中央代码库的简单方法,而不是为了把潜在的贡献者拒之门外!我们的愿望是提供一个稳定的操作系统和一大批连贯的应用程序,让用户可以轻松地安装和使用——这种模式可以很好地实现这一目标。

我们对那些愿意加入我们的 FreeBSD 开发者的要求是,他们要像现在的人一样,为 FreeBSD 的不断成功做出奉献!

1.3.4.第三方程序

除了基本的发行版之外,FreeBSD 还提供了一个移植软件集,其中有成千上万的常用程序。port 列表的范围从 HTTP 服务器,到游戏,语言,编辑器,以及几乎所有介于两者之间的东西。大约有 36000 个 port;整个 Ports Collection 大约需要 3GB。要编译一个 port,你只需切换到你希望安装的程序的目录,键入make install,然后让系统完成剩下的工作。你所编译的每个 port 的完整原始分布都是动态检索的, 因此你只需要足够的磁盘空间来编译你想要的 port。

几乎每一个 port 都以预编译的“包”形式提供,那些不希望从源代码编译自己的 port 的人可以通过简单的命令(pkg install)来安装。关于包和 port 的更多信息可以在“安装应用程序: Package 和 Port”中找到。

1.3.5.附加文档

所有受支持的 FreeBSD 版本都在安装程序中提供了一个选项,即在最初的系统设置中在/usr/local/share/doc/freebsd下安装额外的文档。文档也可以在以后使用软件包来安装:

  1. # pkg install en-freebsd-doc

对于本地化版本,将en替换为所选择的语言前缀。请注意,一些本地化的版本可能已经过期,可能包含不再正确或相关的信息。你可以通过以下网址用网络浏览器查看本地安装的手册:

FreeBSD 手册

  1. /usr/local/share/doc/freebsd/en/books/handbook/book.html

FreeBSD FAQ

  1. /usr/local/share/doc/freebsd/en/books/faq/book.html

你也可以在 https://docs.freebsd.org/ 上查看最新文档。