拙作、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に代わって管理することを発表していたようです。
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 のユーザーのようでした。
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の紹介もありました。
Open VSX RegistryにExtensionをPublishする
Open VSX RegistryにExtensionをPublishする方法は、以下のガイドにまとまっています。
基本はこのガイド通りに進めるだけで、特につまづくようなところもありませんでした。
あえて気になったところを上げるとすると、以下の2点がありました。
NamespaceのVerification
Marketplace上のnamespaceを作る際、namespaceをverified申請しておかないと「verifyされていないよ」というwarningがExtension pageに表示されます。 これを嫌うのであれば、ガイドにあるようにGithub issueを立ててNamespaceをverifyしておく必要があります。特に拘りがなければ申請しておいていい気がします。
私は以下で tomoyukim のnamespaceを申請しました。
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に対して閉じているのかもしれないですが。。。