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