微软发布了 Pylance,但并不开源

版权声明:所有博客文章除特殊声明外均为原创,允许转载,但要求注明出处。

最近,微软发布了 PyLance。这是一个新的、用于语言服务协议(LSP)的 Python 语言支持,目的是希望在未来逐渐取代已经在 Visul Studio Code 中使用了数年的 Python 扩展的当前版本。以下是微软官宣的信息:

Announcing Pylance: Fast, feature-rich language support for Python in Visual Studio Code

但是很多开发者也从这个信息中注意到,微软宣称这个项目并不打算开源。目前,PyLance 虽然也在 Github 上开放了仓库,但只包括问题报告和一些指导性的文档,并没有任何源码。

这个决定显然也引起了一些开发者的疑虑。虽然开源与否是创立者的自由,但 VSCode 及其大量扩展的生态系统都建立在开源的基础之上,过去的 Python 扩展也是开源的,现在为什么改变了态度呢?

在微软博客和 Github 上都有读者提出了这个问题。在 Github 上的讨论内容更加丰富一些,但微软显然不太希望继续讨论这个话题,表明态度之后随即关闭了这个 issue。详细内容请移步下列地址:

Are there any plans to eventually make Pylance open source?

值得玩味的是微软方面的回答:

We appreciate your suggestion, but we are not planning to make Pylance open source at this moment. Pylance is a completely new language server implementation,  with significant enhancements, and is planned to be included in proprietary service offerings.  A large amount of the code that powers Pylance is available as open-source in the Pyright type checker.

划重点:以上说法表明闭源的原因并不像某些人猜想的那样,是因为该项目还不够成熟、需要时间去准备(能拿出来演示说明肯定是有一定成熟度的);而是微软想要把它包含到自己私有的服务产品中。从技术角度讲这个说法有点奇怪————很难想象一个单纯的语言服务要包含什么私有内容,以致于不能开源。不过结合微软的商业策略,我们不难想象,未来 VSCode 可能会更多地作为 Azure 或其他微软产品的专有服务,免费开源的部分可能成为“缩水”版本。这次 PyLance 的发布就是一个明显的信号。

可想而知,这肯定会引起开源爱好者的不满。这几天我在外网已经看到一些来自开发者的批评,更有人提到微软一直以来臭名卓著的手法:拥抱、扩展与破坏,直言该公司“从未改变”(这是文雅的说法,粗鲁一点就是 XX 改不了 XX,呃...你明白的)。

我个人对此倒是不怎么感到意外。虽然这几年微软似乎在开源方面动作很大,以至于很多人相信它已经成了社区的“好公民”。我自己对 Visual Studio Code 这个产品也颇有好感,还为它写过不少文章,但我知道它从一开始就不是完全开源的————它包含收集用户信息的组件(称为“遥测”),虽然承诺不收集用户敏感信息,但除了微软自己以外,没人能确定到底收集了什么。所以有些不太放心的开发者自己编译一个干净的版本,这就是 VSCodium

今年早些时候,VSCode 公布了重量级功能:远程开发。这个功能为把 VSCode 嵌入托管的云平台或其他产品奠定了基础,但同时它也是不开源的。我也曾写过一篇文章专门分析这个问题:

/blog/2020/04/vscode-remote-not-open-source

从那时起我就意识到,微软将来很可能把 VSCode 搬到云上,作为 Azure 或其他商业产品线的组成部分。我们应该会看到越来越多的核心组件走向闭源方向,这主要是出于以下考虑:

  • 为了商业利益,微软应该会把部分功能作为收费的“高级功能”
  • 也存在另一种可能,即功能本身并不收费,但会作为微软产品专享的特有功能,而开源部分将不可避免地成为“阉割版”
  • 微软并不希望培养潜在的竞争对手。这在远程开发的许可中已经说得很明确了:只允许私人使用,不允许部署到其他公有平台,或者作为产品的一部分提供。

虽然现在还只是个苗头,但找这个趋势发展下去,VSCode 走向封闭是不可避免的。对这个技术上有很多亮点的项目,我个人觉得颇感遗憾。让时间来证明一切吧。