FreeBSD季度报告(202x)
2020-10-25 09:51:46 阿炯

本文用于收集汇总FreeBSD从2020到2029年的每年度的季度报告,以供需要者参考。

2020Q3

FreeBSD 于2020年10月底发布了本年度 Q3 季度报告,介绍了在过去第三季度里 FreeBSD 完成的工作和相关项目,涉及到架构支持、内核改进、持续集成和驱动程序优化等。列举部分如下:
FreeBSD 基金会目前正在进行对 WiFi 和 Linux KPI 层的改进、提升与 Linuxulator 应用的兼容性、更新 DRM/显卡驱动、为 OpenZFS 增加 Zstd 压缩、动态 RAID-Z 扩容以及为 LLDB target 进行现代化改进
对构建基础设施的改进,例如支持 ARM64、将开发树迁移至 Git、重写 UNIX domain socket 锁定以及对 runtime 动态链接器和内核 ELF 加载器的改进
将代码仓库管理工具从 Subversion 迁移到 Git,计划在10月底推出测试版本的仓库
即将发布的 FreeBSD 12.2 将优化 Linux 兼容层
FreeBSD Ports 集合包含超过 40000 个 port 和软件包
改进对 Mesa 和其他图形工具包/库的支持
从9月份开始,支持从 macOS 和 Linux 主机构建正常运行的 buildworld 和 buildkernel 环境。这得益于部分 CI 工具只支持 Linux/macOS,它们希望将其用于构建 FreeBSD 基本系统
FreeBSD 13-CURRENT 的 DRM 驱动程序已被更新以匹配 Linux Kernel 5.4.62
优化 URE 驱动程序,为 USB 3.0 千兆以太网驱动覆盖进行改进。另外对 ath10k, Intel 和 rtw88 的驱动也进行了无线方面的改进

除此之外,还介绍了参与的开源相关活动以及收到的捐款等,上一季度总共筹集了大约 20 万美元,更多详情请查看公告

2020Q4

2021年1月18日,FreeBSD发布了Q4季度的报告,介绍了从2020年10月到12月期间 FreeBSD 完成的工作和相关项目,涉及到架构支持、修改内核、Git 迁移、更改工具链以及迁移文档托管平台至 DocBook 等。其中提到,虽然 COVID-19 导致他们的部分工作和响应可能由于某些优先事项的变化以及部分工作人员的时间问题而受到影响,但基金会仍继续为社区和项目提供支持。

下边来看在过去的一个季度里,FreeBSD 的主要工作亮点:
继续从 FreeBSD 基础设施中删除 GPL 软件,以便“迁移到现代的、CopyFree 以及许可更宽松的组件”。为此,FreeBSD 在过去的一个季度里删除了不少使用 GPL 的项目,例如用 LLVM 的 LLDB 替代 GDB 调试器、使用 BSDgrep 替代 GNUgrep,以及删除 libgnuregex。此外关于 GNU dialog 和 gcov 的替代方案也正在寻找中(对于喜欢使用 GNU 调试器的用户,GDB 仍可以通过 FreeBSD Port 获得)
Linux 二进制兼容层的 Linuxulator 除了提供更好的 CLI 应用程序支持之外, 还在继续努力让更多的 GUI 桌面应用程序正常运行
升级默认的编译器工具链到 LLVM Clang 11
让 FreeBSD 的 Intel WiFi 支持处于良好状态
围绕即将在未来几个月内发布的 FreeBSD 13.0 进行工作,这也是从 Subversion 迁移到 Git 进行开发后的第一个版本
FreeBSD 的 USB4 支持正在开发中,但目前尚未完成,无法为用户使用
改进 FreeBSD 的 ARM/AArch64 架构支持
FreeBSD 基金会提供了围绕 OpenZFS Zstd 支持、Linux 应用程序二进制兼容性的 Linuxulator 改进、 LLDB target 工作、WiFi 改进等方面的资助等。


2021Q2

FreeBSD 于2021年7月下旬公布了今年的Q2报告,介绍了 4 月到 6 月的主要工作内容和项目进展,下面简单介绍 FreeBSD 在今年第二季度的主要工作。

COVID-19 对 FreeBSD 基金会的影响
与大多数组织一样,FreeBSD 项目的团队继续在家工作。他们表示对其员工的临时旅行禁令仍然有效,但这不会对团队的产出产生太大影响,因为大多数会议仍通过线上进行。目前随着全球各个国家的继续开放,他们也将会重新评估旅行禁令,并继续通过常规渠道支持社区和项目。

筹款工作:FreeBSD 基金会在 Q2 总计筹集到了 70,410 美元,其中包括来自 Verisign、VMware 和 Stormshield 等组织以及许多个人的捐款。

基金会表示他们依靠这些捐款来资助支持 FreeBSD 的工作。去年年底,基金会决定投入更多资金来帮助改进 FreeBSD。他们聘请了一名高级软件开发者来负责面向 arm64 架构的工作,并聘请了一名项目协调员来管理项目并与社区进行互动。此外还聘请了两名全职和兼职软件开发者。这样做的目的是提供更多资源来介入实施和改进 FreeBSD 中的主要功能、审查补丁和错误报告、实施错误修复并支持安全工作。

操作系统改进
在第二季度,FreeBSD 项目包含 348 次的源码树提交、19 次和架构移植树相关的变更,以及 11 次文档树变更。两个值得关注的案例是 LLVM 项目的 LLDB 调试器和 Syzkaller 代码覆盖率引导的系统调用模糊器。基金会工作人员和资助接受者提交了 348 次 src 树更改、19 次移植树更改和 11 次 doc 树更改。这代表了 40% 确定赞助商的 src 提交。对于端口提交,它是文档提交的 15% 和 18%。基金会工作人员和赠款接受者也为许多第三方项目做出了贡献。两个值得注意的例子是 LLVM 项目的 LLDB 调试器和 Syzkaller 代码覆盖引导的系统调用模糊测试工具。部分较小的项目和改进包括:
通过内核ptrace(PT_COREDUMP)实现按需生成核心转储 (coredump generation)
通用的内核调试改进
删除过时的内核 mcount 分析
针对 Nullfs 和 tmpfs 的错误修复
针对 libc 的清理和改进
修复 rtld dlerror 和线程局部变量的问题(由 Julia 开发者报告)
修复 kqueue 和 POSIX 计时器的错误
修复 UFS 错误
Capsicum socket 的操作改进
hwpmc(hardware performance profiling,硬件性能分析)维护和 CPU 支持
针对 Cirrus-CI 引导的冒烟测试
sndstat(4) 的 schema 升级
vmm(4) 中的 AMD PCI Passthrough 修复,请参阅:commit 1, commit 2 和 review
bhyve(8) 中的 Virtio 1.0 现代支持

像往常一样,基金会工作人员也在代码审查和一般错误分类和修复方面付出了巨大努力。

2021Q3

FreeBSD 2021年第三季的报告姗姗来迟,报告公布了 FreeBSD在7 - 9月一些重要的进展,其中包括优化启动时间、支持文件穿孔功能(Hole-punching)、混音器改进等各类优化...

200 万美元的筹款计划在第三季度搞到了 18万,这些钱主要用来照着 FreeBSD 路线图招兵买马:聘请了三名全职软件开发人员、一名全职 ARM 内核开发人员和一名项目经理,还赞助了全职 wifi 模块开发者和其他项目。除了开发人员之外,还招了营销人员和技术编辑来推广 FreeBSD 。部分工作进展作介绍如下:

大幅优化启动时间
Colin Percival  使用 EC2 c5.xlarge 实例作为参考平台,测量虚拟机进入 EC2“运行”状态且可以通过 SSH 连接到实例之间的时间。2017年启动时间从大约 30 秒优化到 25秒,自 6 月以来,这个启动过程又减少了大约 9790 毫秒的时间,缩短到目前的 15 秒左右。

支持文件穿孔功能(Hole-punching)
穿孔功能允许将连续范围的字节转换为给定文件的孔,支持穿孔的文件系统可能会从给定文件中释放文件系统空间。该功能的一个用例:将来自其下虚拟机的 TRIM/UNMAP/DEALLOCATE 请求转换为主机端的穿孔调用,从而允许在虚拟机中不需要时回收文件系统空间。

FreeBSD  添加了一组 API 和 KPI,如果底层文件系统公开打孔功能,开发人员可以调用这些 API 和 KPI 来调用给定文件的打孔。对于不支持打孔的文件系统,内核中有一个回退实现,它会进行零填充。除了 API 和 KPI 添加之外,实用程序 truncate(1) 还通过添加一个-d标志扩展以支持调用打孔。目前支持对 OpenZFS 和 tmpfs 两种文件系统打孔。

LLDB 调试器改进
LLDB 是下一代高性能调试器,作为一组可重用组件构建,这些组件高度利用了更大的 LLVM 项目中的现有库,例如 Clang 表达式解析器和 LLVM 反汇编器。现在使用上游 LLDB 14.0 作为 LLVM 调试器,以增强 FreeBSD 上的体验,工作重心仍是提高 LLDB 与其他实现 GDB 远程协议的服务器之间的兼容性。

网站改造
重新设计文档门户:新的设计,响应式和全局搜索(几乎完成)
重新设计 Web 手册页:使用 mandoc 生成 HTML 页面的脚本(进行中)
重新设计 Web 上的移植页面(未开始)
重新设计 FreeBSD 主网站 (未开始)

混音器改进:提高 FreeBSD 上 OSS 混音器的能力,包含一个新的混音器库、对混音器的完全重写以及对声音效果的更新。

报告中还包含了对移植、第三方、架构等项目的更新,如:
Linux 兼容层优化,增加了对更多系统调用的支持,提高 FreeBSD 执行未经修改的 Linux 二进制文件的能力。
OpenSSH 更新,在 FreeBSD 基础系统中从版本 7.9p1 更新到 8.7p1 。
amd64 UEFI boot 改进,对预操作系统程序提供更丰富、更精简的环境。
Erlang、KDE生态系统更新
支持最新的 1.0.1 版本 OpenSearch
支持 Valgrind
支持 14.3 Gitlab
...

更多内容可在查看报告原文。

2021Q4
优化启动耗时、完成百万筹款目标、默认启用 ASLR。2022年3月中旬,FreeBSD 公布了 2021 年的 Q4 报告,介绍了从 2021 年 10 月到 12 月的主要工作内容和项目进展。其团队在 2021 年最后一个季度的工作非常繁忙,因此在许多方面都取得了进展。

筹款进度:在 2021 年的最后一个季度,FreeBSD 实现了年度的筹款目标:1,281,437 美元。这些资金主要用来优化和推广宣传 FreeBSD,例如提供 LLDB 支持、引入 RAID-Z Expansion、优化 WireGuard 和 wifi,和内部支持工作,包括提高安全性、一级架构支持,提供连接和培训社区的在线机会。

改进操作系统:在 2021 年的最后一个季度,FreeBSD 项目包含 472 次源码树变更、98 次和架构移植树相关的变更,以及 11 次文档树变更。

部分重要项目:
默认为 FreeBSD 上的所有 64 位可执行文件启用了地址空间布局随机化 (ASLR),包括 PIE 和非 PIE(位置独立可执行文件)二进制文件
系统时间从 Q4 之前的 30 秒缩短到了大约 15 秒,然后在 Q4 结束时大约为 10 秒
修复 amd64 上的 AVX 错误
针对 WireGurard 的加密功能变更
支持英特尔无线驱动程序
改进 LLDB 调试器
更新底层的 OpenSSH
sched_getcpu(2)、membarrier(2) 和 rseq(2) syscalls
amd64 上的 VDSO

基础设施:FreeBSD 基金会为项目提供硬件和支持。2021 年第四季度,他们开始寻找新的澳大利亚镜像服务器。在发布公告时,该服务器已购买,但由于组件和运输出现延迟,可能要到 2022 年第二或第三季度才开始使用。澳大利亚的 FreeBSD 用户将可以更好更快地访问 FreeBSD 网站。

更多内容点查看。

2022Q2
FreeBSD 于2022年8月上旬公布了 2022 年的 Q2 报告,介绍了从 2022 年 4 月到 6 月的主要工作内容和项目进展。

筹款:FreeBSD 今年的目标是至少筹集 140 万美元,实现大约 200 万美元的支出预算。然而截至撰写 Q2 报告,团队也只筹集了不到 20 万美元的资金。

工作进展:2022 年第二季度,FreeBSD 进行了 243 次源码树提交、62 次移植提交和 12 次文档树提交。以下是部分重要变更:
改进其 Linux 兼容性层,改进 ARM64 仿真层、系统调用跟踪工作和各种修复
完成将 go 移植到 FreeBSD riscv64 的工作
系统 OpenSSH 更新
正在进行的 LLDB 多进程调试支持工作
无线状态(Wireless Status)改进,含各种 WiFi 驱动程序改进,例如 Intel 和 Realtek 无线硬件
makefs 中的 ZFS 支持
新的蓝牙配置程序 Blued
在所有架构上默认为 64 位二进制文​​件打开共享页面地址随机化。

其他正在进行的工作:
改进对 FreeBSD Wirguard 内核模块的支持,涉及添加新的密码和 API 支持
FreeBSD 上的 Openstack 支持,移植 OpenStack 组件,以便 FreeBSD 可以充当 OpenStack 主机。
Bhyve 安全问题支持
FreeBSD 手册改进

上述工作进展部分来源于社区的力量,部分工作由基金会的赞助推动,更多细节可以在 Q2报告页面阅读。


2023Q1
FreeBSD 于2023年4月下旬公布了 2023 年第一季度报告,介绍了从今年 1 月到 3 月的主要工作内容和项目进展。报告首先总结了去年的财务状况:2022 年总共筹集了 1231096 美元,但并未完成 130 万美元的筹款目标。今年的财务预算约为 223 万美元,包括增加 FreeBSD 宣传和软件开发的支出,预计一半以上的预算会分配给改进 FreeBSD 和保持 FreeBSD 系统安全直接相关的工作。2023年的筹款目标又加了十万美元,年总筹款金额为 140 万美元。今年 Q1 的开局还算不错,已经收到 Juniper、Tarsnap、Microsoft 和 Stormshield 几位金主共 12.5 万美元的捐赠。

开发工作进展
2022 年第二季度,FreeBSD 进行了 226 个源码提交、39 个移植提交和 12 个文档提交。以下是部分重要变更:
持续集成,目前正在开发脚本来帮助源码开发人员进行 CI 测试,主要目标之一是在预提交阶段提供更多可见性,第一个里程碑的审查已提交。
使用日志软更新在文件系统上启用快照(启用了运行日志软更新时的 UFS/FFS 文件系统快照)
FreeBSD 作为第 1 层 cloud-init 平台(在成为一级云初始化平台方面取得了进展)
FreeBSD 发布工程(FreeBSD 13.2 正式发布)
改进 kinst DTrace 提供程序(kinst 是一个新的 DTrace 提供程序,允许在内核函数中跟踪任意指令,已添加到 FreeBSD 14.0 的基本系统中)
FreeBSD 上的 OpenStack(可以使用 OpenStack 上的 Bhyve 管理程序生成 FreeBSD 实例)

其他基金会赞助的工作:
OpenSSH 修复和更新版本 9.2p1 和 9.3p1
libpcap 的导入和更新到版本 1.10.3
对 tmpfs、msdosfs 和 makefs 的改进
添加一个新的 kqueue1 系统调用
手册页更新
dtrace 和 bhyve 修复
Linux KPI 工作

一些重要的工作进展:
FreeBSD 的内核地址清理(Address Sanitizer)已从 AMD64 移植到 AArch64。
FreeBSD 中的 DRM Linux 内核图形驱动程序支持已从 Linux 5.10 更新到 Linux 5.15~5.16,并在 5.17+ 上取得进展。
由 Apple Computer 在 1990 年代编写的 FSX File-System eXercisor 工具,现在已由 FreeBSD 用 Rust 编程语言重写。

更多报告细节可查看报告原文