DUICUO

VS Code の C# 拡張機能のソースコードを非公開にする Microsoft の計画が激しい怒りを巻き起こしている。

6月16日、MicrosoftのプロジェクトマネージャーであるTim Heuer氏は、VSCode C#拡張機能のロードマップの更新を発表しました。新しいロードマップでは、VSCode C#拡張機能の基盤となる通信メカニズムとしてLanguage Server Protocol(LSP)を導入し、新しいC#拡張機能の基盤として「LSP Tools Host」コンポーネントを新たに作成することで、より実用的な機能を導入する予定です。しかし、Microsoftは発表の中で「LSP Tools Host」コンポーネントはオープンソース化しないと明言し、この決定は直ちに大きな批判を招きました。

8年前、OmniSharpチームは当時利用可能なAPIとプロトコルを使用して、VS Code用のC#拡張機能を開発しました。現在、言語サーバープロトコル(LSP)は、最新の開発ツール(エディター、IDEなど)間の通信における標準的なメカニズムとなっています。そこでMicrosoftは、C#拡張機能をLSPのみを使用するように切り替え、既存のOmniSharpコンポーネントもLSPを使用するように更新する予定です。

(ここで言及しておくべきことは、VSCode 用の C# 拡張機能を作成した OmniSharp チームには多くの Microsoft 社員がいますが、このチームはコミュニティ主導であり、Microsoft とは提携していないということです。言い換えれば、Microsoft がコミュニティで開発された C# 拡張機能を引き継ぎ、その開発パスを管理しているということです。)

LSPにより、VS Code拡張機能向けにC#に革新的な機能を導入できるようになります。これには高度な機能の提供や、場合によってはIntelliCodeに類似したクローズドソースエクスペリエンスの提供が含まれます。

Roslyn や Razor などのオープンソース コンポーネントとクローズドソース コンポーネントを統合し、より幅広い機能を提供する新しい「LSP ツール ホスト」コンポーネントを作成する予定です。

「LSP Tools Host」は、VS Code拡張機能向けC#のデフォルトエクスペリエンスとなります。既存ユーザーは、既存のオープンソースOmniSharpドライバシステムと、一部の追加機能(クローズドソース機能など)へのアクセスを提供する新しい「LSP Tools Host」のどちらかを選択できます。

「LSP Tools Host」はオープンソースではありませんが、プロセス中にコミュニティとコミュニケーションを取り、将来の計画の指針とする予定です。

つまり、LSP通信メカニズムを採用することで、この新しいLSP Tools Hostコンポーネントは、新しいC# for VS Code拡張機能のデフォルトの機能パッケージとなり、より多くの「すぐに使える」機能をバンドルすることになります。このコンポーネントはクローズドソースのモジュールを導入しているため、コミュニティユーザーが開発に協力することは可能ですが、オープンソース化することはできません。

この発表は間違いなく反発を招き、ユーザーからはなぜ新しいコンポーネントをオープンソースにできないのかという疑問の声が上がり、Microsoft は「昔の閉鎖的で営利を優先する姿に戻った」と非難された。

クローズドソースであることに対する一般の懐疑的な意見に応えて、Microsoft プロジェクト マネージャの Tim Heuer 氏は発表を更新し、「LSP Tools Host」コンポーネントがオープン ソースでない理由をさらに説明しました。

RazorおよびC# LSP実装(RoslynおよびRazor)はオープンソースのままです。VS CodeのC#拡張機能(ms-dotnettools.csharp)もオープンソースのままです。

この新しい「LSP ツール ホスト」コンポーネントは、オープン ソース機能とクローズド ソース機能の間の橋渡しとなるもので、両方のタイプの機能を同時に提供できるようになります。

しかし、公平に言えば、この説明はあまり説得力がないようです。ロードマップには「LSP Tools Host」が C# の VS Code 拡張機能のデフォルト エクスペリエンスになると明記されており、現在は単に「ブリッジ」と呼ばれているからです...

過去からの教訓

実際、C#拡張機能が登場する以前から、MicrosoftはVS Codeの言語拡張機能を既に引き継ぎ、クローズドソース化していました。ユーザーのPradyun Gedam氏は、VS CodeのPython拡張機能はオープンソースソリューションであるJediのサポートによって普及し、その後MicrosoftがJediを引き継いでLSPベースのクローズドソースPython拡張機能pylanceを開発し、より優れたユーザーエクスペリエンスを約束したと指摘しています。

その後、MicrosoftはクローズドソースのPylanceをVS CodeのPythonのデフォルト拡張機能とし(ユーザーへの切り替え通知も送信)、オープンソース部分へのリソース投資を継続的に削減しました。現在、Pylanceを使用するPython拡張機能はJediよりもはるかに多くの機能を提供しており、ユーザーはクローズドソースのPylance拡張機能を使用するしか選択肢がない状況になっています。

ユーザーのGerard Smit氏は、これを「受け入れ、拡張、そして消滅」と要約しています。この3つの言葉は、まずオープンソースを受け入れ、コミュニティに機能の充実を図らせ、次に機能を「拡張、拡大、改善」し、最後にソースを非公開にして新機能を「拡張」した後に強力に推進し、最後にコミュニティ主導のオープンソース機能を「消滅」させることを意味します。