Analisis Skala Besar tentang Versi Semantik di NPM
Author
Venue
Repositori Perangkat Lunak Pertambangan (MSR) 2023
Abstract
Repositori paket NPM berisi lebih dari dua juta paket dan melayani puluhan miliar unduhan per minggu. Hampir setiap aplikasi JavaScript menggunakan pengelola paket NPM untuk menginstal paket dari repositori NPM. NPM mengandalkan skema “semantic versioning” (‘semver’) untuk menjaga ekosistem yang sehat, di mana perbaikan bug dapat dikirimkan secara andal ke paket hilir secepat mungkin, sementara perubahan yang merusak memerlukan intervensi manual oleh pengelola paket hilir. Untuk memahami bagaimana pengembang menggunakan semver, kami membangun dataset yang berisi setiap versi dari setiap paket di NPM dan menganalisis aliran pembaruan di seluruh ekosistem. Kami mengembangkan resolver ketergantungan yang dapat melacak waktu untuk NPM, yang memungkinkan kami menentukan dengan tepat versi mana dari setiap ketergantungan yang akan diselesaikan pada waktu yang berbeda. Kami memisahkan analisis kami untuk memungkinkan analisis langsung terhadap pembaruan yang relevan dengan keamanan (yang memperkenalkan atau memperbaiki kerentanan) dibandingkan dengan sisanya dari ekosistem. Kami menemukan bahwa ketika pengembang menggunakan Semver dengan benar, pembaruan kritis seperti tambalan keamanan dapat mengalir dengan cukup cepat ke dependensi hilir dalam sebagian besar kasus (90,09%), tetapi hal ini tidak selalu terjadi, karena penggunaan yang tidak sempurna oleh pengembang terhadap batasan versi Semver dan penambahan nomor versi Semver. Temuan kami memiliki implikasi bagi pengembang dan peneliti. Kami membuat infrastruktur dan dataset kami tersedia secara publik di bawah lisensi open source.
