正文
微软发布的 Visual Studio Code 彻底改变了开发者使用 IDE 的方式,开发者可以用一个统一的工具来编写几乎所有语言和技术栈的代码。
微软不仅提供了 Visual Studio Code,还开发了许多扩展插件,比如 Python 调试器、C/C++ 语言服务、Jupyter、Pylance、Python 语言服务、Azure 工具、Data Wrangler、Jupyter 快捷键映射,甚至还有 JavaScript 和 TypeScript 的语言服务。这些还只是微软所开发的众多扩展中的一部分而已。此外,微软还拥有 GitHub 和 npm,几乎可以说是掌控了整个软件开发工具生态。
这本来挺不错的,然而,微软某些团队最近情况有点不太妙——四位麻省理工学院(MIT)的本科生利用 VSCode 的开源模式,将其分叉(fork)并打造了一个竞争产品 Cursor。当 VSCode 询问是否希望将 AI 建议合并进你正在开发的代码时,Cursor 却是反过来,询问 AI 是否希望让人类插手。
Cursor 本身并不是开源的,这一做法虽然存在争议,但在 VSCode 所采用的 MIT 许可证下是被允许的,所以我们无法查看其内部实现,也不知道它具体做了什么。
不过,Cursor 在去年年中融资了大约 6000 万美元,而在差不多的时间,他们已经拥有约 4 万名用户。Cursor 提供了一个带有限制的免费政策,还有每月 20 美元和 40 美元(按用户计费)的付费计划。
微软的 C/C++ 语言服务扩展突然停止支持 Cursor,让所有人都大吃一惊。然而,这也不是新鲜事。有网友表示,微软自己的语言扩展一直声明不能在 Visual Studio Code 之外使用它(并且 Code fork 不算数),这绝对不是一个新问题,只是他们现在决定强制执行对 C++ 扩展的限制。2018 年时,微软明确表示不允许在 Code forks 上使用 C# 扩展。
微软 vscode-cpp 工具 192 行长的许可证文件显示,它
禁止在 VSCode 和微软工具以外的环境中使用。
前端工程师 Tom Smykowski 发现,新的限制规则是在 4 月 1 日被添加进去的,还附有某位评论者的一句评论:
“Embrace, extend, extinguish(拥抱、扩展、消灭)。”
这个短语不仅仅是对这次变更的嘲讽,实际上它来源于微软本身:
“拥抱、扩展、消灭”(EEE),也被称为“拥抱、扩展、根除”,是美国司法部曾经发现的微软内部使用的一个策略短语,用来描述其进入某些采用广泛开放标准的产品领域的行为方式:先“拥抱”标准,随后在其基础上加入专有功能进行“扩展”,最终通过这些差异将竞争对手“消灭”。
这个策略曾在上世纪微软多次反垄断案件中被提及,如今再次被人提起,可见这一举动在开发者社区中引起了不小的反感。
具体来看,这个策略的三个阶段如下: