Pár héttel ezelőtt egy nagyon tanulságos sztori alakult ki az NPM (Node Package Manager) körül, ami elgondolkodtató lehet a teljes csomagkezelős eszme kapcsán.
Az NPM a Node.js szoftverrendszer “App Store”-ja, lényegében ennek segítségével telepíthetünk alkalmazásunkba új csomagokat, amik valamilyen feladatot látnak el szoftverünkben. Viszont ezek a csomagok sokszor egymásra épülnek, így amikor telepítünk egyet, akkor jó eséllyel több másik is letöltődik a háttérben, amire az eredeti csomag hibátlan működése érdekében van szükség. Olyan ez, mint amikor kockákból építünk várat, ahol a kockák az NPM csomagok, a vár pedig a szoftverünk.
A probléma egy török programozónál, Azer Koçulu-nál kezdődött, akit az NPM-ben lévő “Kik” nevű csomagja miatt megkeresett egy “Kik” nevű vállalat jogi osztálya, hogy távolítsa el, vagy nevezze át a projektjét, értelemszerűen a nevek ütközése miatt. Emberünk azonban ezt nem szerette volna teljesíteni, így a jogászok közvetlenül az NPM-hez fordultak, akik kénytelenek voltak eltávolítani a projektet.
Ez a lépés a programozónak olyan rosszul esett, hogy az összes többi projektjét is törölte az NPM-ből, köztük egy 11 sorból álló, “npm left-pad” nevű csomagot is. Ez viszont a világon nagyon sok komoly projektnek is a “dependency”-je volt (Ember, React Native, Babel), így a következő frissítés után ezek forráskódjai “eltörtek”, azaz nem működtek tovább a csomag hiányában.
A probléma azóta egy másik csomag segítségével megoldódott, de mindenképp tanulságos történet, és egyben szemléltet egy komoly biztonsági problémát a csomagkezelőkkel kapcsolatban.