最近,微軟發(fā)布了 PyLance。這是一個(gè)新的、用于語(yǔ)言服務(wù)協(xié)議(LSP)的 Python 語(yǔ)言支持,目的是希望在未來(lái)逐漸取代已經(jīng)在 Visul Studio Code 中使用了數(shù)年的 Python 擴(kuò)展的當(dāng)前版本。以下是微軟官宣的信息:
Announcing Pylance: Fast, feature-rich language support for Python in Visual Studio Code
但是很多開發(fā)者也從這個(gè)信息中注意到,微軟宣稱這個(gè)項(xiàng)目并不打算開源。目前,PyLance 雖然也在 Github 上開放了倉(cāng)庫(kù),但只包括問(wèn)題報(bào)告和一些指導(dǎo)性的文檔,并沒(méi)有任何源碼。
這個(gè)決定顯然也引起了一些開發(fā)者的疑慮。雖然開源與否是創(chuàng)立者的自由,但 VSCode 及其大量擴(kuò)展的生態(tài)系統(tǒng)都建立在開源的基礎(chǔ)之上,
過(guò)去的 Python 擴(kuò)展也是開源的,現(xiàn)在為什么改變了態(tài)度呢?
在微軟博客和 Github 上都有讀者提出了這個(gè)問(wèn)題。在 Github 上的討論內(nèi)容更加豐富一些,但微軟顯然不太希望繼續(xù)討論這個(gè)話題,表明態(tài)度之后隨即關(guān)閉了這個(gè) issue。詳細(xì)內(nèi)容請(qǐng)移步下列地址:
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.
劃重點(diǎn):以上說(shuō)法表明閉源的原因并不像某些人猜想的那樣,是因?yàn)樵擁?xiàng)目還不夠成熟、需要時(shí)間去準(zhǔn)備(能拿出來(lái)演示說(shuō)明肯定是有一定成熟度的);
而是微軟想要把它包含到自己私有的服務(wù)產(chǎn)品中。從技術(shù)角度講這個(gè)說(shuō)法有點(diǎn)奇怪————很難想象一個(gè)單純的語(yǔ)言服務(wù)要包含什么私有內(nèi)容,以致于不能開源。不過(guò)結(jié)合微軟的商業(yè)策略,我們不難想象,未來(lái) VSCode 可能會(huì)更多地作為 Azure 或其他微軟產(chǎn)品的專有服務(wù),免費(fèi)開源的部分可能成為“縮水”版本。這次 PyLance 的發(fā)布就是一個(gè)明顯的信號(hào)。
可想而知,這肯定會(huì)引起開源愛好者的不滿。這幾天我在外網(wǎng)已經(jīng)看到一些來(lái)自開發(fā)者的批評(píng),更有人提到微軟一直以來(lái)臭名卓著的手法:擁抱、擴(kuò)展與破壞,直言該公司“從未改變”(這是文雅的說(shuō)法,粗魯一點(diǎn)就是 XX 改不了 XX,呃...你明白的)。
我個(gè)人對(duì)此倒是不怎么感到意外。雖然這幾年微軟似乎在開源方面動(dòng)作很大,以至于很多人相信它已經(jīng)成了社區(qū)的“好公民”。我自己對(duì) Visual Studio Code 這個(gè)產(chǎn)品也頗有好感,還為它寫過(guò)不少文章,但我知道它從一開始就不是完全開源的————它包含收集用戶信息的組件(稱為“遙測(cè)”),雖然承諾不收集用戶敏感信息,但除了微軟自己以外,沒(méi)人能確定到底收集了什么。所以有些不太放心的開發(fā)者自己編譯一個(gè)干凈的版本,這就是 VSCodium。
今年早些時(shí)候,VSCode 公布了重量級(jí)功能:遠(yuǎn)程開發(fā)。這個(gè)功能為把 VSCode 嵌入托管的云其他產(chǎn)品奠定了基礎(chǔ),但同時(shí)它也是不開源的。我也曾寫過(guò)一篇文章專門分析這個(gè)問(wèn)題:
/blog/2020/04/vscode-remote-not-open-source
從那時(shí)起我就意識(shí)到,微軟將來(lái)很可能把 VSCode 搬到云上,作為 Azure 或其他商業(yè)產(chǎn)品線的組成部分。我們應(yīng)該會(huì)看到越來(lái)越多的核心組件走向閉源方向,這主要是出于以下考慮:
為了商業(yè)利益,微軟應(yīng)該會(huì)把部分功能作為收費(fèi)的“高級(jí)功能”
也存在另一種可能,即功能本身并不收費(fèi),但會(huì)作為微軟產(chǎn)品專享的特有功能,而開源部分將不可避免地成為“閹割版”
微軟并不希望培養(yǎng)潛在的競(jìng)爭(zhēng)對(duì)手。這在遠(yuǎn)程開發(fā)的許可中已經(jīng)說(shuō)得很明確了:只允許私人使用,不允許部署到其他公有平臺(tái),或者作為產(chǎn)品的一部分提供。
雖然現(xiàn)在還只是個(gè)苗頭,但找這個(gè)趨勢(shì)發(fā)展下去,VSCode 走向封閉是不可避免的。對(duì)這個(gè)技術(shù)上有很多亮點(diǎn)的項(xiàng)目,我個(gè)人覺得頗感遺憾。讓時(shí)間來(lái)證明一切吧。