Hvorfor det endelig er tid for utviklere å ta opp kaoset til Node.js og NPM

Dette er de hotteste programmeringsspråkene i 2018 Swift og JavaScript vokser raskere enn deres rivaler, sier Nick Heath fra TechRepublic.

Node.js er en unik rar plattform. Spesielt er det ett virkelig godt eksempel på "som muligens syntes dette var en god idé" som det er lett å peke på, på grunn av utbruddet av kaos som omringet det.

I 2016 ba meldingstjenesten Kik (tror LINE, bortsett fra kanadisk) at utvikler Azer Koçulu - som hadde en ikke-relatert pakke med samme navn - endre navnet på pakken sin i NPM-pakksjefen. Etter å ha avslått, tok advokater som representerer Kik kontakt med NPM-administrerende direktør Issac Schlueter, som overlot eierskapet til pakken til Kik. Koçulu publiserte alle sine moduler fra NPM i protest, blant dem "left-pad" -pakken, og brøt alt i distribusjonen som var avhengig av pakken.

Venstreputepakken ble blant annet brukt av Node og Babel. Den hadde blitt lastet ned 575 000 ganger i uken før hendelsen, ifølge ZDNet. Nedfallet var dårlig nok til at NPM hadde avpublisert pakken for å fikse situasjonen. Med et navn som "venstre pad", hvilken tydelig kritisk ting gjør denne pakken som krever import av denne pakken?

Det er dette:

 module.exports = leftpad; funksjon venstre side (str, len, ch) {str = streng (str); var i = -1; if (! ch && ch! == 0) ch = ''; len = len - str.length; mens (++ i <len) {str = ch + str; } return str; } 

Det putter. Venstre. Som navnet tilsier. Det ville være bekymringsfullt om det gjorde noe annet.

Nå, tenk på denne situasjonen. Pakkenavnsproblemet er en sammenflytning av den kraftige bruken av advokater og en rask reaksjon på at en programmerer har fått teppet trukket ut under seg. Du bør trekke dine egne konklusjoner om hensiktsmessigheten av å involvere advokater i denne situasjonen, og hensiktsmessigheten av Koçulus reaksjon. Du bør også trekke dine egne konklusjoner om utformingen av en pakkehåndterer som gjør at en bredt distribuert pakke kan publiseres globalt uten forsinkelse, noe som bryter produksjonssystemer.

Det er ikke det primære problemet.

Problemet er at så mange ting kan bli ødelagt av en pakke som legger igjen . Hvem trenger denne pakken? Hvorfor vil du skape en avhengighet for noe så åpenbart?

NPM er full av pakker som dette. JavaScript har ikke et standardbibliotek, som lar Node.js-programmerere muligheten til å enten skrive grunnleggende strenghåndteringsfunksjoner hver gang de starter et nytt prosjekt, eller importere individuelle pakker hver gang de får opp noe som må gjøres i orden å fullføre det faktiske målet for programmet.

Mer om Open Source

  • 8 av tiårets verste open source-innovasjoner
  • Åpen kilde i 2020: Fremtiden ser lys ut
  • Linus Torvalds: "Git beviste at jeg kunne være mer enn et en-rart."
  • 20 raske tips for å gjøre Linux-nettverk enklere (gratis PDF)

NPM aktiverer denne oppførselen ved å lage pakker som venstre pad trivielt å importere. Under andre omstendigheter vil mange programmerere sannsynligvis bare kopiere noe fra Stack Overflow eller lignende nettsteder. Kvaliteten på koden og anvendeligheten av den koden i den påtenkte brukssaken er sannsynligvis mistenkt. NPM skaper for sine mangler en eierkjede for den importerte koden, ikke bare et lappeteppe av tekstutdrag som er funnet på oppslagstavler.

Det tidligere problemet med plutselig avpublisering av pakker - som fremdeles er mulig i NPM til tross for hendelsen på venstre side - gjør utsiktene til at til og med moderate mengder importerte pakker ikke er tiltalende. Mangelen på reell sikkerhet i NPM gjør frekvensen av import av pakker for trivielle ting til et problem, som David Gilbertson bemerket i dette essayet fra januar om kodeinnsetting og å leve "i en tid der folk installerer npm-pakker som de spretter smertestillende. "

Så med en kombinasjon av dette historiske problemet med "mikropakker" og rimelig forsiktighet rundt sikkerhet, har internett-bikubesinnet kommet til en produktiv programmerer: Jon Schlinkert. Schlinkert designer "et forsyningskjedesystem som er fokusert på å bringe handel til fattige regioner." Han har også 821 lagringsplasser på GitHub, og utnytter etter alt å dømme fullt ut av hvert enkelt av dem.

Schlinkert er ansvarlig for den is-odde pakken, som har drøyt 2, 8 millioner installasjoner den siste uken. Han har skrevet dusinvis av pakker som faller inn under den brede kategorien type sjekkpakker. Den uvanlige pakken trekker kritikk på grunn av en kjede avhengigheter som kobler den til nanomatch og mikromatch, hvor den siste er en avhengighet på over 300 pakker, inkludert nettlesersynkronisering og nettpakke.

For hans del insisterer Schlinkert på at "NPM-økosystemet fremmer kreativitet", men at spredningen av typesjekkingspakker er et JavaScript-problem - som gitt mangelen på et standardbibliotek ikke er en feil konklusjon å trekke. For Schlinkerts egen spredning av pakker bemerket han i en samtale med TechRepublic at mange av disse er relatert til et prosjektgeneratorbibliotek han designer, og at modulene tar 15 minutter å publisere. Han organiserer modulene på denne måten av hensyn til enhetstesting.

Dette er rimelig. Til slutt jobber Schlinkert i et økosystem med betydelige strukturelle problemer. Å angripe noen for det er uberettiget. Når det er sagt, trenger NPM å adressere de strukturelle problemene som gir mulighet for - hvis ikke direkte å fremme produksjonen av - flere overlappende brikker i pakken.

Oppdatering: NPM endret retningslinjene for upublisering som svar på hendelsen på venstre side. Selv om avpublisering fortsatt er mulig, kan det bare gjøres hvis pakken er mindre enn 24 timer gammel.

Ukens nyhetsbrev med åpen kildekode

Du vil ikke gå glipp av våre tips, opplæringsprogrammer og kommentarer til Linux OS og open source applikasjoner. Leveres tirsdager

Registrer deg i dag

Se også

  • Hvordan bygge en vellykket utviklerkarriere (gratis PDF) (TechRepublic)
  • Serier med kritiske feil i NPM ødelegger serverkonfigurasjoner (TechRepublic)
  • GitHub: Vår avhengighetsskanning har funnet fire millioner sikkerhetsfeil i offentlige repoer (ZDNet)
  • GitHub: Den smarte personens guide (TechRepublic)
  • De fleste IT-proffer frykter IoT-cyberangrep. De færreste gjør noe med det. (ZDNet)
  • JavaScript-trussel: Utdaterte biblioteker utgjør sikkerhetsfare (ZDNet)
  • Chaos Engineering: Et jukseark (TechRepublic)
Bilde: iStockphoto / beer5020

© Copyright 2020 | mobilegn.com