NPMにおけるセマンティックバージョニングの大規模分析
Author
Venue
Mining Software Repositories (MSR) 2023
Abstract
NPMパッケージリポジトリには200万以上のパッケージが含まれており、毎週数百億回のダウンロードが行われています。ほぼすべてのJavaScriptアプリケーションが、NPMリポジトリからパッケージをインストールするためにNPMパッケージマネージャーを使用しています。NPMは、健全なエコシステムを維持するために「セマンティックバージョニング(semver)」スキームを採用しています。これにより、バグ修正は可能な限り迅速かつ確実に下流のパッケージに提供される一方、互換性を損なう変更については、下流のパッケージメンテナによる手動での対応が必要となります。 開発者がsemverをどのように利用しているかを理解するため、我々はNPM上の全パッケージの全バージョンを含むデータセットを構築し、エコシステム全体における更新の流れを分析した。NPM向けの「タイムトラベル型依存関係解決ツール」を構築することで、異なる時点において各依存関係のどのバージョンが解決されていたかを正確に特定できるようにした。分析をセグメント化することで、セキュリティに関連する更新(脆弱性を導入または修正するもの)を、エコシステムの他の部分と比較して直接分析できるようにした。 その結果、開発者がSEMVERを正しく使用している場合、セキュリティパッチなどの重要な更新は、大多数のケース(90.09%)において下流の依存関係へ極めて迅速に伝播することが判明しました。しかし、開発者がSEMVERのバージョン制約やバージョン番号の増分ルールを不完全な形で使用しているため、これが常に起こるわけではありません。本調査結果は、開発者と研究者の双方にとって示唆に富むものです。また、本研究で使用したインフラストラクチャとデータセットを、オープンソースライセンスの下で一般公開しています。
