Nästan varje populärt programmeringsspråk kommer med en eller flera paket chefer. Programpaketen som distribueras av sådana pakethanterare bildar stora programvaruekosystem. Dessa förpackningsekosystem innehåller ett stort antal paketutgåvor som uppdateras regelbundet och som har många beroenden av andra paketutgåvor. Förpackningsekosystem är mycket användbara för sina respektive samhällen av utvecklare, men de står inför utmaningar relaterade till sin omfattning, komplexitet och utvecklingshastighet. Typiska problem är bakåtkompatibla paketuppdateringar, och risken för (transitivt) beroende på paket som har blivit föråldrade eller inaktiva. Detta manuskript använder biblioteken.io dataset för att utföra en kvantitativ empirisk analys av likheterna och skillnaderna mellan utvecklingen av paketberoende nätverk för sju förpackningsekosystem i olika storlekar och åldrar: Cargo for Rust, CPAN for Perl, CRAN for R, npm for JavaScript, NuGet for the.NET platform, Packagist for PHP och Ruby Gems for Ruby. Vi föreslår nya mått för att fånga tillväxt, förändringsförmåga, återanvändbarhet och sårbarhet i dessa beroendenätverk, och använda dessa mått för att analysera och jämföra deras utveckling. Vi observerar att beroendenätverken tenderar att växa över tid, både i storlek och i antal paketuppdateringar, medan en minoritet av paketen är ansvariga för de flesta paketuppdateringarna. Majoriteten av paketen beror på andra paket, men endast en liten del av paketen står för de flesta av de omvända beroendena. Vi observerar en hög andel av "fragila" paket på grund Kommuniceras av: till ett stort och ökande antal transitiva beroenden. Dessa resultat är avgörande för att bedöma kvaliteten på ett paketberoende nätverk och förbättra det genom verktyg för beroendehantering och påtvingad politik.
Dekan m.fl. REF jämförde utvecklingen av paketberoende nätverk av Cargo, CPAN, CRAN, npm, NuGet, Packagist och Rubygems.
An empirical comparison of dependency network evolution in seven software packaging ecosystems
{'venue': 'Empirical Software Engineering', 'journal': 'Empirical Software Engineering', 'mag_field_of_study': ['Computer Science']}