NPM'de Anlamsal Sürümleme Üzerine Büyük Ölçekli Bir Analiz
Author
Venue
Madencilik Yazılım Depoları (MSR) 2023
Abstract
NPM paket deposu iki milyondan fazla paket içerir ve haftada on milyarlarca indirme işlemine hizmet eder. Hemen hemen her JavaScript uygulaması, NPM deposundan paketleri yüklemek için NPM paket yöneticisini kullanır. NPM, sağlıklı bir ekosistem sürdürmek için "anlamsal sürümleme" ("semver") şemasına dayanır; bu şemada, hata düzeltmeleri mümkün olduğunca çabuk ve güvenilir bir şekilde alt paketlere iletilirken, kırıcı değişiklikler için alt paket bakımcılarının manuel müdahalesi gerekir. Geliştiricilerin semver'i nasıl kullandığını anlamak için, NPM'deki her paketin her sürümünü içeren bir veri kümesi oluşturduk ve ekosistem genelindeki güncelleme akışını analiz ettik. NPM için bir zaman yolculuğu bağımlılık çözümleyicisi oluşturduk; bu, her bir bağımlılığın hangi sürümlerinin farklı zamanlarda çözülmüş olacağını kesin olarak belirlememizi sağlıyor. Analizimizi, güvenlikle ilgili güncellemelerin (güvenlik açıklarını ortaya çıkaran veya yamayanlar) ekosistemin geri kalanıyla karşılaştırmalı olarak doğrudan analiz edilebilmesi için bölümlere ayırdık. Geliştiricilerin semver'ı doğru kullandıklarında, güvenlik yamaları gibi kritik güncellemelerin çoğu durumda (%90,09) aşağı akış bağımlılıklarına oldukça hızlı bir şekilde aktarıldığını tespit ettik; ancak geliştiricilerin hem semver sürüm kısıtlamalarını hem de semver sürüm numarası artışlarını kusursuz bir şekilde kullanmamaları nedeniyle bu her zaman gerçekleşmiyor. Bulgularımız, hem geliştiriciler hem de araştırmacılar için önemli sonuçlar doğuruyor. Altyapımızı ve veri setimizi açık kaynak lisansı altında kamuya açık hale getiriyoruz.
