数周前,开源软件爱好者 Eric S Raymond 提出的观点引发热议,他认为微软应该在 Linux 内核基础上重构 Windows。他认为目前个人电脑业务持续下滑,Windows 早已不再是微软的支柱业务,通过重构能够实现利润最大化。不过,曾参与 Windows Subsystem for Linux 的 Ubuntu 移植开发的 Hayden Barnes 对此持反对观点,认为微软不会基于 Linux 重构 Windows。
![为何说微软不会基于Linux内核重构Windows-图片1](https://www.debian.cn/wp-content/uploads/2020/10/e97ac00e7349741.jpg)
Hayden Barnes 是游走在微软和 Linux 社区之间的知名开发者,曾帮助 Windows Subsystem for Linux(WSL)上推进 Ubuntu 开发工作。因此他能够和很多 Linux 开发人员、开源项目人员、社区成员和微软员工进行交流。而且,他还作为 MVP (微软最有价值专家)参与微软产品和策略的各种简报会。
对于近日流行的“微软应该迁移 Windows 系统核心至 Linux 内核”说法,他表示从产品和工程角度来说微软在任何情况下都不可能这么做。
![为何说微软不会基于Linux内核重构Windows-图片2](https://www.debian.cn/wp-content/uploads/2020/10/c596ff43b3d8ee8.jpg)
在说明具体原因之前,Barnes 认为在 Slashdot 和 Hacker News 上不断出现这个观点的原因:
- 能够吸引用户点击
- 对于开源和 Linux 倡导者来说,这是一个很早就存在的幻想。
- 目前,Windows 扮演的角色正在发生变化。尤其是当前 Android、iOS、macOS、Chrome OS 和 Ubuntu 都基于 Linux 的世界里
- 伴随着 Linux 在 Azure 和 WSL 的使用率增加,这种合理性正在不断增加。奥弗顿之窗(The Overton Window)已经转移。
对此,Barnes 认为微软不会基于 Linux 内核来重构 Windows 理由如下
1.内核
Windows 系统中的 NT 内核提供了一定程度的向后兼容、长期支持和驱动程序可用性,而 Linux 还在不断完善中。如果想要基于 Linux 重构,这必然需要耗费数百万美元。微软有很多付费客户可以继续按原样支持 Windows,某些已经有数十年了。
基于 Linux 重构 Windows,并不像 Raymond 所说的那样能够帮助微软节省开支。很多盈利公司的存在都是为现有的操作系统而服务的。即便是最终基于 Linux,也可能会导致不良的内核单一化。
Windows 和 macOS 的竞争,才能让 Linux 变成更好的操作系统。而更理想的结果是开源创新能够在所有操作系统之间传播,Windows 和 Linux 的开放源码贡献者能够共享两个生态系统的精华。
2.兼容性
目前尚不清楚如果 Windows 用户空间从 NT 迁移到 Linux 内核,是否能够保持良好的兼容性,特别是那些拥有关键任务应用、付费获取的东西。
Windows 没有像 Linux 那样严格区分内核空间和用户空间。NT 内核大约有 400 个已记录的 syscalls 以及大约 1700 个已记录的 Win32 API 调用。对于重新部署从而确保 Windows 开发者和他们工作达到预期的兼容性这是非常庞大的工作量,这完全超过了 Wine 提供的修正贡献。
Linux 在 arm64 上只有 313 个 syscalls,而另一个原因是微软已经从 WSL 1 中的 syscall 翻译层(translation layer)转换为 WSL 2 中的虚拟化内核,因此重新实现利用 Linux ABI 的数十种非标准方式是非常痛苦的事情。为微软拥有的 Linux 上的SQL Server 提供一个 NT 相关的兼容层是一回事,为其他数百万开发者的应用提供保证是另一回事。
3.微软投入巨大
近年来,微软在 Windows 上倾注的人力物力已经无法计算。微软在 Windows 10 的可用性、新功能、性能改进等多方面进行了优化投资,并取得了回报。在这些改进的基础上,通过和 OEM 厂商的合作,以及推出 Surface 品牌,已经帮助振兴了 PC 市场。
微软一直在努力使 Windows 成为一个优秀的开发平台,其项目包括 Windows Terminal、PowerToys、Windows Subsystem for Linux 和 Visual Studio 2019。Windows Insider 项目也非常成功。
目前,Windows 是包括 Surface 在内诸多产品的重要搭载系统,而这也是微软重点耕耘的一项业务。2018年和2020年的内部重组表明,现在 Surface 和 Windows 的未来是密不可分的。Windows 为 Xbox 提供了动力,我们正处于一个主要基于Windows的PC游戏的复苏期。
微软也有 Windows 10X 的想法,这是继 Windows 10 之后的下一个操作系统概念(我认为我们会逐步得到),未来的硬件如 Surface Neo 也在考虑之中。
4.没有必要
不需要基于 Linux 重构 Windows,微软也能保持相关性。在放弃移动市场之后,微软已经意识到了设备格局的变化。
微软认识到当前社会人类使用各种系统和各种平台,在系统上有 Android、Ubuntu、iOS、macOS、Chrome OS等等,而且除了 x86 之外还有 ARM。
微软已经表示他们能够适应这个多元的世界,在这些平台上推出了相关产品和服务,同时确保 Windows 在传统领域的竞争力。目前微软正基于 Android 和 iOS 推动移动领域的创新,不仅移植了微软 Office,而且还包括 Microsoft Launcher 在内的很多优秀应用,而且近期也推出了搭载 Android 系统的 Surface Duo 手机。
在 Ubuntu 系统上,微软推出了很多针对 Linux 工作站的工具,例如 Code, .NET, Azure tools, Teams, PowerShell, Sysinternals for Linux,以及即将到来的 Edge 浏览器。你想在Azure上运行Ubuntu吗?微软已经为你准备好了,并与Canonical紧密合作,让你获得美妙的体验。
与其关心微软是否基于 Linux 重构 Windows,更有趣的问题是微软在开源上能走多远?我们已经看到了 Windows Terminal, PowerToys 和其他 Windows 组件已经开源。而更合乎逻辑、符合实际的目标是,微软将会继续开放 Windows 组件和 Windows 开发过程,甚至于会超出 Windows Insider 项目范围,为其他系统提供福利。
文章末尾固定信息