微软爱开源有多深?
微软今年举办的 Build 开发者大会可谓是抢足风头,大会第一天就放了不少大招:宣布新的命令行终端 Windows Terminal、Windows 10 的 Linux 子系统 WSL 2 将运行真正的 Linux 内核、跳过 .NET 4 宣布 .NET 5 的计划、宣布 Web 版本的 VS Code(Visual Studio Online)。
这种积极拥抱开源的态度于微软不是什么新鲜事,毕竟他们家的两个重量级项目 —— Visual Studio Code 和 .NET runtime 早已开源,并按照规范的开源、社区驱动方式来运作。
但微软这次在 Build 2019 上宣布的消息有点“不一样”。
我们都知道,微软在 Windows 10 一周年更新的版本中引入了名为 Windows Subsystem for Linux(WSL) 的 Linux 子系统,不过 WSL 只是 Linux 兼容层,而非真正的 Linux 内核,它是由微软自己开发的内核组件,提供了与 Linux 内核相同的 API,本质上是将 Linux API 翻译到 Windows NT kernel API。
由于 WSL 使用的是自研的内核组件,所以它天生就有不少缺陷,例如无法使用 Linux 驱动(尤其是文件系统驱动),这使得它的文件系统性能只有真正内核的二十分之一。另外,WSL 提供的 API 集也比较陈旧,甚至部分 API 都没有实现,还有的 API 即便实现了也只是部分实现。
这里有人可能会问,反正 Linux 内核是开源的,既然微软自己做得不好,为什么不直接把现成的拿过来用呢?微软当然不傻,之所以选择自研正是为了避免使用 Linux 内核的代码,因为 Linux 内核使用的 GPLv2 许可证具有“传染性”,这可能会迫使微软开源 WSL,甚至 Windows 系统的部分代码。虽然微软爱开源,但也怕爱过了头。
所以刚被公布的 2 代 WSL 才会显得有点不一样。微软表示 WSL 2 会在轻量级的虚拟机里运行真正的 Linux 内核。通过运行完整的内核,WSL 2 不仅大幅度提升了文件系统性能,也提供了完整的系统调用兼容性。
更重要的是,WSL 2 这次不再“畏惧” Linux 内核所采用的 GPLv2 许可证,因为微软宣布它将根据许可证要求完全开源 WSL 2 的内核补丁和修改。
基于 GPL 许可证的项目构成了 Windows 系统的一部分,这意味着它骨子里已经拥有开源的“基因”,身上有流淌着开源的“血液”。
除了运行真正 Linux 内核的 WSL 2,新发布的命令行终端 Windows Terminal 也是这次大会上的那个“不一样”。
开发者常用到的 Windows 命令行工具(cmd.exe)依赖于一个名为 conhost.exe 的程序,它在系统中被称为“控制台窗口主机”,是命令行程序的宿主进程。
conhost.exe 实现了 Windows 命令行工具的基础架构,同时提供 Windows Console API、输入引擎、渲染引擎和用户配置信息,在系统中是一个十分重要且核心的程序。
作为 Windows Terminal 项目的一部分,微软在 Build 2019 上宣布采用 MIT 许可证将 conhost.exe 一同开源出去。这绝对称得上是史无前例的操作,虽然微软此前也曾将 Windows 系统里面的项目进行开源,但都是一些不太重要的工具,如计算器,或是其他已不再更新的程序。
这次将 conhost.exe 开源,不但是微软首次开源核心的 Windows 系统代码,更重要的是,如果 Windows Terminal 稳定后并被集成到 Windows 系统中,那么它将是首个以开源方式进行开发的 Windows 核心组件。
上面的两个“不一样”让我深刻感受到微软已彻底改变,从它对待开源的态度,对开源的贡献,不难看出微软对开源的重视和爱之深切 —— 不再仅仅是将一个个独立的项目开源,而是将开源融入到 Windows 系统开发乃至微软的方方面面,并且希望持续发展。
一直以来,大家都不认为、更不相信微软会开源 Windows 系统,但按现在的趋势,突然萌发出有生之年我们可能会见证微软开源 Windows 系统的想法。你觉得呢?
开源中国征稿啦!
开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 200 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。
现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿
微软大法好↓↓↓