Verdaccioが成功したプロジェクトである理由とは?
Oren Hacohen
2021年2月2日
0 分で読めますVerdaccioにスポットライトを当ててご紹介します。今回は、オープンソースのメールエージェントであるJuan Picado氏をお迎えしました。同氏はnpmパッケージのVerdaccioのメンテナーです。Snyk AdvisorのVerdaccioパッケージページで、パッケージ全体の健全性スコアが非常に高いことに注目し、その詳細を掘り下げたいと思いました。

Verdaccioとは何ですか?
一言で言うと、VerdaccioはNode.jsで構築された、依存関係がなく、設定不要で使える軽量なプライベートレジストリ兼プロキシです。ある程度カスタマイズでき、セットアップもとても簡単です。npmjsでパッケージを公開したことがあれば、Verdaccioの使い方もすぐにわかります。
このパッケージの興味深いユースケースには、どのようなものがありますか?
最も一般的なユースケースは、プライベートレジストリのホスティングです。小規模なチームなら、多くのリソースは必要ありません。SaaS上の小規模な仮想マシンであれば、たいていのニーズを満たせます。
Verdaccioはオープンソースエコシステムで高く評価されています。主な理由は、パッケージのテストや公開にサードパーティのサービスを利用する必要がないことです。プライバシーが守られ、誤って公開レジストリに情報が漏れるのを防ぐセキュリティレイヤーも追加されます。たとえば、モノレポから複数のパッケージを公開し、最終的なインストールの整合性をテストする場合などです。
レジストリを持つことは、Node.jsを学び、モジュールを作成してNode.jsの基盤として配布するうえで重要です。わずか数秒で誰もが自分のレジストリを実行できるのは、素晴らしいことではないでしょうか。Node.jsを学び始めたばかりの多くの開発者にとって、これは何ものにも代えがたい価値があります。
Verdaccioプロジェクトでのメンテナーとしての役割について教えてください。
2016年、VerdaccioはSinopiaというプロジェクトのフォークとして誕生しました。プロジェクトを今後どうするかについて、いくつもの議論がありました。当時、私はSinopiaのユーザーで、プロジェクトが放棄されるまで、自分の開発用にレジストリを必要としていました。コミュニティにとっての可能性にすぐ気づき、積極的に貢献しているうちに、共同創設者から所有権を引き継ぎました。当時はスターが200個、ダウンロードは週に数百件ほどで、Sinopiaもまだ存在していました。できるだけ多くのコントリビューターを迎えることが主な目標でしたが、それは実現しました。
現在は、すべて自分の空き時間にこのプロジェクトを主導しています。主な目標は、Node.jsコミュニティの成長を支援することです。VerdaccioはGitHubで11,000を超えるスターを獲得し、Dockerで約200万回プルされ、npmでは毎月10万回ダウンロードされています。プロジェクトを支援する最善の方法は貢献することですが、GitHub Sponsorsを通じた寄付で今後の開発を支援することもできます。https://github.com/sponsors/verdaccio。
Verdaccioは人気が高まっており、週のダウンロード数が30,432件以上に達しています。プロジェクトが成功した理由は何だと思いますか?

間違いなくシンプルさです。初めてVerdaccioを使うときの学習曲線はとても緩やかで、
npx verdaccioと入力するだけでレジストリを起動できます。ユーザーはレジストリの運用が複雑になり得ると理解しています。Verdaccioなら、それをシンプルにできます。
JavaScriptとNode.jsの人気も、成功に大きく貢献しています。プライバシーとセキュリティが求められるなか、Verdaccioはどちらも無料で提供します。
多くのユーザーに届けるうえで、Dockerは間違いなく最良の方法でした。
Verdaccioのお気に入りの機能は何ですか?
お気に入りは、uplinksという機能です。これにより、ユーザーは他のレジストリに接続するさまざまな方法を選べます。もう一つの機能であるpackage accessと組み合わせると、パッケージ名のパターンに基づいて、特定の依存関係を解決するuplinkを指定できます。また、パッケージが見つかるまで複数のuplinkを連鎖させることも可能です。今のところ、これを実現できる製品は他にありません。
最新のVerdaccioリリースの新機能は何ですか?
最近リリースされた機能の1つは、非推奨のパッケージをユーザーインターフェースに表示できることです。これにより、メンテナンスされていないパッケージがあることをユーザーに簡単に伝え、使用をやめるよう促せます。
開発者がVerdaccioを選ぶ理由は何ですか?
Verdaccioが開発者に好まれるのは、プライバシー、柔軟性、シンプルさ、そして無料であることだと思います。プライバシーを守れるのは、コードをサードパーティのサービスと共有する必要がないからです。柔軟性が高いのは、アプリケーションの動作を簡単に変更できるからです。初めて使うときの学習負担が少なく、シンプルに使えます。また、オープンソースで無料のため、誰でも貢献してプロジェクトをより良くできます。
開発者が他のどのプロジェクトから移行してくるのを見かけますか?
ここ数年、NexusやArtifactoryからVerdaccioに移行する開発者が増えている傾向を感じます。ほとんどのNode.js開発者に、パッケージを公開するための大規模なソリューションは必要ありません。小さな会社を運営している場合も、フリーランスとして働いている場合も、学習中やちょっと試してみたい場合も、市場にVerdaccioほどシンプルで速いものはありません。
Verdaccioプロジェクトの健全性を示す指標として、何が重要だと思いますか?Verdaccioは健全なプロジェクトと評価されており、コミットの傾向やプルリクエストの動きも良好です。

間違いなく、安心感をもたらすことです。オープンソースプロジェクトは他のプロジェクトに依存しており、依存関係が連なる大きなチェーンの一部です。それらの問題や改善、破壊的変更は、いずれ自分たちにも影響します。私は手動または自動化ツールを使って、できるだけ頻繁に依存関係を更新しています。それらのセキュリティパッチによってVerdaccioの問題も修正されます。私たちも同じように対応することで、Verdaccioに依存する人たちもプロジェクトの健全性の恩恵を受けられます。さらに、セキュリティポリシーに関する報告窓口を設けており、誰でも脆弱性を報告できます。報告はメンテナーが優先的に対応します。
オープンソースプロジェクトのメンテナーとして、今最も大きな課題は何ですか?
時間です。私にとって、フルタイムで報酬を得ながらオープンソース開発者として働くのは夢物語です。完全に独立してそれを実現できた人は、ほんの一握りです。本業や家族、個人的な趣味、日々の生活があると、オープンソースに使える時間や余裕はあまりありません。ですから、間違いなく時間が最大の課題です。1日に1時間も取れないこともあり、どのタスクを優先するか決めなければなりません。ブログやツイート、カンファレンスやミートアップでのプロジェクト紹介といった、ほかの補助的なタスクも忘れてはいけません。時間に追われていると感じないことも大切です。わずかな時間でも楽しむことが、本当に重要です。
Verdaccioは過去のバージョンで、セキュリティ問題に適切に対処してきた実績があるようです。最近の4.xブランチでは、セキュリティリスクにどのように対応していますか?

私はセキュリティの専門家ではないため、サードパーティのサービスや、潜在的な問題の理解と特定を手伝ってくれるセキュリティ専門家に頼っています。Verdaccioチームは初期の頃から、Liran Tal氏とともに、オープンソース向けセキュリティプログラムであるSnykに招待され、参加してきました。それ以来、この分野でもっと責任を持つよう努めています。プロジェクトはセキュリティ問題への対処方法について非常に有益なフィードバックを得ており、その過程で多くを学んでいます。
プログラムに参加する前から、オープンソースプロジェクト向けのSnykの無料サービスを利用していました。プルリクエストやメールで利用可能なパッチについてすぐにフィードバックを受け取れるので、プロジェクトを良好な状態に保つのに役立っています。
コアチームメンバーのDaniel Ruf氏は、ドイツを拠点とするセキュリティ専門家です。セキュリティとオープンソースへの情熱からプロジェクトに加わり、当初からVerdaccioのセキュリティへの取り組みで素晴らしい手本となっています。
コントリビューターもそれぞれの役割を果たしています。脆弱性が検出されると、公式のセキュリティポリシーであるmasterブランチのSECURITY.mdファイルを通じて連絡を受けます。手順に従い、できるだけ早くパッチをリリースします。私には一つだけルールがあります。セキュリティは重要であり、真剣に取り組むということです。
お気に入りのオープンソースプロジェクトを5つ挙げるとしたら?
Yarn 2 (berry)はお気に入りの一つです。コードの品質、プラグインベースの設計、ドキュメント、そしてClassicからBerryへの移行方法に関する丁寧なコミュニケーションなど、プロジェクト全体がとてもよくできています。これはNode.jsエコシステムの多くを変える新しいコンセプトです。
Babel.jsがなければ開発は考えられません。TypeScriptと組み合わせるのが好きで、JavaScriptの最新機能をいち早く使えます。
pnpm:Verdaccioの今後の開発はすでにpnpmを基盤としており、このプロジェクトのアプローチが気に入っています。セットアップが簡単で、モノレポをサポートし、高速で、必要な機能をすべて備えています。ディスク容量を節約できることも、私にとって重要です。
Pino.js:今利用できるNode.jsロガーの中で、間違いなく最高です。高速で、ドキュメントが充実しており、活気あるコミュニティがあります。
Jest:仕事で携わるすべてのプロジェクトでJestを使っています。最も多機能なテストランナーであることは間違いなく、メンテナンスも行き届いていて、新機能もすぐにリリースされます。
オープンソースへの貢献を始めるための一番のアドバイスは?
まず、楽しんで取り組むことです。オープンソースに必要なのは、それだけです。私にとっては、学びながら自分のコンフォートゾーンを広げ、Node.jsを学んで楽しむ多くの開発者を支援できる趣味です。
恐れないでください!メンテナーは、あらゆる分野を知り尽くした全能の神ではありません。人間ですから、間違えることもあれば、学ぶこともあります。小さく始めるのは、オープンソースに参加する良い方法です。やがてプロジェクトへの理解が深まり、より大きな責任を担い、メンテナーになることもできます(それを目指すなら)。

