Ontwikkelaar creëert eigenhandig dependency hell

Verwijdering left-pad uit NPM 'sloopt' Node, Babel en meer.

Azer Koçulu, een JavaScript-ontwikkelaar, heeft gisteren na een juridisch akkefietje al z'n modules verwijderd uit de populaire JavaScript-packagemanager NPM. Dit zorgde voor een gigantische dependency-hell en brak veel grote JavaScript-projecten waaronder Node en Babel.

Koçulu kreeg het kortgeleden aan de stok met de advocaten van het chatprogramma Kik. De ontwikkelaar had namelijk een module gemaakt met dezelfde naam. Hoewel de module niets te maken heeft met chatten, vonden de mensen achter Kik het nodig de ontwikkelaar te verzoeken de module te verwijderen.




Power tot the people!

Koçulu weigerde, maar dat weerhield de mensen van Kik er niet van juridische stappen te ondernemen. De admins van NPM werden gesommeerd de module te verwijderen en gaven daar gehoor aan. Dit maakte de ontwikkelaar zo kwaad dat hij besloot alle NPM-modules te verwijderen.

"De situatie deed mij realiseren dat NPM iemands privédomein is waar de 'rechtspersoon' sterker is dan het [normale] volk. En ik ben juist open source gaan doen wergens 'power to the people,'" schreef Koçulu in z'n blog.

Dependency hell

Het verwijderen van al z'n modules uit NPM had echter grote gevolgen. Veel (grote) JavaScript-projecten zijn afhankelijk van Koçulu's modules en door de afwezigheid van die modules zaten veel programmeurs met gebroken builds en gefaalde installaties.

Vooral de module left-pad wordt veel gebruikt en was de afgelopen maand alleen al ruim twee miljoen keer gedownload. Veel projecten werkten dus niet meer naar behoren en ontwikkelaars begonnen te klagen over de nieuwe dependency hell. Het is toch bijzonder dat een module van 11 regels groot, zoveel projecten op de knieën kan krijgen. De left-pad module ziet er zo uit:

module.exports = leftpad;



function leftpad (str, len, ch) {

str = String(str);



var i = -1;



if (!ch && ch !== 0) ch = ' ';



len = len - str.length;



while (++i < len) {

str = ch + str;

}



return str;

}



Ondanks de dependency-problemen waar veel ontwikkelaars nu mee kampen, is Koçulu niet van plan de modules terug te plaatsen op NPM. "NPM is niet langer een plek waar ik mijn open source werk nog zal delen en ik heb al mijn modules verwijderd."