Skuffet udvikler slettede 11 kodelinjer og gav alverdens webapps problemer

En uoverensstemmelse mellem en open source-udvikler og en virksomhed bevirkede, at flere at nettets store web-applikationer kom i problemer.

Et simpelt program på bare 11 kodelinjer viste sig essentielt for flere af verdens store web-applikationer. Blandt andet Facebook. Men den sammenhæng stod dog næppe klart for særlig mange, da Azer Koçulu i marts besluttede sig for at slette sine projekter på tjenesten NPM. Den kuriøse historie fortæller Quartz.

NPM er et pakke-håndteringssystem, hvor udviklere kan finde og installere open-source-projekter skrevet i JavaScript. Ligesom lignende systemer, så fikser NPM dependencies (afhængigheder). Det vil sige, at hvis en udvikler henter og installere noget software, som er afhængig af anden software også, så sørger NPM for, at software-afhængighederne automatisk bliver installeret.

Azer Koçulu er glad for open source. Han kommer oprindeligt fra Tyrkiet, hvor han fik lært sig selv programmering. I dag bor han i byen Oakland i den amerikanske delstat Californien. Sine karrieremæssige mulighed tilskriver Koçulu i høj grad open source. Den historie står der mere om på Medium.

»Jeg er selvlært gymnasie-student, som har lært alt takket være open source-samfundet,« skriver han i en mail til Quartz og fortsætter:

»Jeg skylder alt, jeg har, til de folk, som aldrig gav op i forhold til open source-filosofien.«

Kik

I tidens løb har Koçulu offentliggjort flere udviklingsprojekter via npm-tjenesten. Et af projekterne har han registeret under navnet 'kik' på NPM. Og her starter problemerne. Ikke i forhold til selve projektet, der hjælper udviklere med skabeloner, men i forhold til navnet 'kik'.

For der er nemlig også et firma, der har en app til beskeder, kaldet 'Kik'.

Og da firmaet bag app'en 'Kik' gjorde klar til at frigive sin egen pakke via npm, skrev en repræsentant for selskabet, Bob Stratton, en mail til Koçulu. Stratton ville have Koçulu til at kalde sin pakke noget andet end 'kik', så firmaet bag app'en kunne bruge navnet. Dette ønske blev imidlertid afvist af Azer Koçulu.

Mailudvekslingen, der er offentliggjort her, eskalerede og Stratton skrev:

»Vi ønsker ikke at opføre os som en røv omkring det, men det er et registreret varemærke i de fleste lande i verden, og hvis du faktisk frigiver et open source-projekt kaldet 'kik', så vil vores varemærke-advokater banke på din dør og tage dine konti ned og den slags - og vi ville ikke have et valg i forhold til at gøre alt dette, fordi man bliver nødt til at håndhæve varemærker eller også mister man dem.«

Til dette svarede Azer Koçulu:

»Hahah, du opfører dig faktisk som en røv. Så, fuck dig. Lad være med at maile mig tilbage.«

Herefter rettede Stratton henvendelse til firmaet NPM. Og administrerende direktør i firmaet Isaac Schlueter gav selskabet bag kik-app'en medhold.

Det blev Koçulu skuffet over.

»Jeg har kendt jer i årevis,« skrev han i en mail og fortsatte:

»Og jeg havde aldrig forestillet mig, at I ville holde med virksomheds-patentadvokater, som truer open source-bidragere.«

Fjernede pakker

Episoden fik Koçulu til at kræve, at NPM fjernede alle de pakker, han havde publiceret via tjenesten.

Et par dage senere begynde web-udviklere verden over at modtage en bestemt fejl, når de forsøgte at køre deres web-applikationer.

npm ERR! 404 'left-pad' is not in the npm registry.

Fejlen fik ifølge Quartz nogle udviklere til at stoppe med at opdatere kode til de apps og tjenester, som allerede kørte live på nettet.

En af Koçulus pakker, 'left-pad' viste sig at være en forudsætning for, at flere andre pakker på NPM fungerede. Blandt andet React, som Facebook står bag, og som bliver brugt på flere store sites. React bruger ikke 'left-pad' direkte, men bruger andre pakker, som til sidst forgrener sig ud i pakker, der bruger 'left-pad'. Ironisk nok blev udviklerne ved firmaet 'Kik' også ramt af fejlen.

'left-pad' fylder blot 11 kodelinjer og kan bruges til at skyde karakterer ind til venstre af en streng.

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;
}

»At left-pad var i stand til at skabe så stor ødelæggelse, selv i en kort periode, siger noget om, hvordan moderne software er udviklet. Web-tjenester af udtalt betydning, som Facebook, kan ende med at være afhængig af obskure kodelinjer, skrevet af andre programmører,« bemærker Quartz i artiklen, der kan læses i sin helhed her.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (7)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Lars Nielsen

Det er jo samme problematik som der var med NETS da de skiftet fra at hedde PBS til NETS.

Den lille person bliver altid nakket af de store firmaer :(

Syntes virkelig at NPM ikke har klaret den sagde ret godt. Dog kunne Azer godt havde hold en sober tone.

  • 2
  • 1
#2 Martin Kofoed

Det er skisme en interessant case, når det kommer til håndtering af module dependency. Efterhånden er det vel blevet best practice at modularisere så meget som muligt og i øvrigt linke disse moduler ind fra diverse cloud services og CDN'er. Det skal man nok ikke lade være med, men man bør nok skænke det en tanke, hvad der skal ske, når nogle moduler af den ene eller anden grund forsvinder.

  • 5
  • 0
#3 Gustav Brock

Azer Koçulu tror åbenbart, at han er er hævet over loven og bliver tilmed fornærmet, når nogen minder ham om, at det er han ikke. Det er så, hvad det er - vi kan alle have vores fine fornemmelser - men hvorfor det derefter skal sabotere open-source-miljøet, som han "skylder alt", må undre - så fantastisk er navnet Kik altså heller ikke. Han kunne bare have omdøbt det til KikTwice, eller hvad ved jeg, og så havde den ikke været længere.

  • 4
  • 8
#5 Peter Müller

NPM har sidenhen opdateret som politik omkring at tillade at fjerne kode fra databasen. Fremover kan det kun ske i meget begrænset grad, således at denne problemstilling ikke opstår igen.

Samtidigt har de også håndteret den sikkerhedsrisiko der var forbundet med slettede pakkenavne, som øjeblikkeligt kunne overtages af andre og dermed bruges til et ondsindet angreb

http://blog.npmjs.org/post/141905368000/changes-to-npms-unpublish-policy

  • 2
  • 0
#6 Joe Sørensen

Selvom en virksomhed har rettigheder til at anvende et navn, så betyder det ikke nødvendigvis at kan forhindre andre i også at bruge navnet på et andet marked. Fx er det tilladt for en vindues fabrik i England at sælge Windows, hvis denne ikke kan forveksles med en software pakke. Der er også en computervirksomhed, som gerne må hedde Apple, selvom der eksisterer en musik distributør i forvejen ved det navn. ( Computervirksomheden kom dog i problemer da de mange år senere også begyndte at distribuerer MP3 filer, da dette pludselig kunne forveksles med musik distribution. Så da måtte Steve Jobs skrive en check ).

Min pointe er at folkene bag npm skulle have udfordret virksomheden og spurgt om deres produkt virkelig kunne forveksles med en NodeJS pakke.

Og hvis deres produkter gør det. ( Jeg ved ikke hvad de laver ). Så skulle de i det mindste havde været proaktive omkring dependency management. En der så kun havde været en enkelt afhængig pakke.

  • 3
  • 1
#7 Allan S. Hansen

Min pointe er at folkene bag npm skulle have udfordret virksomheden og spurgt om deres produkt virkelig kunne forveksles med en NodeJS pakke.

Som der står i artiklen: Og da firmaet bag app'en 'Kik' gjorde klar til at frigive sin egen pakke via npm Så dette er ikke helt sammenlignelig med Windows styresystem og Windows som i Vinduer til huse.

Så som man så mener den ene eller den anden part er skyldig i balladen; så viser det dog stadig en problemstilling i afhængighedskæder, som nok næppe bliver mindre fremover.

  • 0
  • 0
Log ind eller Opret konto for at kommentere