Featured image of post VSCode extensionをOpen VSX Registryにpublishする

VSCode extensionをOpen VSX Registryにpublishする

拙作、vscode-mermaid-editorというVSCode向けのextensionをメンテしているのですが、以下のようなリクエストをユーザーの方から頂いて、初めて Open VSX Registry というものを知りました。

Publish mermaid-editor on https://open-vsx.org/

Open VSX Registryとは

Open VSX RegistryはEclipse Foundationが管理、運営しているVSCode extension marketplaceです。2021年3月に開発ツールベンダーのTypeFoxに代わって管理することを発表していたようです。

Open VSX is an Eclipse open-source project and alternative to the Visual Studio Marketplace. It is deployed by the Eclipse Foundation at open-vsx.org.
Open VSX Registry

Visual Studio Marketplaceがあるのに、なぜこのようなソリューションが必要だったのかということについてはWhite Paperが出ています。

一番の理由はやはり、Eclipse TheiaなどのAlt VSCodeでVS Marketの利用ができなかったことではないかと思います。

実際White Paperの冒頭で、Visual Studio MarketplaceがMS VS producsでしか利用できないというライセンス制約があることを問題視しています。 また、そのような制約がOSSであることによるソフトウェアの成長の可能性について、機会を奪っているというような記述もありました。

A ccording to Sven Efftinge, co-lead for the Eclipse Theia and Eclipse Open VSX projects, platforms such as Eclipse Theia simply don’t make sense without the ability to add extensions. “It makes no difference that the software is open source if it can’t be used by downstream adopters and inventors simply because they can’t install extensions,” he says. “Besides, it would be a very boring landscape if no one tries to innovate on top of what Microsoft does.”

そのような状態を嫌ってフリーソフトウェアなエディタを求める人たちのために、いくつかのAlt VSCodeが存在しているようです。 今回依頼をくれた方は VSCodium のユーザーのようでした。

binary releases of VS Code without MS branding/telemetry/licensing - GitHub - VSCodium/vscodium: binary releases of VS Code without MS branding/telemetry/licensing
GitHub - VSCodium/vscodium: binary releases of VS Code without MS branding/telemetry/licensing

VSCodiumは Why の節にあるように、VSCodeバイナリがMSによってビルドされる際に組みこまれるいくつかの違い (e.g. telemetryやtracking など)とそのライセンスを問題視していて、 それらを回避するためにMITライセンス以下でビルドされたVSCodeの配布をしているprojectのようです。

When we speak of “free software”, we’re talking about freedom, not price.

という一文が印象的です。

VSCodiumでは上記のMSライセンス制約からVS Marketplaceが利用できないため、Open VSX Registryを利用する必要がある、ということですね。

私はVSCodeのExtensionをメンテしてはいるものの、本人はEmacsを使っているため、上記のようなVSCode界隈の状況をほとんど知らずよい勉強になりました。

ちなみに、Eclipse Theiaについては以下のような記事がありました。また、White Paper内にもいくつか関連するProjectの紹介もありました。

クロスプラットフォームで使えるコードエディタ「Visual Studio Code」。その代替を目指し、Eclipse Foundationが提供しているのが「Eclipse Theia」です。本記事では、Theiaの基本的な特徴や使い方を紹介します。
Eclipseが提供する統合開発環境「Eclipse Theia」。Visual Studio Codeとの違いは? | GrapeCity.devlog - グレープシティ株式会社

Open VSX RegistryにExtensionをPublishする

Open VSX RegistryにExtensionをPublishする方法は、以下のガイドにまとまっています。

An open-source registry for VS Code extensions. Contribute to eclipse/openvsx development by creating an account on GitHub.
Publishing Extensions · eclipse/openvsx Wiki

基本はこのガイド通りに進めるだけで、特につまづくようなところもありませんでした。

あえて気になったところを上げるとすると、以下の2点がありました。

NamespaceのVerification

Marketplace上のnamespaceを作る際、namespaceをverified申請しておかないと「verifyされていないよ」というwarningがExtension pageに表示されます。 これを嫌うのであれば、ガイドにあるようにGithub issueを立ててNamespaceをverifyしておく必要があります。特に拘りがなければ申請しておいていい気がします。

私は以下で tomoyukim のnamespaceを申請しました。

Hi I want to claim a namespace: tomoyukim I'm the author of VSCode extension: mermaid-editor and I want to publish it to open-vsx.org too.
Claiming namespace `tomoyukim` · Issue #1521 · EclipseFdn/open-vsx.org

README内のSVG問題

VS Marketplaceにおいても、SVGをVSCodeで表示することに対して制限が存在します。

Constraints for rendering SVG images | vscode-docs

この制限によって、READMEにSVG Badgeなどを付与したままVS Marketplaceへpublishすることができないようになっています。 VS Marketplaceでは、これを回避できる特定のSVG providerが存在していて、それらのドメインでホストされたSVG ImageであればPublishができます。

例えば、mermaid-editorで利用しているSVGはVS Marketplaceの情報を表示するものですが、最近ドメイン変更があった関係でこのようなPublishトラブルがあったりしました。

Open VSX Registryにおいてもこの制限はあって、Publish時に以下のようなエラーが発生しました。(Publish-Extension wikiには記載がないんですけどね^^;)

SVGs are restricted in README.md; please use other file image formats, such as PNG: https://vsmarketplacebadge.apphb.com/version/tomoyukim.vscode-mermaid-editor.svg See the documentation for more information: https://github.com/eclipse/openvsx/wiki/Publishing-Extensions

VS Marketplaceと違って回避ドメインのようなものはないため、今回はREADMEからローカルでSVGを削ってPublishをしました。

これはCI化などをするには回避方法を検討する必要があるかもしれません。 Marketに対する中立性を考えるならば、VS MarketplaceのBadgeをこの機会に除いてしまうというのも一案かもしれません。

まとめ

Alt VSCodeでも利用できるオープンなExtension MarketplaceであるOpen VSX RegistryへPublishする機会を得たので、その内容についてまとめてみました。 VSCode周りのライセンス制約などについて知識が乏しかったので、とてもよい勉強になりました。

個人的にはMarketplaceじゃなくて、Emacsの straight.el のように直接extensionコードを持ってきて管理できるような仕組みとかがあればいいのに、という気もしました。 VSCodeそのもののExtension管理方法がそういうhackに対して閉じているのかもしれないですが。。。

Built with Hugo
テーマ StackJimmy によって設計されています。