1.3 关于 FreeBSD 项目

  下面的章节提供了项目的一些背景信息, 包括简要的历史、项目目标、以及项目开发模式。

1.3.1 FreeBSD 的简要历史

Contributed by Jordan Hubbard.

  FreeBSD 项目起源于 1993 年早期, 部分作为 “Unofficial 386BSD Patchkit” 的副产物,patchkit 的最后 3 个协调维护人是:Nate Williams,Rod Grimes 和我。

  我们最初的目标是做出一份 386BSD 的测试版以修正一些 Patchkit 机制无法解决的错误(bug)。 很多人可能还记得早期的项目名称叫做 “386BSD 0.5” 或者 “386BSD Interim” 就是这个原因。

  386BSD 是 Bill Jolitz 的操作系统, 到那时已被严重地忽视了一年之久。 由于 Patchkit 在过去的每一天里都在急剧膨胀, 使得对其进行消化吸收变得越来越困难, 因此我们一致同意应该做些事情并决定通过提供这个临时的 “cleanup” 版本来帮助 Bill。 然而,Bill 却在事先没有指出这个项目应该如何开展下去的情况下, 突然决定退出这个项目,最终这个计划只好被迫停止。

  没过多久, 我们认为即便没有 Bill 的支持, 项目仍有保留的价值, 因此,我们采用了 David Greenman 的意见,给其命名为 “FreeBSD”。在和当时的几个用户商量后, 我们提出了最初的目标, 而这件事明朗化后, 这个项目就走上了正轨,甚至可能成为现实。 为了拓展 FreeBSD 的发行渠道,我抱着试试看的心态, 联系了光盘商 Walnut Creek CDROM, 以便那些上网不方便的用户得到 FreeBSD。 Walnut Creek CDROM 不仅支持发行 FreeBSD 光盘版的想法, 还为这个计划提供了所需的计算机和高速网络接入。 在那时, 若没有 Walnut Creek CDROM 对一个完全未知的项目的空前信任, FreeBSD 不太可能像它今天这样,影响如此深远, 发展如此快速。

  第一个 CD-ROM (以及在整个互联网范围内发行的) 发行版本是 FreeBSD 1.0,于 1993 年 10 月发布。这个版本基于 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 中的一大部分内容成为 “受限的 (encumbered)” 和属于 Novell 知识产权的代码, 而后者在不久前刚刚从 AT&T 收购了这些产权; 作为回报, Berkeley 得到了来自 Novell 的 “许诺”, 在 4.4BSD-Lite 版本正式发布时, 可以声明为不受限的 (unencumbered), 现有的 Net/2 用户则强烈建议转移到这个版本。 这包括了 FreeBSD, 而我们的项目则被允许在 1994 年 6 月底之前继续发行基于 Net/2 的产品。 根据和解协议, 在最后期限之前我们发布了一个最终版本, 这个版本是 FreeBSD 1.1.5.1。

  接下来, FreeBSD 开始了艰苦的从全新的、 不太完整的 4.4BSD-Lite 重新编写自己的过程。 “Lite” 版本中, Berkeley 的 CSRG 删除了用于让系统能够引导的一大部分代码 (由于各种各样的法律需求), 而当时 4.4 在 Intel 平台的移植版本还有很多工作没有完成。 直到 1994 年 11 月, 我们的项目才完成了这项过渡, 并通过网络以及 CD-ROM (在 12 月底) 上发布了 FreeBSD 2.0。 尽管系统中还有很多比较粗糙的地方, 这个版本还是取得了巨大的成功, 并在 1995 年 6 月发布了更强大和易于安装的 FreeBSD 2.0.5 版本。

  我们于 1996 年 8 月发布了 FreeBSD 2.1.5 版本, 它在 ISP 和商业团体中非常流行。 随后, 2.1-STABLE 分支的另一个版本应运而生,它就是 FreeBSD 2.1.7.1,在 1997 年 2 月发布并停止了 2.1-STABLE 的主流开发。现在,它处于维护状态, 仅仅提供安全性的增强和其他严重的错误修补的维护(RELENG_2_1_0)。

  FreeBSD 2.2 版作为 RELENG_2_2 分支,于 1996 年 11 月从开发主线 (“-CURRENT”)分出来。 它的第一个完整版(2.2.1)于 1997 年 4 月发布出来。 97 年夏秋之间,顺着 2.2 分支的更进一步的版本在开发。 其最后一版(2.2.8)于 1998 年 11 月发布出来。 第一个官方的 3.0 版本出现在 1998 年 10 月, 意味着 2.2 分支结束的开始。

  1999 年 1 月 20 日又出现了新的分支,就是 4.0-CURRENT 和 3.X-STABLE 分支。从 3.X-STABLE 起,3.1 在 1999 年 2 月 15 日发行,3.2 在1999 年 5 月 15 日,3.3 在 1999 年 9 月 16 日,3.4 在 1999 年 12 月 20 日,3.5 在 2000 年 6 月 24 日,接下来几天后发布了很少的修补升级至 3.5.1,加入了对 Kerberos 安全性方面的修补。 这是 3.X 分支最后一个发行版本。

  随后在 2000 年 3 月 13 日出现了一个新的分支, 也就是 4.X-STABLE。 这之后发布了许多的发行版本: 4.0-RELEASE 于 2000 年 3月发布, 而最后的 4.11-RELEASE 则是在 2005 年 1 月发布的。

  期待已久的 5.0-RELEASE 于 2003 年 1 月 19 日正式发布。 这是将近三年的开发的巅峰之作, 同时也标志了 FreeBSD 在先进的多处理器和应用程序线程支持的巨大成就, 并引入了对于 UltraSPARC® 和 ia64 平台的支持。 之后于 2003 年 6 月发布了 5.1。 最后一个从 -CURRENT 分支的 5.X 版本是 5.2.1-RELEASE, 它在 2004 年 2 月正式发布。

  RELENG_5 于 2004 年 8 月正式创建, 紧随其后的是 5.3-RELEASE, 它是 5-STABLE 分支的标志性发行版。 这个分支的最后一个版本, 5.5-RELEASE 是在 2006 年 5 月发布的。 RELENG_5 分支不会有后续的发行版了。

  其后在 2005 年 7 月又建立了 RELENG_6 分支。 而 6.X 分支上的第一个版本, 即 6.0-RELEASE, 则是在 2005 年 11 月发布的。 这个分支的最后一个版本, 6.4-RELEASE 是在 2008 年 11 月 发布的。 RELENG_6 分支上不再会有发布版本了。 这是最后一个支持 Alpha 硬件架构的版本。

  RELENG_7 分支于 2007 年 10 月创建。 第一个这个分支的发行版是 7.0-RELEASE, 这个版本是 2008 年 2 月发布的。 最新的 8.3-RELEASE 是在 2012 年 4 月 发布的。 RELENG_7 将不会有其它后续的发布版本。

  其后在 2009 年 8 月又建立了 RELENG_8 分支。 8.X 分支的第一个版本, 8.0-RELEASE 是在 2009 年 11 月发布的。 最新的 9.1-RELEASE 于 2012 年 1 月 发布。 RELENG_8 还将会有其它后续的发布版本。

  目前, 中长期的开发项目继续在 9.X-CURRENT (主干, trunk) 分支中进行, 而 9.X 的 CD-ROM (当然, 也包括网络) 快照版本可以在 快照服务器 找到。

1.3.2 FreeBSD 项目目标

Contributed by Jordan Hubbard.

  FreeBSD 项目的目标是无附加条件地提供能够用于任何目的的软件。 我们中的许多人对代码 (以及项目本身) 都有非常大的投入, 因此当然不介意偶尔有一些资金上的补偿, 但我们并没打算坚决地要求得到这类资助。 我们认为我们的首要 “使命” 是为任何人提供代码, 不管他们打算用这些代码做什么, 因为这样代码将能够被更广泛地使用, 从而最大限度地发挥其价值。 我认为这是自由软件最基本的, 同时也是为我们所倡导的一个目标。

  我们源代码树中, 以 GNU 公共许可证 (GPL) 或者 GNU 函数库公共许可证 (LGPL) 发布的那些代码带有少许的附加限制, 还好只是强制性的要求开放代码而不是别的。 由于使用 GPL 的软件在商业用途上会增加若干复杂性, 因此,如果可以选择的话, 我们更偏好使用限制相对更宽松的 BSD 版权来发布软件。

1.3.3 FreeBSD 开发模式

撰写者 Satoshi Asami.

  FreeBSD 的开发是一个非常开放且有有伸缩性的过程, 就像从我们的 贡献者列表里看到的,它是完全由来自全世界的数以百计的贡献者发展起来的。 FreeBSD 的开发基础结构允许数以百计的开发者通过互联网协同工作。 我们也经常关注着那些对我们的计划感兴趣的新开发者和新的创意, 那些有兴趣更进一步参与项目的人只需要在 FreeBSD 技术讨论邮件列表 联系我们。 FreeBSD 公告邮件列表 对那些希望了解我们工作所涉及到哪些领域的人也是有用的。

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

SVN 和 CVS 代码库

在过去的几年中 FreeBSD 的中央源代码树是由 CVS (并行版本控制系统)来维护的,CVS 是一个与 FreeBSD 捆绑的可自由获得的源代码控制工具。自 2008 年六月起, 这个项目开始转为使用SVN (Subversion)。 这次转换被认为是非常必要的,因为 CVS 的对于快速扩展源代码树和历史记录的限制越趋明显。现在主源码库使用 SVN,客户端的工具像 CVSupcsup 这些依赖于旧的 CVS 基础结构依然可以使用 ── 因为对于 SVN 源码库的修改会被导回进 CVS。 目前只有中央原代码树是由 SVN 控制的。文档,万维网和 Ports 库还仍旧使用着 CVS。 The primary repository resides on a machine in Santa Clara CA, USA 主 CVS 代码库放置在美国加利福尼亚州圣克拉拉的一台机器上, 它被复制到全世界的大量镜像站上。包含 -CURRENT-STABLESVN 树也同样能非常容易的你的机器上。 请参阅 同步你的源码树 获得更多的相关信息。

committer 列表

committer 是那些对 CVS 树有权限的人, 他们被授权修改 FreeBSD 的源代码 (术语 “committer” 来自于 cvs(1)commit 命令,这个命令用来把新的修改提交给 CVS 代码库)。提交修正的最好方法是使用 send-pr(1) 命令。如果您发现在系统中出现了一些问题的话, 您也可以通过邮件将它们发送至 FreeBSD committer 的邮件列表。

FreeBSD 核心团队

如果把 FreeBSD 项目看作一家公司,那么 FreeBSD 核心团队就相当于董事会。 核心团队的主要任务是提出总体上的发展计划,然后确定一个正确的方向。 邀请那些富有献身精神和可靠的开发者加入到 committer 队伍中来也是核心团队的工作之一, 这些新的成员将作为新核心团队成员和其他人一起继续前进。 当前的核心团队是 2010 年 7 月从 committer 中选举产生的。选举每两年一次。

一些核心团队的成员还负责特定的责任范围, 也就是说他们必须尽力确保某个子系统能工作正常。 FreeBSD 开发者的完整列表和他们的责任范围,请参见 贡献者列表

注意: 核心团队的大部分成员加入 FreeBSD 开发的时候都是志愿的, 并没有从项目中获得任何财政上的资助, 所以“承诺”不应该被理解为“支持保证”。 前面所述“董事会”的类推并不十分准确, 或许更好的说法是,他们是一群愿意放弃他们的生活, 投身于 FreeBSD 项目而非选择其个人更好的生活的人!

外围贡献者

事实上,最大的开发团队正是为我们提供反馈和错误修补的用户自己。 FreeBSD 的非集中式的开发者保持联系的主要方式就是预订 FreeBSD 技术讨论邮件列表,很多事情在那里讨论。查看附录 C了解众多 FreeBSD 邮件列表的更多信息。

FreeBSD 贡献者列表 很长并在不断增长, 为什么不加入它来为 FreeBSD 做贡献呢?

提供代码不是为这个计划做贡献的唯一方式; 有一个更完整的需要做的事情的列表,可以参见 FreeBSD 项目网站

  总的来说,我们的开发模式好像是一组没有拘束的同心圆。 这种集中式的开发模式,主要是考虑到 FreeBSD 用户的方便, 同时让他们能很容易地维护同一份软件, 而不会把潜在的贡献者排除在外! 我们的目标是提供一个包含有大量具有一致性 应用程序的稳定的操作系统, 以利于用户的安装和使用,── 这种模式在完成目标的过程中工作得非常有效。

  我们对于那些想要加入,成为 FreeBSD 开发者的期待是: 具有如同当前其他人一样的投入,来确保持续的成功!

1.3.4 最新的 FreeBSD 发行版本

  FreeBSD 是一个免费使用且带有完整源代码的基于 4.4BSD-Lite 的系统, 它广泛运行于 Intel i386™、i486™、Pentium®、 Pentium Pro、 Celeron®、 Pentium II、 Pentium III、 Pentium 4(或者兼容系统)、 Xeon™、 和 Sun UltraSPARC 的计算机系统上。 它主要以 加州大学伯克利分校 的 CSRG 研究小组的软件为基础,并加入了 NetBSD、OpenBSD、386BSD 以及来自 自由软件基金会 的一些东西。

  自从 1994 年末我们的 FreeBSD 2.0 发行以来, FreeBSD 的性能,可定制性,稳定性都有了令人注目的提高。 最大的变化是通过整合虚拟内存/文件系统中的高速缓存改进的虚拟内存系统, 它不仅提升了性能,而且减少了 FreeBSD 对内存的需要, 使得 5 MB 内存成为可接受的最小配置。 其他的改进包括完整的 NIS 客户端和服务器端的支持, 事务式 TCP 协议支持,按需拨号的 PPP,集成的 DHCP 支持,改进的 SCSI 子系统, ISDN 的支持,ATM,FDDI,快速 Gigabit 以太网(1000 Mbit)支持, 提升了最新的 Adaptec 控制器的支持和修补了很多的错误。

  除了最基本的系统软件,FreeBSD 还提供了一个拥有成千上万广受欢迎的程序组成的软件的 Ports Collection。 到本书付印时,已有超过 24,000 个 ports (ports 包括从 http(WWW) 服务器到游戏、程序设计语言、编辑器以及您能想到的几乎所有的东西)。 完整的 Ports Collection 大约需要 500 MB 的存储空间。所有的只提供对原始代码的 “修正”。这使得我们能够容易地更新软件, 而且减少了老旧的 1.0 Ports Collection 对硬盘空间的浪费。 要编译一个 port,您只要切换到您想要安装的程序的目录, 输入 make install,然后让系统去做剩下的事情。 您要编译的每一个程序完整的原始代码可以从 CD-ROM 或本地 FTP 获得,所以您只需要编译您想要软件的足够的磁盘空间。 几乎大多数的软件都提供了事先编译好的 “package” 以方便安装,对于那些不希望从源代码编译他们自己的 ports 的人只要使用一个简单的命令 (pkg_add)就可以安装。 有关 package 和 ports 的更多信息可以在第 5 章中找到。

  您可以在最近的 FreeBSD 主机的 /usr/share/doc 目录下找到许多有用的文件来帮助您安装及使用 FreeBSD。 您也可以用一个 HTML 浏览器来查阅本地安装的手册, 使用下面的 URL:

  您也可以查看在 http://www.FreeBSD.org/ 的主站上的副本。

本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.