4 月 28 号,微软在 GitHub 上发布了 86-DOS 1.00 的完整内核源代码。MIT 许可证。
我盯着这个仓库看了很久。不是因为代码复杂。45 年前的操作系统内核,汇编写的,总共没多少行。让我停下来的,是代码被发现的地方:一堆布满灰尘的点阵打印机纸,塞在 Tim Paterson 的车库里。
Tim Paterson 就是 86-DOS 的原作者。1980 年,他在西雅图计算机产品公司写了这个系统。1981 年,微软花 75,000 美元买下了它,改名叫 MS-DOS。这笔交易奠定了微软在 PC 操作系统上的统治地位。
45 年后,两位技术史学家,高宇峰和 Rich Cini,找到了 Paterson 保存的这些打印稿。发黄的连续打印纸,上面还有手写的注释。他们一页一页扫描、OCR、转录,把整份代码搬上了 GitHub。
微软 VP Scott Hanselman 确认了一件事:转录出来的代码,重新编译后跟原始二进制逐字节完全一致。
微软不是在拒绝开源。他们是在从最早的东西开始,一年一年往外掏。
这条开源线不是孤例。2018 年他们公开了 MS-DOS 1.25 和 2.11,2024 年放出了 MS-DOS 4.00 和多任务 DOS。今年放的是最早的一个,86-DOS 1.00,也就是 MS-DOS 的前身。一次比一次老,一次比一次接近源头。
那问题就变成:为什么是 DOS?为什么不是 Windows?
我翻了一圈资料后觉得,原因没多复杂,就三个字:能开和不敢开。
DOS 的代码是干净的。86-DOS 是 Paterson 一个人写的,微软买了版权。45 年过去了,没有第三方的代码纠缠,没有还在生效的商业合同。纯粹的软件考古学对象。
Windows 不一样。Windows 3.x、95、98 里面嵌着大量第三方的代码,字体渲染、网络协议栈、多媒体组件。当时的授权协议根本没考虑"将来开源"这件事。微软如果要开源这些版本,得先找到几十家几十年前可能已经倒闭的公司,跟他们的法务谈。
老 Windows 里还有一些尴尬的东西。IE 浏览器的一些代码来自 Spyglass 公司,后来的反垄断官司就围绕这部分展开。你让微软现在去开源含 IE 代码的 Windows 95?法务部大概会直接掀桌。
还有个更现实的问题:老 Windows 里可能存在安全漏洞的根基代码。NT 内核的一些设计在 Windows 11 里还在用。开源老版本可能暴露仍在使用的加密机制或权限模型。
所以微软的策略很清楚:DOS 可以敞开了给,Windows 不行。
这次开源 GitHub 仓库名是 DOS-History/Paterson-Listings。我特意去翻了里面的文件。DOSIO.ASM、DOSMES.ASM、CHKDSK.ASM,文件名都是大写,注释稀疏,寄存器操作到处飞。8086 汇编,早期的 x86。Seattle Computer Products 8086 Assembler 编译的。
有个细节我反复看了好几遍:不是每一行都能 OCR 识别出来。有些字符糊了,有些打印纸折痕处的字迹断了。两位史学家对比多个版本、查 Paterson 的手写修改、甚至通过上下文逻辑推断,才补齐了所有缺失的部分。这活干了几个月。
我在终端里翻这个仓库的时候,突然意识到一件事。我爷爷那辈人留下的东西可能是老照片和家书。程序员留下的遗产是一堆汇编文件和一个 git log。45 年前的代码今天还能被人读到、被人理解、被人在 GitHub 上点 star。这件事本身就很浪漫。
软件能活的比硬盘长,前提是有人在它死之前把它挖出来。
微软开源的这三批 DOS 代码,都是 MIT 许可证。MIT 是目前最宽松的开源协议之一。你可以拿这些代码做任何事:学习、修改、再发布、甚至商用。微软没有用更严格的协议(比如只准看不准用的那类),也没有加什么附加条款。
这说明微软对 DOS 的态度是"这东西是历史,历史属于所有人",而不是施舍性地给你看一眼。
回到原问题:为什么微软不开源老版本 Windows?答案是他们在开源老代码这件事上比想象中走得远。只是他们从最干净、最安全、最没有法律风险的地方开始,DOS,而不是 Windows。Windows 可能有朝一日会出现在开源清单里,但路比 DOS 长得多。
翻完这个仓库我有一个感受:不是所有代码都该烂在私有服务器里。45 年前的 DOS 内核躺在 Tim Paterson 的车库里,差点就跟垃圾一起扔掉了。现在的代码放在 GitHub 上,理论上永生了。但如果没人主动去做这件事,去找、去扫、去校对,那些改变过计算历史的代码,还是会消失在时间的缝隙里。
75,000 美元买了未来几千亿美元的操作系统市场。现在他们把这个起点白送给了所有人。