Plan 9复活:三十年前的系统凭什么搅局浏览器计算
在浏览器里跑 Linux ?这个开源项目有点意思
以前想跑个 Linux 虚拟机,得去云服务商那里租个实例,每个月少说也得花个几十块。现在倒好,有人直接把这套东西搬进了浏览器标签页里,连服务器都不用碰。
这个项目叫 Wanix。玩了一阵子之后,我真心觉得这是个值得盯着的项目。
Wanix 是什么
说白了,Wanix 就是一个跑在浏览器里的类 Unix 环境,用 WebAssembly 实现的。它借鉴了 Plan 9 的设计思路——对,就是那个贝尔实验室在 90 年代中期搞出来的操作系统。
它给你提供了:
- 每个进程独立的 namespace
- 真正的 shell(用的是 rc,就是 Plan 9 那个)
- "一切皆文件" 的哲学
- 完全沙盒化,数据不离开你的电脑
整个系统是由一堆自定义 Web Components 组成的。想加个终端?直接写 <wanix-term>。需要跑个任务?<wanix-task>。想整点刺激的?<wanix-vm> 可以启动一个完整的 Linux 虚拟机,用的是 v86 这个项目。
各个组件之间通过 namespace 系统互相通信,懂 Plan 9 的人会觉得特别眼熟。
为什么偏偏是 Plan 9 ?
这问题有意思。Plan 9 当年没火起来,但它的一些设计理念确实超前:
进程级 namespace:每个进程都可以有自己的文件系统视图,互不干扰。
联合目录:把多个文件系统叠加在一起,呈现出一个统一的视图。
一切皆文件:设备、进程、网络连接,全都通过文件系统来访问。
95 年那会儿这些概念很激进,但现在来看,简直就是为现代 Web 开发量身定做的。你想啊,现在的需求不就是让复杂逻辑跑在客户端,同时还要严格的隔离控制吗?Plan 9 的 namespace 模型刚好满足这个需求。
实际能用来干嘛
光说概念没意思,来点实际的。
沙盒开发环境:在浏览器里起一个完整的开发环境,用内置的工作台编辑文件,在真正的 shell 里跑命令,但完全不影响你本机。适合远程协作、临时办公环境,或者给外包人员开个隔离的代码空间。
本地跑浏览器兼容性测试:起不同的 Linux 环境,测试你的软件在各种配置下的表现,全程在本地跑。不用排队等 CI,也不用花钱买浏览器测试服务。
本地优先的文件操作:Wanix 的工作台本质上是个完整的 IDE,但它不只是能编辑本地文件。你还能挂载远程 namespace,把本地的和远程的目录叠加在一起。这样一来,你其实是在"远程登录"到别人的环境里,通过文件系统实现实时协作。
教学沙盒:教 Unix 基础、系统管理、甚至容器原理,都可以用这个。学生再怎么折腾,也就在浏览器标签页里蹦跶,不会碰到任何真实的生产系统。
技术上怎么实现的
好奇的朋友可以看看 Wanix 的技术栈:
- WebAssembly:让代码能以接近原生的速度在浏览器里跑
- 自定义 Web Components:那些
<wanix-*>标签,把底层复杂度都封装好了 - Namespace 绑定:可以把文件、压缩包、甚至其他 namespace 挂载进来
- 9P over WebSocket:远程 namespace 访问用的协议——没错,就是 Plan 9 95 年用的那个
用法也简单,三个标签就能得到一个可用的 shell,五个标签就能搭出一个带终端的完整 IDE。组件之间可以自由组合,遵循的就是 Unix "各司其职" 的原则。
这对 Web 开发意味着什么
我们在见证一个趋势的转变。过去几年大家都在喊"什么都上云",但越来越多人意识到客户端计算的好处:延迟低、省服务器钱、支持离线、数据隐私有保障——你的数据压根不用传出去。
Wanix 属于这个"本地优先"阵营。它不是要替代云主机,这个咱得清醒——但它在传统架构够不着的地方,找到了自己的位置。如果你做的是开发者工具、协作应用、或者教育平台,这个思路值得研究。
Plan 9 那帮人 95 年就在解决分布式计算的问题,我们现在还在琢磨。说不定未来的样子,还真就长得像过去一样。
想玩一玩的话,CDN 直接引入就能在任意页面里加上 Wanix。不过提醒你一句:一旦你在浏览器里跑起第一个 Linux 虚拟机,可能会陷进去出不来。