Hoe het internet 2,5 uur kapot was en niemand dat opviel

Waarschijnlijk heb je het niet gemerkt, maar op dinsdag 22 maart waren vele websites en applicaties 2,5 uur lang kapot. Een groot deel van wat er op het internet beschikbaar is, deed het niet meer. Ontwikkelaars in de stress, veel IT’ers zijn boos, en wij… wij hebben er niets van gemerkt. Wat is er gebeurd?

Het begint met een programmeur genaamd Azer Koçulu, die een verder weinig opmerkelijk stukje code met de naam ‘Kik’ heeft geschreven.  Kik is een extensie die gebruikt wordt in de vrij populaire programmeertaal Node.js, onderdeel van JavaScript, waar ik verder niet al te diep op in ga. Meest belangrijk: Node.js wordt door ontzettend veel websites en applicaties gebruikt en het is één van de snelst groeiende sectoren binnen de technologische wereld.  Koçulu plaatste zijn code op NPM, wat in principe een grote database of app store is voor Node.js. De code was gratis te downloaden, zodat ontwikkelaars dit in hun eigen applicaties kunnen verwerken. Tot zo ver is er niets aan de hand.

Maar er is nog een Kik

Kik is echter niet alleen de naam van Koçulu’s code, maar ook van een populaire berichtenapplicatie. De tweede Kik wilde graag óók een stuk code op NPM plaatsen, met natuurlijk dezelfde naam. Dus schreven ze een e-mail naar Koçulu, met de vraag of hij zijn project met de naam Kik offline wil halen. Koçulu weigerde, maar het bedrijf Kik heeft rechten op de naam. Dus Kik liet weten dat ze eventueel advocaten in zouden schakelen om dit af te dwingen. De programmeur weigert nog steeds. Uiteindelijk besluit Kik om naar NPM zelf te gaan, en de zaak daar voor te leggen.

Bedenk wel: NPM is een open source-database en krijgt dit soort vragen over het algemeen niet. Toch maken ze een beslissing. De berichtenapplicatie Kik krijgt gelijk en NPM laat Koçulu weten dat hij zijn code offline moet halen. De programmeur is al op de hoogte, want Kik neemt hem in de CC mee in iedere e-mail.

En dan gaat het mis

Koçulu werd boos. Waarom? Omdat NPM een database (of app store) is voor de community en door de community. Dus voor de mensen door de mensen, en niet voor grote bedrijven. De programmeur besluit om zijn project inderdaad offline te halen, maar laat het hier niet bij.

Koçulu besluit om ál zijn code van NPM af te halen. Alle projecten zijn weg, wat betekent dat andere programmeurs de code niet langer kunnen gebruiken in hun eigen applicaties. En bij de code van Koçulu zit één project dat wel belangrijk is: npm left-pad. De code bestaat uit slechts elf regels en in principe doet het niet veel belangrijks, maar het werd wel 575 duizend keer gedownload. En met het verwijderen hiervan gaat veel kapot.

Waarom die elf regels code zo belangrijk zijn? In principe is npm left-pad weinig meer dan een shortcut voor programmeurs, waardoor ze bepaalde basiscode niet steeds opnieuw hoeven te schrijven. Een programmeur vraagt om npm left-pad – wat weinig meer is dan “zet deze code er later in” – en op het dat het nodig is, gaat een software compiler de code downloaden.

Omdat veel programmeurs left-pad gebruiken in hun eigen code, gaat het hier dus fout. De compiler wil de code downloaden, maar die is er niet meer. Conclusie: het programma is kapot. En dit gold niet voor één applicatie of website, maar voor duizenden wereldwijd. Sterker: NPM zelf constateerde vanaf half elf ’s avonds (Nederlandse tijd) honderden fouten per minuut. En al die fouten gingen om die elf regels code van Koçulu.

Bijna 2,5 uur lang kapot

Natuurlijk kwam er snel een oplossing. Een lid van de gemeenschap genaamd Cameron Westland publiceerde binnen tien minuten een nieuwe versie van npm left-pad, zodat andere programmeurs hier gebruik van kunnen maken. Dit kon doordat NPM open source is, en het toestaat dat anderen niet toegeëigende stukken code en de naam hiervan te gebruiken, als ze maar niet hetzelfde versienummer hebben.

Toch was dit niet genoeg. Veel programma’s vroegen specifiek om versienummer 0.0.3, terwijl de variant van Westland nummer 1.0.0. was. NPM en Cameron namen om die reden de stap om de code opnieuw te publiceren onder het originele versienummer. Om vijf over 12 ’s nachts (Nederlandse tijd) maakten ze dit bekend, vijftig minuten later waren ze klaar. Alle applicaties en websites doen het dus weer.

Waarom merkten wij dit niet?

Hoewel talloze websites en applicaties dus enige tijd kapot waren, merkten wij, de eindgebruikers, hier weinig tot niets van. Waarom is dat?

Dat is eigenlijk vrij simpel. Wat er kapot ging, was de mogelijkheid om updates te doen aan je website of applicatie als deze npm left-pad gebruikte. Maar dit betekent niet dat je gehele website of app direct offline gaat. De fout zit aan de achterkant van het programma, dus het stuk dat alleen programmeurs zien (en geloof me, dit hebben ze gezien). De voorkant had echter geen problemen, en dat is wat de rest van de wereld ziet.

Maar in de IT-wereld is dit niet onopgemerkt gebleven. Sterker: er is grote discussie gaande over de gebeurtenissen van dinsdagnacht. En er ontstaan twee kampen. Er is een groep die zegt dat Koçulu fout zit, omdat hij die code zonder aankondiging offline heeft gehaald en dat een “dick move” is. Dan is er het kamp dat NPM de schuld geeft. Zij vinden dat NPM nooit voor een bedrijf had mogen kiezen, omdat de database voor programmeurs is gemaakt en door hen wordt gebruikt. Een groot bedrijf zou hier niets in mogen afdwingen.

Reacties

Natuurlijk hebben de drie partijen – Koçulu, NPM en Kik – gereageerd op de discussie.

Koçulu zegt op Medium: “Deze situatie heeft me laten realiseren dat NPM iemands privéland is, waar bedrijven meer macht hebben dan mensen. Ik gebruik open source omdat ik geloof ik ‘Power To The People’.” Daarnaast zegt hij dat hij niet langer iets op NPM plaatst en dat dit geen “knee-jerk”-actie is. “Ik houd van open source en ik geloof dat de gemeenschap uiteindelijk een echt vrij alternatief voor NPM creëert.” Daarnaast biedt hij zijn excuses aan voor het breken van andermans applicaties en websites.

Eén van de partijen waarbij de programma’s kapot gingen, was Kik zelf, vertelt de verantwoordelijke van de berichtenapplicatie, Mike Roberts, op Medium. Ook vertelt hij de beweegredenen achter de vraag of Koçulu zijn project offline kon halen. “Kik bestaat al een lange tijd en we dachten dat de naam ‘Kik’ bij het pakket van Azer (Koçulu) verwarrend kon zijn. Toen Azer duidelijk maakte dat hij de naam niet ging veranderen, besloten we een andere naam te gebruiken voor ons project dat binnenkort op NPM verschijnt. We hoopte dat Azer van gedachte zou veranderen, maar we gingen al verder onder een andere naam toen we hoorden dat we de naam ‘Kik’ wel konden gebruiken.”

In het bericht van Roberts is bovendien de gehele e-mailconversatie te lezen tussen Kik, Koçulu en NPM.

Ook NPM geeft een reactie op de gebeurtenissen. In hun verhaal staat niet alleen een chronologische tijdlijn van wat er gebeurt is, maar ook een argumentatie van hun beweegredenen. “Aangezien er twee projecten de naam ‘Kik’ wilden gebruiken, vonden wij dat een groot aantal gebruikers dat ‘npm install kik’ (de code om het project te downloaden en te installeren) verward zouden raken als ze code zouden ontvangen die niet gerelateerd is aan de berichtenapplicatie die meer dan 200 miljoen gebruikers heeft”, is hun verklaring voor hun keuze om de naam aan Kik te geven. “Als Azer geen actie had ondernomen, dan had Kik een nieuwe versie van ‘kik’ geplaatst en iedereen die Azer’s project nodig heeft, had het nog steeds kunnen vinden”, gaat NPM verder. “De reden dat dit gebeurt is, is omdat de projecten plotseling offline werden gehaald. Dit kwam niet door onze uiteindelijke oplossing.”

Daarnaast geeft NPM een aantal actiepunten voor de toekomst: “We gaan het moeilijker maken om een project offline te halen als dit andere projecten kapot maakt. (…) We gaan het moeilijker maken om  kwaadwillig een verlaten projectnaam over te nemen. (…) We updaten onze interne beleid om ons team in sync te houden en conflicten in de gemeenschap effectiever aan te pakken.”

Ondertussen op het internet

Het internet is echter nog steeds in een verhitte discussie. Programmeurs van over de gehele wereld proberen een schuldige aan te wijzen, maar feit is dat de meningen hierover verschillen. De één vindt dat Koçulu niet zomaar zijn projecten offline had mogen halen, gezien de desastreuze effecten hiervan, de ander vindt dat NPM de naam ‘Kik’ niet zomaar aan het bedrijf had mogen geven.

Wie er fout zit, dat is lastig om te beslissen. Waarschijnlijk komt de IT-wereld hier zelf uit, en anders waait het waarschijnlijk vanzelf weer over. Maar de gebeurtenissen van dinsdagavond gaan de IT-geschiedenisboeken in als één van de grootste rampen die één van de snelst groeiende sectoren binnen de technologie (JavaScript en Node.js) ooit gezien heeft. En dat terwijl het overgrote deel van de wereld het niet eens door had.

Eveline Meijer is freelance (tech-) journalist en volgt op haar website Tech Reporter hoe technologie van nu de wereld veranderd en dit in de toekomst kan gaan doen. Hier verstuurt ze ook wekelijks een nieuwsbrief over. Gratis aanmelden kan hier.

Mijn gekozen waardering € -

Eveline Meijer is sinds 2014 werkzaam als (tech-)journalist. Op Reporters Online en op haar eigen website schrijft ze over technologie, maar kijkt voorbij de hypes.