10月31日消息,今年正值Windows 95问世30周年,回顾当年,这款操作系统的开发任务不仅异常复杂,还面临着紧迫的时间压力。而当微软工程师着手将全新的用户界面移植到Windows NT平台时,面临的挑战更是进一步升级。
当地时间10月28日,微软资深工程师Raymond Chen在其最新发布的“Old New Thing”博客文章中解释道,Windows NT与面向消费者的Windows 95在起源和定位上差异显著——当时微软内部兵分两路,一支团队负责开发Windows 95,另一支团队则正在完成Windows NT 3.1的收尾工作。



两大平台在筹备Windows NT 4.0时开始走向融合。开发人员将以“完成态”的Windows 95代码作为移植目标,同时Windows 95用户界面团队与NT团队保持定期沟通,以同步最新进展。
在1995年,Windows 95的图形界面设计堪称前沿,其目的在于让人机交互变得更加直观、易于上手。微软决定将这套界面引入NT平台,通过Windows NT 4.0实现两者的统一。这一举措具有里程碑式的意义,为后来的Windows 2000工作站系统奠定了基础。
从博客内容可知,当Windows 95项目进入收尾阶段时,Windows NT团队便开始着手对Win9x界面进行调整。两套系统的窗口管理器都源自Windows 3.1,共享诸多核心设计理念;NT开发者的任务在于解决两个代码库之间出现的差异。由于无法直接将Windows 95的代码合并到NT平台,开发者以Windows 95代码为蓝图,在NT上重新实现相同的功能。
资源管理器和其他“用户模式”组件的移植则相对简单:开发者导入现有代码、按照Windows NT的规范进行更新,并结合NT的特性——比如对Unicode文件名的支持进行集成。
开发者对NT版本的移植效果相当满意,并决定将这些改进回写到Windows 95的代码库;回写过程只需用#ifdef WINNT指令标记出NT专有部分,这样在构建Windows 95时编译器便能自动忽略这些内容。
在1990年代,微软使用名为Source Library Manager的系统来管理内部源代码;工程师们甚至因为忘记其缩写的原意,戏称其为“slime”。该工具并不具备现代化的分支功能,因此开发者需要通过逐项更新被修改源文件的方式,把Windows 95与Windows NT之间的更改手动复制过去。
Raymond Chen表示,他怀疑这一手动流程在很大程度上已被自动化,但远不像一次git merge那样简单直接。
最后,Raymond Chen指出,负责将Windows 95 shell移植到Windows NT的团队中包括Dave Plummer。Dave Plummer同样是雷德蒙德的资深工程师,他在Windows历史上有着多项重要贡献,包括设计了最早的Windows产品激活系统。该系统后来因为被泄露的FCKGW批量许可密钥绕过机制而广为人知。
