系统极客一直在努力
专注操作系统及软件使用技能

历经十年:揭秘微软 WSL 开源之路的幕后故事

WSL

在 Canonical 近期举办的 Ubuntu 25.10 峰会上,微软 WSL(Windows Subsystem for Linux)的两位核心掌舵人——高级产品经理 Craig Loewen 与首席产品经理主管 Clint Rutkas 首次同台,完整讲述了 WSL 从诞生到最终拥抱开源的十年征程。这并非一段坦途,而是一场充满曲折、深思熟虑的战略演进。

WSL 的前身:尘封的 Project Astoria

要追溯 WSL 的起源,就要把时间拨回 2010 年——一个名为「Project Astoria」(即 Windows Bridge for Android)的微软内部项目悄然启动。

  • 这个如今鲜为人知的项目,最初目标是借助 Windows 10 Mobile 内核中的一个转换层,让 Android 应用能在 Windows Phone 上运行。结局众所周知:Windows Phone 早已经凉凉了 🤷‍♂️。
  • 虽然项目本身未能成功,但它却埋下了一颗关键的技术种子:其初始原型所采用的「将 Linux 系统调用实时翻译为 Windows NT 内核调用」的核心机制,为 2016 年「Bash and Ubuntu on Windows」的横空出世铺平了道路。

在 Canonical 的协助下,这个早期版本通过重新编译 Cygwin 的开源工具集,实现了在 Windows 上的原生运行。

时任 Ubuntu 产品与战略团队成员的 Dustin Kirkland 对此评价道:「我们谈论的是逐个比特、逐个校验和都完全一致的 Ubuntu ELF 二进制文件,直接在 Windows 环境中运行。」

首次迭代:兼容层 WSL 1.0

Dustin Kirkland 当时这样解释其原理:「微软内部一支出色的开发团队,一直在努力将微软研究院的某项技术投入实用。其本质就是将 Linux 系统调用实时翻译为 Windows 操作系统调用。Linux 爱好者们可以将其理解为 Wine 的一种逆向工程——Wine 致力于让 Windows 程序运行在 Linux 上,而我们则是让 Ubuntu 的二进制程序原生运行在 Windows 中。」

这便是 WSL 1.0 的前身。它作为一个兼容层,通过一种名为「pico processes」的精巧机制,将 Linux 系统调用转换为 Windows NT 内核调用,从而让用户得以运行 Ubuntu、openSUSE、Fedora 等多种 Linux 发行版。

该功能于 2017 年作为 Windows 10 Fall Creators Update 的一部分正式发布。

全新架构:WSL 2 的崛起与风靡

以开发者为主的用户群体对 WSL 1.0 反响热烈,但一个共同反馈浮出水面——速度太慢。

  • 为此,微软团队毅然决定推倒重来,探索一种全新的方式来运行 Linux 及其应用。最终,他们另辟蹊径——开发一个专属的 Linux 内核。
  • 自此,WSL 2 采用了一种截然不同的架构。它不再依赖系统调用翻译,而是利用一个轻量级的托管虚拟机(VM),运行一个完整的、由微软自己维护的 Linux 内核,并通过 Windows Update 进行更新。

这一改变带来了质的飞跃。WSL 2 迅速在开发者社区中流行开来,尤其是在 2020 年 5 月稳定版发布之后。数以百万计的用户开始将它用于编程、系统管理和云工程等工作流。

根据 2022 年的 Stack Overflow 开发者调查,其受欢迎程度在 2021 年至 2023 年间呈爆炸式增长——将 WSL 作为主要操作系统的开发者比例,在短短一年内就从 3% 飙升至超过 14%,增幅接近五倍。

内部推动:微软的开源抉择

随着 WSL 2 的巨大成功,微软内部的开发者们开始积极推动将它开源。正如 Craig Loewen 所言,这几乎是顺理成章的决定:

  • 「Linux 本身就是开源的,对吗?我们正在开发一款将 Linux 引入 Windows 生态的产品。我们希望融入社区,与社区同在。这本身就具有商业价值——真正地拥抱社区。」
  • 「这件事不可能更早发生,因为最初的 WSL 与 Windows 内核耦合得实在太紧密了,我们根本无法将其开源。即便我们想,公司也不会允许。但随着时间推移,我们下定决心:『这个项目必须开源!』于是,我们开始系统性地移除所有私有调用,解开与系统的一切耦合,这才让我们走到了今天这一步。」

克服挑战:漫长的解耦之路

这是一个旷日持久的过程。Loewen 回忆说:「我们花费了数年时间,专注于解耦私有 API 和重构那些根深蒂固的依赖项,最终才得以将 WSL 的完整代码公之于众

在微软内部,推动 WSL 开源的策略主要围绕 3 个核心论点:

  • 彰显社区参与的价值
  • 证明其商业潜力
  • 全面评估收益与成本

团队有力地论证了开源 WSL 完全符合微软支持开发者工具用户这一更宏大的战略。鉴于 Linux 的开源本质,只有采取以社区为中心的方法,才能在 Windows 环境中赢得用户的信任,并实现有效的产品演进。

但这条路走得异常艰难。Clint Rutkas 坦言:「开源的回报是巨大的,但它需要投入大量的时间和精力。你必须首先说服你的利益相关者。」

开源之后:立竿见影的巨大成功

然而,一旦完成开源,其成功是压倒性的。Clint Rutkas 兴奋地表示:「我们开源的瞬间,项目在 GitHub 上的星星数就从 1.5 万飙升到超过 3 万。这太棒了——而且仅仅用了一天时间。它就像火箭一样蹿升。在 Hacker News 上,它成为了头号热门帖子,并且持续了大约 24 小时,这几乎是闻所未闻的。那一刻,我们确信自己做出了正确的决定。」

  • 这次转型也向公司内部证明,并非所有技术都需要作为专有资产被雪藏。这对搭档强调,WSL 的真正价值在于提升开发者的生产力,而非某种「独门秘方」式的竞争壁垒。
  • 团队的实践证明,开源所驱动的使命价值,完全可以超越对竞争的担忧。通过拥抱开源模式,微软赋能外部开发者,使其能够以内部团队无法企及的速度,解锁新的解决方案并推动产品改进。

成为蓝图:引领微软未来的开源项目

如今,WSL 团队的开源实践,已经成为微软内部的最佳实践指南,为 Windows Terminal、PowerToys 以及新推出的 Edit 命令行编辑器等重要的开发者导向型项目,提供了可复制的蓝图。

这对搭档总结道,将「开源优先」作为核心原则,其成果是可衡量的、积极的,并为微软未来更多的开源转型描绘了一幅清晰的路线图。

谁又能想到,仅仅在十多年前,Steve Ballmer 还说 Linux 是癌症呢!

赞(0)
分享到

评论 抢沙发