作为一名自 2012 年加入微软的工程师,我亲历了这家公司在开源态度上的彻底转变。十多年来,从最初的不解、抵触,到今天的积极参与和引领,微软在一个个关键节点上,通过一次次面向开源世界的打开,不仅重塑了自己的开发者形象,也实实在在解决了技术战略上的危机。
本文尝试按时间线梳理微软在开源方面的重要转折,从亲历者的角度回顾这些改变背后的意义。每一次开源,不只是发布一个项目代码,更是打开一个原本封闭的系统边界。
2012:用 TypeScript 打开 Web 前端世界
当时的微软,在浏览器和前端开发领域几乎是“脱节”的存在。IE 被开发者抛弃,Visual Studio 与现代 JavaScript 社区隔绝。而 TypeScript 的发布与开源,是微软迈出的关键一步。它并不试图推翻 JS,而是用类型系统补足其不足。多年后,它成为 React、Vue、Angular 等框架的默认语言。这不仅让微软重新赢得前端开发者的尊重,也打通了内部工程与社区标准之间的隔阂。
2014:Azure 拥抱 Linux,打开云操作系统边界
Azure 初期主打 Windows Server,企业客户难以迁移。在 AWS 已经全面支持 Linux 的现实面前,微软做出了罕见的战略放弃——不仅支持 Linux,还直接参与 Linux 内核开发,最终成为主要贡献者之一。作为当时参与相关工具链接入的开发者,我深知这背后的文化摩擦与工程挑战。事实证明,这是正确的决定。到 2024 年,Azure 上超过 60% 的 workload 跑在 Linux 上。
2015:VS Code 与 .NET Core,打通跨平台开发壁垒
过去,微软的开发平台是封闭的。开发者往往不得不在 Windows 上使用 Visual Studio 才能写 .NET 程序。但 .NET Core 的开源,配合 VS Code 的发布,极大地扩展了开发者的选择空间。我们组在那几年也因此吸引到不少非 Windows 用户尝试使用微软栈。这种从工具链层的开放,是开发体验上的质变。
2016:PowerShell Core,系统工具栈的第一次跨平台
PowerShell 一直是 Windows 系统管理员的主力工具,但对 macOS 与 Linux 用户基本不可用。2016 年微软将其开源,并发布跨平台版本,虽然对普通用户影响不大,但在我们维护多平台服务时,它成为了统一脚本语言的一种选项。这也体现出微软逐渐把“开发者在哪,我们的工具就服务到哪”作为默认心态。
2018:放下内核自尊,Edge Chromium 化
在浏览器领域,微软曾长期坚持自研内核,哪怕市场反馈不佳。最终选择加入 Chromium 项目,实际上承认了社区的标准并愿意共建。这一决定颇具象征意义:它不只是为了让 Edge 更好用,更是微软在标准与实现之间主动向外走了一步。我们在做网页兼容性测试时,也因此从多端维护中解放了不少精力。
2019:WSL2 与 Terminal,Windows 变成可开发的平台
WSL1 是一个过渡,而 WSL2 带来了完整的 Linux 内核与原生速度。结合开源的 Windows Terminal,开发者第一次可以在 Windows 上获得类 Linux 的终端体验。我曾在一次移动项目中,用 WSL2 完成了服务端的原型验证,不必在两台机器间切换,开发效率的提升非常实际。这一组合的成功也打破了“Windows 不适合开发”的刻板印象。
2021–2025:GitHub Copilot 开放代码价值,推动 AI 编程范式
2021 年,微软与 OpenAI 合作推出了 GitHub Copilot,这是一款基于 AI 的代码补全工具,旨在提高开发者的工作效率。Copilot 能够根据上下文提供代码建议,帮助开发者更快地完成编码任务。
到 2023 年,GitHub Copilot 开始支持多种 AI 模型,包括来自 OpenAI、Anthropic 和 Google 的模型。这一变化使开发者可以根据具体需求选择最适合的模型,从而提升了工具的灵活性和适应性。
在 2025 年的 Build 开发者大会上,微软宣布将 GitHub Copilot 的 Visual Studio Code 扩展部分开源,并将其集成到 VS Code 的开源仓库中。此举旨在增强社区参与度,促进 AI 编程工具的共同发展。同时,微软宣布将 WSL 项目开源,这是开发者社区长期以来的请求。WSL 的开源使得开发者可以更深入地参与到该项目的开发中,推动其功能和性能的进一步提升。
开放带来的是什么?
这些年来,微软通过开源打开了:前端语言、云平台、开发工具链、浏览器引擎、系统命令行、AI 编程接口……每一次都意味着一种边界的打破。我能真实感受到,我们不再被封闭系统拖累,也更容易与外部社区对话,甚至可以把内外部的优秀实践互相融合。
还有哪些系统尚未打开?
当然,并非所有系统都已开放。从个人观察来看,以下领域仍相对封闭:
- Windows 桌面 UI 框架:WinUI 与 WPF 虽然有开源项目,但生态与社区互动仍不充分;
- Office 格式与插件系统:OpenXML 协议虽开源,核心实现仍较封闭,插件体系割裂严重;
- Outlook 与 Teams:API 不统一、限制较多,缺少真正的扩展机制;
- 核心模型与基础架构:Copilot 背后的模型与代码生成能力仍不透明,对外部贡献者形成障碍。
这些封闭,并不全是坏事。对于 2B 安全场景、商业壁垒或合规约束,封闭有其合理性。但也许正是因为还未打开,未来才存在机会。如果说过去十年是微软一扇扇打开旧门的过程,未来五年,也许是我们定义新边界、探索共建路径的时间。
作为一个走过这些转变的人,我不会轻易为一家公司歌功颂德。但我确实一次次从这些开源带来的改变中受益。它们不仅改变了我的工具和流程,也改变了我们看待“开发者—公司—社区”关系的方式。开源,对微软是转型,对开发者,是连接。