开源项目
microsoft/vscode avatar
microsoft/vscode

microsoft/vscode:开源内核与微软发行版的边界在哪里

Visual Studio Code 的开源源码(Code - OSS),基于 MIT 协议,将简洁的代码编辑器与调试、导航和丰富的扩展模型结合在一起。

192,610 个 Star42,398 个 ForkTypeScriptMIT

秒懂

它是什么?
Visual Studio Code 的仓库是 MIT 许可的 Code - OSS,微软发行版则带有专有定制。本文拆解两者的差异、构建门槛与适用人群。
适合谁用?
适合采用 microsoft/vscode 仓库的人群是:需要定制编辑器内核、构建自己的发行版、或者想深入理解编辑器和调试器如何协同工作的开发者。不适合的是:只想用现成编辑器写代码的人,他们应该直接下载微软发行的 VS Code,因为那个版本包含了遥测、商标、专有扩展和微软的更新通道。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库在最近一天内有新的提交。
用什么语言写的?
主要是 TypeScript(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月16日)和我们的分析,不构成法律意见。

开源项目深度解析

一个仓库,两种产品

microsoft/vscode 这个仓库的正式名称是 Code - OSS,它是 Visual Studio Code 的源代码基础。微软在这个仓库里和社区一起开发编辑器核心,但你在官网下载的 VS Code 并不是这个仓库的直出产物。官网版本带有微软的定制,包括遥测、商标、部分扩展和专有许可。仓库本身是 MIT 许可,而微软发行版用的是微软产品许可。这两个东西经常被混为一谈,但它们的法律边界和功能边界都不一样。

核心机制:编辑器、调试器与扩展的分离

从仓库结构看,VS Code 的架构是分层的。核心编辑器处理文本、导航和编辑,调试能力通过调试适配器实现,语言支持则交给后缀为 language-features 的扩展。比如 json 扩展提供语法着色,json-language-features 扩展才提供转到定义这类丰富功能。这种分离让核心仓库保持相对精简,把重活交给扩展进程。调试适配器甚至独立成仓库,比如 node 和 mono 的调试适配器各有各的仓库。这意味着你想理解调试流程,得跨多个仓库看代码。

构建门槛:不是一条命令的事

仓库自带了开发容器配置,支持 Dev Containers 和 GitHub Codespaces。文档明确要求至少 4 核和 6 GB 内存,推荐 8 GB,才能跑完整构建。这个门槛不算低,尤其是对笔记本用户。构建流程涉及编译 TypeScript、打包扩展、生成平台相关的二进制。如果你只是想改一个扩展的 bug,可能不需要全量构建,但如果你想改核心编辑器,就得准备承受这个资源消耗。仓库的 wiki 里有 How to Contribute 文档,但 README 没有给出具体的构建命令,你需要自己去 wiki 里找。

扩展机制:内置与语言特性分离

仓库的 extensions 文件夹里有一批内置扩展,包括语法高亮和代码片段。这些扩展覆盖很多语言,但只提供基础的着色和片段。要获得丰富的语言支持,比如内联建议和转到定义,需要 language-features 后缀的扩展。这种设计让基础编辑体验开箱即用,同时把重量级功能交给按需加载的扩展。但这也意味着,如果你要支持一门新语言,你得写两套东西:一套是语法着色,另一套是语言特性。仓库里没有提供扩展开发的模板,相关文档在 vscode-docs 仓库里。

开发流程:月度迭代与社区参与

微软在这个仓库里公开了路线图、月度迭代计划和 endgame 计划。endgame 指的是发布前的收尾流程,包括测试、稳定化和发布准备。这个透明度在大型商业项目中不多见。社区可以提交 bug、功能请求,也可以审查代码变更。功能请求有专门的标签,按反应数排序,这给了用户一个影响路线图的渠道。但要注意,仓库的活跃度不代表微软发行版的活跃度,因为发行版还包含仓库之外的专有代码。

许可的细缝:MIT 与微软产品许可

仓库代码是 MIT 许可,这是宽松许可,允许你修改和再分发。但微软发行的 VS Code 用的是微软产品许可,那是一个传统许可,限制更多。这意味着,如果你从官网下载 VS Code,你使用的不是 MIT 代码。如果你自己从仓库构建,你得到的是 Code - OSS,它没有微软的商标和遥测,但也没有微软的更新通道和部分扩展。仓库里还提到了微软开源行为准则,这适用于贡献者,不适用于最终用户。

替代方案:从源码构建与使用发行版

如果你不需要微软的定制,你有两个选择。一是直接使用 Code - OSS 的构建产物,比如社区维护的 VSCodium,它从源码构建并移除了微软的遥测和商标。二是自己构建,这需要承担维护成本,包括跟进上游的月度更新。另一个替代方案是使用微软发行的 VS Code,它更省事,但代价是接受专有组件。区别在于:Code - OSS 是上游,VS Code 是下游。选择下游意味着你放弃对代码的控制,选择上游意味着你承担构建的责任。

维护成本与升级路径

仓库每月发布一个新版本,从 1.133.0 到 1.135.0 的间隔是一周,但通常节奏是月度。如果你自建发行版,你需要每月合并上游变更,这可能涉及冲突解决和重新构建。扩展的兼容性也是一个问题,因为内置扩展会随版本更新,第三方扩展可能依赖特定版本。仓库的 wiki 里有迭代计划和 endgame 计划,你可以据此预判变更。但没有任何文档承诺 API 的稳定性,所以升级前你需要检查扩展的兼容性。

编辑结论

适合采用 microsoft/vscode 仓库的人群是:需要定制编辑器内核、构建自己的发行版、或者想深入理解编辑器和调试器如何协同工作的开发者。不适合的是:只想用现成编辑器写代码的人,他们应该直接下载微软发行的 VS Code,因为那个版本包含了遥测、商标、专有扩展和微软的更新通道。采用前需要先核实两件事:一是你的使用场景是否需要微软的专有组件,如果需要,那 Code - OSS 就不够;二是你是否有能力维护一个自建发行版的更新节奏,因为微软每月发布新版本,而自建版本需要自己跟进合并上游提交。许可证是 MIT,但商标和部分组件不在 MIT 范围内,这一点在分发你的构建时尤其重要。最终判断:Code - OSS 是给那些愿意承担构建和分发成本的人准备的,不是给终端用户的替代品。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记