摘要

  • 1995 年 2 月,Brian Behlendorf 与 Cliff Skolnick 搭建邮件列表和共享开发设施,让网站管理员能够协同处理 NCSA httpd 的补丁。
  • 团队在自己的服务器上测试了基于 NCSA 的 Apache;将版本公开发布,并不能证明外部运营者已安装或正在运行它。

后来成为 Apache 的 Web 服务器,起点不是一张白纸,而是一个分散在多个运营者手中的维护难题。Rob McCool 于 1994 年离开 NCSA 后,NCSA httpd 的开发失去动力。各地网站管理员分别添加扩展、修复缺陷;当时缺少的是交换并合并这些修改的共同渠道。

Apache 项目自己的历史记载,为 Brian Behlendorf 在这个过程中的贡献给出了具体定位:与 Cliff Skolnick 一起组织邮件列表、共享信息空间和开发者登录账号,使用的是一台位于加利福尼亚湾区的机器;HotWired 提供带宽。这不等于 Behlendorf 是 Apache 的唯一作者。到 1995 年 2 月底,八人组成最初的 Apache Group,此外还有其他贡献者。项目的贡献者名录后来将 Behlendorf 的工作概括为多方面贡献,重点在开发基础设施。

第一条边界,是从零散补丁到共同代码底座

团队以 NCSA httpd 1.3 为基础,汇集已公开的缺陷修复和可取的改进,在自己的服务器上测试整合后的结果,并于 1995 年 4 月发布首个正式版本 Apache 0.6.2。这里每个动词代表不同状态:补丁已经存在;贡献者选择并合并补丁;团队自己的服务器验证整合结果;随后发布版本。以上任何一步,都不能单独说明外部网站管理员安装了什么。

与 NCSA 的关系也不是一道清晰的分界。NCSA 在同一时期恢复开发,其服务器团队的 Brandon Long 和 Beth Frank 于 3 月以荣誉成员身份加入邮件列表,使两个项目能交流想法和修复。Apache 的第一个共同版本仍处在跨项目协作之中。

公开版本仍需要另一场检验

早期版本吸引了用户,但项目历史记载的工作并未就此结束。1995 年 5 至 6 月,Robert Thau 设计了 Shambhala 架构,包括模块化结构与 API、基于内存池的分配机制,以及自适应的预派生进程模型。团队在 7 月切换到这一底座,Apache 0.8.8 随后于 8 月发布。Apache 1.0 于 12 月 1 日推出,此前经过广泛的 beta 测试、面向较少见平台的移植、新文档编写和标准模块扩充。

这段时间线说明,“已发布”不等于“正在运行”。贡献者可以在自己的机器上测试构建并发布文件;外部运营者还要面对各自的硬件、配置、模块、维护窗口和回滚方案。Apache 项目的历史称,它在 1996 年超过 NCSA,成为互联网使用最广的服务器。Netcraft 1996 年 5 月的一次同期调查显示,在受调查网站中 Apache 占 30%,NCSA 占 25%。这有力地说明采用已经扩展到相当规模,却不是所有主机的普查,也不是逐版本的线上进程记录。

理解 Behlendorf 有据可查的贡献,关键就在这次交接上。他帮助建立通信和访问条件,让分散维护有机会变成共同发布的版本。工程实现和测试属于更大的团队;后来的架构改造有明确的设计者;每个服务器所有者仍拥有各自的运营选择。这个机制解释了公共版本如何成为可能,却不代表所有人都已采用。

Note 64 是分析视角,不是 Apache 的起源叙述

Heng Lu 的 Note 64 区分了公开发布的提议,与参与者真正实施、部署并采用的变更。这一差别能帮助我们今天审视 Apache 的故事,但 Note 64 不是 Apache 的历史资料,也没有证据表明创始成员预见了它。Note 64 明确讨论的设计范围包括分布式账本或等效的可验证状态机制;Apache 当时是协作维护的 Web 服务器,后来也形成了正式的项目治理。两者之间的比较只限于一个问题:宣布有新版本,不会让运营者的服务器自动运行它。

因此,对运营者而言,证据链必须延伸到上游标签之后:确认实际采用的软件包或构建,测试本地配置和模块,分阶段部署,观察切换后的进程,并保留回滚路径。代码仓库能说明维护者发布了什么;只有运营者控制的检查,才能说明某项服务当前运行着什么。

来源