一个操作系统该装多少软件才算"完整"?Linux发行版为这个答案吵了30年,有人精简到只剩内核,有人塞满预装软件。但1989年贝尔实验室的Plan 9给出了一个极端答案:全部自己写

这套系统从编译器到窗口管理器,从SSH客户端到BT下载工具,甚至Web服务器,全是原厂出品。没有GNU,没有LLVM,没有从外部"借"来的代码。这种设计让它成了操作系统领域的异类——也像一座被低估的博物馆,收藏着30年前工程师对"完整系统"的偏执想象。

Linux的 blessing 与 curse

Linux的 blessing 与 curse

Linux生态的繁荣建立在"选择"之上。发行版可以只带内核,也可以打包上千个软件包。这种灵活性催生了无数细分场景:服务器版、桌面版、嵌入式版,甚至专门为树莓派优化的版本。

但对开发者来说,这是道乘法题。你的程序要在GNOME还是KDE下测试?用glibc还是musl?systemd还是OpenRC?每个选择都意味着测试矩阵的膨胀。Linux基金会2023年的调查显示,超过60%的开发者将"环境兼容性"列为跨平台部署的首要痛点。

BSD家族试图解决这个问题。FreeBSD、OpenBSD、NetBSD都自带"认证"的C库、编译器和基础工具。你可以假设一台BSD机器上存在比Linux更统一的软件集合。但即便如此,GCC和Clang这些核心组件仍来自外部项目。想要触及每一行上游代码?你得同时混迹GNU、LLVM、BSD等多个社区。

Plan 9的工程师看着这种碎片化,决定走另一条路。

Plan 9 的"全栈洁癖"

Plan 9 的"全栈洁癖"

Plan 9的设计哲学可以用一句话概括:系统所需的一切,都应该在基础安装里

这不是简单的"预装软件多"。Windows也预装Edge和记事本,但没人会说微软自己写了Chromium内核。Plan 9的区别在于深度——从底层协议到用户界面,全是贝尔实验室原创。

具体包括:C编译器(不是GCC移植)、图形环境(rio窗口管理器)、文本编辑器(acme和sam)、SSH客户端(drawterm)、BT客户端(torrent)、Web服务器(httpd)、邮件客户端(upas)、甚至游戏(比如俄罗斯方块clone)。

这种设计的代价显而易见。Plan 9从未成为主流,始终停留在"爱好者玩具"的 niche 市场。硬件支持有限,第三方软件稀缺,连浏览器都得靠移植Firefox勉强维持。

但好处同样独特。开发者面对的是一套完全自洽的接口设计。文件系统、网络协议、图形渲染,所有组件共享同一套哲学。学习Plan 9不是学习"如何用Linux工具做某事",而是理解一种从头构建系统的思维方式。

9front:一个接口,N种实现

9front:一个接口,N种实现

Plan 9的正式开发在2002年停止,但分支9front(2011年发布)继承了它的精神,并走得更远。

由于所有接口都是内部定义的,9front的开发者可以针对同一功能写出多种独立实现。这在其他操作系统中极为罕见——你不会看到Linux发行版同时维护三套systemd替代品,因为外部依赖的耦合太深。

9front的收藏包括:

• 多个C编译器:除了经典的8c/6c系列,还有针对现代CPU的优化版本

• 多种窗口管理器:rio是默认,但还有专为多显示器设计的变种

• 独立实现的网络栈:从传统TCP/IP到实验性的内容寻址网络

• 图形工具链:从位图字体渲染器到矢量图形编辑器,全部原生

这些实现不是"能跑就行"的玩具。9front的BT客户端支持DHT和加密传输,Web服务器支持CGI和虚拟主机,邮件系统实现了完整的IMAP/SMTP协议栈。每个程序都是理解Plan 9接口的完整案例。

Plan 9研究者Sape Mullender在2015年的访谈中提到:「我们当时想证明,一个小团队可以写出比Unix更干净的系统。不是功能更多,而是概念更少、更统一。」

为什么这值得今天关注

为什么这值得今天关注

现代软件开发正被依赖地狱困扰。一个Python项目可能拉取200个PyPI包,一个Node应用动辄依赖上千个npm模块。Log4j漏洞、xz后门事件,都在暴露"外部依赖不可控"的风险。

Plan 9的极端自给自足,在这种背景下显出一种怪异的先见之明。它的代码量小到一个人可以通读,它的接口简单到一张纸能画完架构图。

当然,这不是说要放弃现代生态回归Plan 9。它的硬件支持停留在2010年代,没有GPU加速,没有容器化,没有云原生。但作为一个学习资源,它无可替代。

想理解操作系统如何管理窗口?看rio的几百行代码,比读X11或Wayland的数万行更清晰。想知道网络协议栈怎么实现?Plan 9的/lib/ndb和/ip目录提供了最小可运行示例。甚至它的缺陷——比如图形性能差、内存管理原始——都成了教学素材:你能清楚看到"如果不用现代技术,这里会卡在哪里"。

9front的维护者cinap_lenrek在2023年的邮件列表中写道:「我们不是在复古,是在证明这种设计空间仍然存在。当所有人都在往系统里塞更多东西时,保持简洁本身就是一种激进。」

Plan 9的镜像文件不到500MB,完整安装后硬盘占用约2GB。作为对比,Windows 11的最低安装要求已是64GB。这个30年前的系统,正在用最朴素的方式提问:一个操作系统,到底需要多少才算够?