去年微软开源了 MS-DOS 4.0,今年他们撬开了更古老的箱子——86-DOS 1.00 的源代码,连同开发 PC-DOS 1.0 过程中的多个中间版本,一起扔进了 GitHub。最原始的版本,是从西雅图程序员 Tim Paterson 的车库里翻出来的打印纸。
一沓纸如何成为"版本控制"
Scott Hanselman 在 Bluesky 上透露了发现过程:「最早的 DOS 源代码是在 Tim Paterson 车库里的打印纸上找到的。」
这些纸张比 GitHub 早诞生几十年。微软团队没有数字化提交记录,只有一摞摞泛黄的手写标注打印件。Stacey Haffner 和 Hanselman 在官方博客中写道,这些打印件「创建了一条变更时间线,显示哪些功能在何时实现、犯了什么错误、以及如何修复」。
微软这次发布的清单包括:86-DOS 1.00 内核源码、PC-DOS 1.00 内核的多个开发快照、CHKDSK 等经典工具——还有汇编器本身的源码清单。Haffner 和 Hanselman 特别强调:「这些不只是汇编器清单,还有汇编器本身的清单!」
两人承认,软件历史不仅活在代码里,「也活在扫描的清单、内部文档、汇编器打印件,以及 1970 年代末 1980 年代初操作系统诞生时的那些奇妙的模拟产物中」。
Tim Paterson 的 86-DOS 与微软的收购
86-DOS 诞生于 1980 年,作者是当时在西雅图计算机产品公司工作的 Tim Paterson。微软先拿到授权,随后在 1981 年 IBM PC 发布前夕买下了全部权利。
这笔交易后来引发多起诉讼,有人指控其与 CP/M 存在相似性。但微软此次发布的重点不在于法律旧账——而在于展示 PC-DOS 1.00 的开发过程本身。
从打印纸到可编译的源码,Hanselman、Haffner 和团队完成了扫描、转录的繁琐工作。对于 retro 爱好者和 IT 史学家,这是一份不可多得的原始材料。
对现代程序员的三条启示
86-DOS 1.0 在今天能派上什么实际用场?答案很可能是「几乎没有」。但它暴露了一个被遗忘的工程约束时代。
当时的代码被塞进极小的空间,同时保持功能和效率。没有冗余的抽象层,没有自动内存管理,每一字节都要算账。现代开发者习惯了 GB 级的内存和 TB 级的存储,回看这段源码,相当于看一位木匠用手工刨子做出严丝合缝的榫卯。
Haffner 和 Hanselman 的总结很克制:这对现代程序员是教训,对 IT 史学家是无价资源。
为什么微软持续开源考古
这不是微软第一次翻自家阁楼。2024 年开源 MS-DOS 4.0,2025 年推进到 86-DOS 1.0——时间线越往前挖,物料越原始,工作量越大。
从商业逻辑看,这些代码早已失去竞争价值。DOS 1.0 的知识产权对微软今天的营收贡献为零,反而成为工程师文化的公关资产。但比公关更值得玩味的是执行层面的选择:谁来做这件没有 KPI 的事?
Hanselman 的身份线索很关键——他长期担任微软开发者关系负责人,以技术布道而非产品线管理著称。这类角色在大型科技公司往往拥有模糊预算,专门处理「对工程师声誉有益但无法量化 ROI」的项目。开源古董代码,恰好落在这一象限。
另一个观察角度:打印纸的数字化本身就是技术史抢救。Paterson 的车库如果遭遇漏水或搬迁,这些清单可能永久消失。微软团队的动作,相当于在模拟介质彻底降解前完成一次迁移。
去 GitHub 翻一翻那沓纸
如果你写代码,建议花二十分钟浏览这份 repo。不是学习 8086 汇编的写法——而是观察一种极端约束下的工程决策:当内存以 KB 计算时,如何划分内核与工具的边界?当没有版本控制系统时,如何在打印纸边缘手写变更说明?
这些具体问题早已过时,但约束条件下的权衡思维没有过时。今天的开发者面对的是不同维度的约束:云成本、延迟预算、能耗指标。1980 年的纸面记录与 2025 年的云原生架构,共享同一种底层能力——在有限资源内做最优解。
微软把车库里的纸扫进了 GitHub。下一步,是有人愿意读。
热门跟贴