导读:微软开源DOS 1.0!当年用不到10万美元拿下的代码,改写了整个操作系统史
(来源:图灵人工智能)
您想知道的人工智能干货,第一时间送达
整理 | 屠敏
出品 | CSDN(ID:CSDNnews)
当一个系统彻底退出历史舞台,它的命运通常只有两个:被遗忘,或者被封存。但微软选了第三条路——把它开源出来。
如今恰逢 86-DOS 1.00 诞生 45 周年,微软最新宣布:把目前已发现的最早 DOS 源代码整理并公开发布。
这批源码的公开,不仅为大众揭开了初代操作系统的开发面纱,也还原了最早期的研发现场。微软在公告中也坦言:这些内容的意义,不只是让代码重见天日,更是为了让这些在计算机历史上有分量的系统软件,能够被研究、被保存,当然,也可以单纯满足一下人们的好奇心。
86-DOS,微软帝国崛起的奇点
回看历史,PC-DOS 1.00 的问世,是一个关键节点。它是专为 IBM PC 打造的首个 DOS 版本,也正是从这一刻起,微软逐渐走向了个人计算机时代的核心位置。
可是,这款操作系统最初却并不是微软从零开发的。
彼时在“微软”这个名字正式确立之前,比尔·盖茨就已经在为早期计算机编写 BASIC 解释器了。那时候的微软,还更像一家“语言工具公司”,而不是操作系统公司。
微软最早参与商业化推进的操作系统之一,其实也并不是 DOS,而是基于 Unix 的 Xenix,但它更多以授权与 OEM 合作的形式存在。
转折点出现在 1980 年。
当时 IBM 计划入局桌面 PC 市场,也就是后来的 IBM PC,急需一套专属操作系统,于是他们找到了微软。
在此之前,行业主流操作系统为 CP/M,IBM 最初的合作目标也并非微软,而是 CP/M 的研发厂商数字研究公司(Digital Research)。但双方的合作谈判最终破裂,数字研究公司不愿配合 IBM 严苛的保密协议要求,同时无法跟上 IBM 的研发工期,拒绝快速适配 16 位硬件架构的系统版本,这让 IBM 陷入了无系统可用的困境,也为微软迎来了绝佳的机会。
然而,问题在于:当时的微软手里并没有合适的系统。
理论上,微软拥有 AT&T 的 Unix 授权,可以开发 Xenix,但由于微软购买的授权协议限制使其无法直接移植到 IBM PC 使用的 x86 架构上。
这就把微软推到了一个很现实的选择面前:要么从头开发,要么想办法“快速得到一套系统”。
不难想象,从头开发操作系统周期过长,IBM 等不起,微软也来不及。
就在此时,微软团队注意到西雅图计算机产品公司(SCP)的 Tim Paterson 之前曾开发过一台基于 8086 的原型计算机,在等待 CP/M 被移植到 8086 架构期间,他为该平台编写了一个简易的 16 位操作系统。Paterson 将其称为 QDOS(Quick and Dirty Operating System)。
据微软联合创始人保罗·艾伦后来回忆,这个系统全部代码规模只有 6K。(后来它被改名为 86-DOS,有时也被称为 SCP-DOS。)
随后,微软联系 SCP 的老板 Rod Brock,以 1 万美元获得 QDOS 授权,并约定每授权一家公司使用,还需支付 1.5 万美元版税。
后来在《Big Blues: The Unmaking of IBM》一书中,有记录提到,盖茨向 IBM 高层介绍了 QDOS,并将其提供给 IBM。当时 IBM 高层提了一个问题:“你们想自己买下它,还是让我来买?”由于 IBM 已经决定采用开放架构,他们更倾向于让微软来收购 QDOS。
此外,IBM 高层还表示:“如果是我们自己买这个软件,我们可能会把它搞砸。”随后,盖茨、史蒂夫·鲍尔默以及微软的 Bob O’Rear 在佛罗里达州博卡拉顿与 IBM 会面,并达成协议,由微软负责协调 PC 的软件开发流程。
据外媒报道,在当年 11 月签署的合同中,IBM 同意向微软支付总计 43 万美元,其中包括 4.5 万美元用于后来被称为 DOS 的系统,31 万美元用于各种 16 位编程语言,以及 7.5 万美元用于“适配、测试与咨询服务”。
值得注意的是,IBM 原本预计微软会要求更高的前期费用,甚至可能按每份拷贝收取版税。但微软选择的策略却是保留将 DOS 销售给其他公司的权利。
1981 年 5 月,Tim Paterson 离开 SCP 并加入微软。同年 7 月 27 日,艾伦与 Brock 签署协议,以 5 万美元将 DOS 完整出售给微软,并附带语言产品升级的优惠条款。
此后,微软基于自带 CP/M 风格应用程序接口的 86-DOS 进行改造,最终在 1981 年 8 月,推出了 IBM 定制版 PC-DOS 1.0。
同时,微软保留了独立发售授权,可面向其他兼容 PC 厂商推出自有版本 MS-DOS。
事实证明,这一决定极为关键,因为以 MS-DOS 名义推出的操作系统,很快成为微软成功的核心基础,直接奠定了微软此后数十年的行业统治地位。
DOS 不同版本的开源
放在当时来看,这无疑是一场豪赌。
以如今的标准衡量,初代 DOS 功能极度简陋:仅支持 160KB 软盘运行,没有子目录功能,也无法适配硬盘。
但它依旧成为了基石,支撑着 MS-DOS 系列在八九十年代长期垄断 PC 操作系统市场。
在此之前,当代开发者能接触到的最早 DOS 版本,是微软在 2014 年向计算机历史博物馆开放、并于 2018 年上传至 GitHub 的 MS-DOS 1.25 与 2.0。之后又有 MS-DOS 4.0等历史版本陆续开源,逐步拼出了早期 PC 系统的发展轨迹。
可以看到,微软这几年在做一件很明确的事情:逐步把曾经封闭的软件历史转化为可研究的公共资料。
不过,2014 年微软首次公开早期 MS-DOS 源码时,授权协议限制非常严格,仅允许非商业研究、教学和实验用途,禁止二次开发。而后来 GitHub 上的版本改为 MIT 协议,允许自由修改、复用与分发。
这一次的 PC-DOS 1.00,同样采用 MIT 协议,相当于把 PC 时代最早的源头也补齐了。
这次到底开源了什么?
此次微软并非只是把一个老版本系统丢上 GitHub 上,更像是一整套“开发现场记录”。
其中开源的内容包括:
86-DOS 1.00 的完整内核源码,这是整个 DOS 家族的源头;
多个 PC-DOS 1.00 内核的开发快照,可以理解为那个年代的“阶段性提交记录”;
以及像 CHKDSK 这样的经典工具程序。
这些资料并不只是“传统意义上的操作系统版本”。在很多情况下,它们记录的是某个时间点的开发状态,甚至包含 Tim Paterson 手写的注释。其中不仅有汇编代码的打印稿,甚至连“汇编器本身”的源码清单也在其中。
这让我们得以看到一个非常难得的视角:MS-DOS / PC-DOS 当年是如何一步步被写出来的——不是事后整理的版本,而是开发当时真实发生的过程。
据微软透露,后来由 Yufeng Gao 和 Rich Cini 带领的一支历史保护团队,把这些资料重新“救活”:扫描、OCR 转录、技术校验,再加上法律审核,一步步把这套资料变成今天可以阅读、可以研究的形式。
最终,这些内容被整理进 DOS-History/Paterson-Listings 仓库,并通过 MIT 协议开放出来。
读这些东西,有点像在翻一份“Git 代码库的提交历史记录”。你可以了解某个功能是什么时候加进去的,出现过哪些 bug,又是怎么被修复的。
而那些最原始的打印稿,也没有消失——Tim Paterson 已经把它们捐赠出来,未来会在 Interim Computer Museum(计算机博物馆)展出。
45 年前的代码在今天还有意义吗?
可能有人觉得,几十年前的命令行系统早已被图形界面取代,开源这些代码有什么意义?
但恰恰因为“够早”,它的价值反而更清晰。
首先,这是最接近“开发现场”的计算机历史资料。相比后来整理过的版本,这些带着批注和修改痕迹的源码,真实记录了当时的工程方式:在极其有限的硬件条件下,如何一步步实现功能、定位问题、修复错误。它呈现的不是结果,而是过程。
其次,它补全了一段关键行业史。从 MS-DOS 1.25、2.11,到 4.0,再到 86-DOS 1.00,微软正在逐步拼出个人计算机早期操作系统的发展全貌。这不仅是微软的历史,也是整个软件工业的历史。
最后,对今天的开发者来说,这是一种非常直接的“对照参照”。在没有高级语言框架、没有自动内存管理的年代,每一行代码都来自对资源极限的权衡。这种约束下的工程思路,反而显得格外清晰。
软件会被替代,系统会被更新,这是行业的常态。但那些最早的尝试,并不会因此失去意义。
参考:
https://github.com/DOS-History/Paterson-Listings
https://www.zdnet.com/article/microsoft-open-sources-dos-1-0-much-more-than-the-code/
https://au.pcmag.com/operating-systems/88773/the-rise-of-dos-how-microsoft-got-the-ibm-pc-os-contract