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 开发的操作系统。当时该系统问世已将近一年,但一直被强烈漠视。随着补丁包日益膨胀,臃肿不堪,他们决定通过提供 386BSD 过渡项目来帮助 Bill 摆脱困境。然而,在没有明确提供备选方案的情况下,Bill Jolitz 突然决定退出 386BSD 过渡项目,他们的计划被迫搁浅。
三人认为,即使没有 Bill 的支持,这个项目也是值得的,因此他们采用了 David Greenman 创造的“FreeBSD”这个名字。最初的目标是在咨询了系统的现有用户之后确定的,而且,发现这个项目正在日渐明朗后,Jordan 就联系了 Walnut Creek CDROM,其目的是为了改善 FreeBSD 的发行渠道,让那些难以进入互联网的不幸者也能使用 FreeBSD。Walnut Creek CDROM 不仅支持发行 FreeBSD CD 的这个想法,而且还为该项目提供了一台机器和快速的互联网连接。如果没有 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)因伯克利 Net/2 磁带的版权归属发生旷日持久的法律纠纷,双方最终达成和解。作为和解的条件之一,加州大学伯克利分校需要做出让步,承认 Net/2 的三个代码文件是“受限”的且版权归属于网威公司。Novell 此前刚刚从 AT&T 处获得了这些代码的版权。作为回报,加州大学伯克利分校得到了来自网威公司的“许可”,在 4.4BSD-Lite 最终发布时,可以声明代码“不受限”,并强烈建议所有现有的 Net/2 用户转移到这个版本。这其中包括 FreeBSD。FreeBSD 项目被允许在 1994 年 7 月底之前继续发布基于 Net/2 的产品。根据和解协议,我们在最后期限前发布了最后一个版本,它就是 FreeBSD 1.1.5.1。
然后 FreeBSD 开始了艰巨的任务,即从一套全新的、相当不完整的 4.4BSD-Lite 代码中重新开发自己。虽然只有三个与 System V 共享内存和 semaphores 有关的文件被删除,但 BSD 发行版已经做了许多其他的修改和错误修正,因此将所有 FreeBSD 的开发成果合并到 4.4BSD-Lite 是一项巨大的任务。这个项目直到 1994 年 11 月才完成这一转变,并在 12 月向全世界发布了 FreeBSD 2.0。尽管还有些粗糙,但这次发布还是取得了巨大的成功,并在 1995 年 6 月发布了更加强大和易于安装的 FreeBSD 2.0.5。
从那时起,FreeBSD 就已经发布了一系列的版本,每一次都是在前一个版本的基础上改进稳定性、速度和功能设置。
目前,长期的开发项目继续在 14.0-CURRENT(main)分支中进行,随着工作的进展,14.0 的快照版本将不断在快照服务器中提供。
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 以了解使用 FreeBSD ports 的细节。
提交者名单
提交者 是拥有推送到 Git 仓库的权限的人,他们被授权对 FreeBSD 的源代码进行修改(术语“提交者,committer”来自 commit
,即用来将新的修改引入仓库的源码控制命令)。任何人都可以向 Bug 数据库提交错误。在提交 bug 报告之前,可以使用 FreeBSD 邮件列表、IRC 频道或论坛来帮助验证某个问题是否真的是一个错误。
FreeBSD 核心团队
如果 FreeBSD 项目是一家公司,那么 FreeBSD 核心团队 就相当于董事会。核心团队的主要任务是确保项目作为一个整体处于良好的状态并朝着正确的方向发展。邀请有奉献精神和责任感的开发者加入我们的 提交者群体是核心团队的职能之一,当其他人离开时招募新的核心团队成员也是如此。目前的核心团队是在 2022 年 5 月从提交者候选人库中选出的。每 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 还提供了一个移植软件集,其中有成千上万的常用程序。ports 列表的范围从 HTTP 服务器,到游戏,语言,编辑器,以及几乎所有介于两者之间的东西。大约有 36000 个 port;整个 ports 大约需要 3GB。要编译一个 port,你只需切换到你希望安装的程序的目录,键入make install
,然后让系统完成剩下的工作。你所编译的每个 port 的完整原始文件都是动态检索的,因此你只需要足够的磁盘空间来编译你想要的 port。
几乎每一个 port 都以预编译的“软件包”形式提供,那些不希望从源代码自己编译 port 的人可以通过简单的命令(pkg install
)来安装。关于软件包和 ports 的更多信息可以在安装应用程序: 软件包和 Ports 中找到。
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
你可在 https://docs.freebsd.org/ 上查看最新的文档。