Analiza na dużą skalę wersjonowania semantycznego w NPM
Author
Venue
Mining Software Repositories (MSR) 2023
Abstract
Repozytorium pakietów NPM zawiera ponad dwa miliony pakietów i obsługuje dziesiątki miliardów pobrań tygodniowo. Niemal każda aplikacja JavaScript korzysta z menedżera pakietów NPM do instalowania pakietów z repozytorium NPM. NPM opiera się na schemacie „wersjonowania semantycznego” („semver”) w celu utrzymania zdrowego ekosystemu, w którym poprawki błędów są niezawodnie dostarczane do pakietów niższego szczebla tak szybko, jak to możliwe, podczas gdy zmiany powodujące niekompatybilność wymagają ręcznej interwencji ze strony opiekunów pakietów niższego szczebla. Aby zrozumieć, w jaki sposób programiści korzystają z semver, tworzymy zbiór danych zawierający każdą wersję każdego pakietu w NPM i analizujemy przepływ aktualizacji w całym ekosystemie. Tworzymy narzędzie do rozwiązywania zależności w czasie dla NPM, które pozwala nam precyzyjnie określić, które wersje każdej zależności zostałyby rozwiązane w różnych momentach. Segmentujemy naszą analizę, aby umożliwić bezpośrednią analizę aktualizacji związanych z bezpieczeństwem (tych, które wprowadzają lub naprawiają luki w zabezpieczeniach) w porównaniu z resztą ekosystemu. Stwierdziliśmy, że gdy programiści prawidłowo stosują semver, krytyczne aktualizacje, takie jak poprawki bezpieczeństwa, mogą w większości przypadków (90,09%) dość szybko dotrzeć do zależności niższego szczebla, ale nie zawsze tak się dzieje, ze względu na niedoskonałe stosowanie przez programistów zarówno ograniczeń wersji semver, jak i przyrostów numerów wersji semver. Nasze ustalenia mają znaczenie zarówno dla programistów, jak i badaczy. Udostępniamy naszą infrastrukturę i zbiór danych publicznie na licencji open source.
