Skip to content

2.2 关于 FreeBSD 项目

2.2.1 FreeBSD 项目宗旨

FreeBSD 项目的宗旨是:使 FreeBSD 的代码得到最广泛的利用,让所有人,无论其目的为何,都能从中受益。这一宗旨可概括为“只求我为人人,不求人人为我”的开放共享理念。

FreeBSD 项目的源代码中包含部分受 GNU 通用公共许可证(GPL)和 GNU 宽通用公共许可证(LGPL)许可的软件,项目正在持续努力降低其所占比重。尽管这些许可证要求开源而非闭源,但它们仍带来一定的法律挑战和额外复杂性。为充分实现 FreeBSD 的宗旨,即尽可能提供无附加条件的软件以降低商业使用中的复杂性,FreeBSD 项目在可能的情况下更倾向于采用限制更少的 BSD 许可证。

思考题

BSD 2 条款许可证摘录:“在满足以下条件的前提下,允许在源代码和二进制形式中 重新分发 和使用本软件,无论是否经过修改”

“你可以继续从上游获取 BSD 授权的原始源代码,但如果你使用了基于原 BSD 衍生代码但以 GPL 再授权的版本,则仍需遵循 GPL。这形成了一条从 BSD 到 GPL 的单向通道:一旦 BSD 源代码被并入 GPL 项目,就如同进入了‘黑洞’,即 BSD 代码的 GPL 化 是不可逆的。BSD 世界逐渐被 GPL 蚕食。但事实上,BSD 代码在开源和闭源世界都得到了最大程度的复用。”

  1. 除了可以将 BSD 许可的软件转为专有软件外,还能怎样理解这种“重新分发”?在满足条件(主要是一些免责和版权声明)后,能以何种许可证再分发和重许可?

  2. 为什么自由软件基金会称 BSD 2 条款许可证和 GPLv2/GPLv3 兼容?如果 BSD 许可的软件 A 进入 GPLv2 项目 B 中成为其一部分。下游用户再分发时,在何种条件下,要求软件 A 也遵守 GPLv2 而非通过 BSD 协议转为专有软件?为什么?

  3. 站在许可证的感染性角度,再理解 Linux kernel 的 GNU 化以及 FreeBSD 基本系统的去 GNU 化。

  4. 怎样理解这种代码复用目的的成功达成?

2.2.2 FreeBSD 治理结构

FreeBSD 的治理结构包含存储库、基金会、社区、提交者和核心小组等。

FreeBSD 治理结构

2.2.2.1 源代码存储库

FreeBSD 项目历史悠久,其版本控制工具历经 CVS、SVN、Git。多年来,FreeBSD 的中央源代码树由 CVS(Concurrent Versions System)维护。CVS 是一款自由软件,提供源代码控制功能。随着源代码树的快速扩张和已存储历史记录的大量增加,CVS 的技术局限性日益明显,各存储库的迁移时间线如下:

时间存储库事件
2008 年 5 月src从 CVS 迁移至 SVN
2012 年 5 月doc从 CVS 迁移至 SVN
2012 年 7 月ports从 CVS 迁移至 SVN(CVS 与 SVN 双轨运行)
2013 年 2 月ports正式关闭 CVS 访问
2020 年 12 月src迁移至 Git
2020 年 12 月doc迁移至 Git
2021 年 4 月ports迁移至 Git

目前使用 Git 进行协作开发。

FreeBSD 项目的存储库分为三个:freebsd-src(源代码)、freebsd-ports(Ports 软件移植)、freebsd-doc(文档)。三个项目地位平等。

2.2.2.2 FreeBSD 基金会

FreeBSD 基金会是美国科罗拉多州博尔德的一家 501(c)(3) 非营利机构,致力于在全球范围内支持和推广 FreeBSD 项目及社区。基金会通过项目资助为软件开发提供资金,并配备专职人员及时应对紧急问题、实现新功能。基金会购买硬件以改善和维护 FreeBSD 基础设施,资助人员以提高测试覆盖率、持续集成和自动化水平。基金会通过在全球技术会议和活动中推广 FreeBSD 来进行宣传。基金会还提供研讨会、教育材料和演示,以招募更多用户和贡献者加入 FreeBSD。此外,基金会还代表 FreeBSD 项目执行合同、许可协议及其他需要认可法律实体的法律安排。基金会的所有权力集中在董事会,董事由现有董事会成员选举产生(新董事仅限现任董事提名),任期由章程规定。

在大部分国家,FreeBSD 商标由 FreeBSD 基金会持有。

2.2.2.3 FreeBSD 社区

FreeBSD 项目通过网络进行远程开发。

FreeBSD 社区由来自世界各地的开发者和用户组成。FreeBSD 社区并非法律实体,也无固定办事处。FreeBSD 社区不仅是英文社区,还有中文、俄语、韩语、日语等社区。

2.2.2.4 提交者

提交者是指拥有直接写入 FreeBSD 存储库权限的人员。要成为提交者,需要通过导师机制,必须由已有提交者推荐。为了防范潜在的安全风险,提交者并非终身制,各存储库的非活跃期限如下:

存储库非活跃期限
freebsd-src18 个月内至少一次提交
freebsd-doc18 个月内至少一次提交
freebsd-ports12 个月内至少一次提交

非活跃提交者的权限将被暂停,但可以申请恢复。

2.2.2.5 FreeBSD 核心小组

FreeBSD 核心小组是 FreeBSD 项目的最高领导机构,按章程由 9 名成员组成,采取集体领导制度,每位成员分管不同的子项目。FreeBSD 核心小组负责授予或撤销提交者权限及账户、执行行为准则(CoC)、管理项目子团队等。

FreeBSD 核心小组选举每两年举行一次,成员可以连选连任。只有在过去 12 个月内有过提交的提交者(视为活跃提交者)才拥有选举权和被选举权。

历史上,核心小组从未出现全体轮替的情况,一位核心小组成员在实践中通常会连任两届或更多届。核心小组成员和 FreeBSD 董事会成员往往存在交叉任职的情况。

FreeBSD 核心小组成员并不直接从中获取任何利益,均为志愿者。有些成员可能会接受 FreeBSD 基金会的雇佣或赞助来参与特定项目的开发。

2.2.3 课后习题

  1. 分析 FreeBSD 的提交者(Committer)机制与核心小组选举制度,选取另一个开源项目(如 Linux 内核或 OpenBSD),从治理结构、代码审查流程和决策机制三个维度展开比较。