Release Engineering

FreeBSD 14.0-RELEASE 发布了

上周末抽时间把服务器升级到了 FreeBSD 14.0-RELEASE。 软件的发布中存在许多的工序,大致上,在 releng/ 分支上的代码树会正式命名为 -RELEASE, 同时由一位 Release Engineer 开始最终的 build(对应的文件会发布到 FTP 上, 并在 网站 上提供链接),并在适当的时候将 releng/ 分支上的代码 tag 成 release。此后, Security Team 需要将 Release Engineer 签名的 -RELEASE 放到 freebsd-update builder 上再次 build、签名,并生成二进制更新所需的文件。

由于安装用的 ISO 映像文件都比较大,传统上将这些映像文件分发到全球的镜像站点上需要一些时间。 现时,云服务提供商往往还有自己的 QA 步骤,因此最终宣布 -RELEASE 的时间往往会比 FTP 上出现的时间晚上一周左右。技术上这段时间这个 build 依然只是一个发布候选版本(Release Candidate), 因此普通用户不应使用这些版本,因为在这一周的时间如果遇到一些突发状况的话可能会需要将这个版本撤回 (例如原本应发布为 FreeBSD 4.6.1 的 FreeBSD 4.6.2 就是这样的情况)。

阅读全文…( 本文约 1097 字,阅读大致需要 3 分钟 )

FreeBSD 14 确定延期

原定4月25日开始的code slush和KBI冻结并未发生,主要的原因是 OpenSSL 3.0 还未合并, 以及 OpenZFS 近期的一些可靠性问题。

其中,OpenSSL 3.0 由于对 API 的改动比较大,因此会导致一些 port 无法正常工作 (PR 258413)。 近期已经有一批 port 标记为与 OpenSSL 3.x 不兼容, 不过修掉这些可能会需要不少时间。

阅读全文…( 本文约 519 字,阅读大致需要 2 分钟 )

FreeBSD 7.1

我这次不铁口直断了,估计明年见了,如果这周能够RC2的话,最终RELEASE估计要到明年的1月5日左右。

这次FreeBSD 7.1在软件工程角度是相当失败的案例,我想我们应该从里面总结一些教训出来。

首先,我们的目标是什么?

我想,用户对于一个发行版本的期待是:一个经过了大量测试的、阶段性的稳定版本。而开发人员对于发行版本的期待则是尽可能地将可用的功能交付给用户。作为OS,我认为这应该包括自动化的回归测试、性能改进、更新的驱动程序、文档的修订,以及更新的第三方软件等等。

FreeBSD目前的开发模式,是将分别开发的三大模块,即内核与基本系统(src/)、文档(doc/)、第三方软件(ports/)的人在一定的时候聚集在一起,通过代码冻结的方法来使他们从增加新功能转移到集中去修bug,最后发布一个版本。这个模式在过去运转的相当好,以至于我们没有发现其中存在的问题。

这次FreeBSD 7.1暴露出来了这个模式存在的很多问题。例如,由于安全小组发现了很多安全漏洞,而另一方面,安全小组的人手不够,限制了修正这些问题的速度。我本人撰写的一个安全公告等了一个月才在今天最终公之于众,而另一方面,安全小组对于发行版本拥有一票否决的绝对权力,导致6.4和7.1的发布都一再推迟。

而作为非常快节奏的开发的 ports/ 维护者,则对不断的推迟感到相当不满。FreeBSD目前只维护 ports/ 的 -HEAD,也就是说,在正式发行 -RELEASE 之前,ports/ 不能进行大量的、破坏性的修改。例如,我本人维护的 OpenLDAP 现在就必须等待 -RELEASE 之后才可以进行升级。不断地推迟新的发行版本,会导致 ports/ 的开发继续延迟。

阅读全文…( 本文约 1473 字,阅读大致需要 3 分钟 )