Articles

hur nod.js tar itu med utmaningen av Ryan Dahls Deno

nod.JS, open source JavaScript runtime, släppte sin 15: e version förra veckan. Nu i sitt 11: e år, nod.js är lika populär som någonsin, men 2020 har en uppkomlingskonkurrent dykt upp. Deno, en Open source JavaScript runtime släpptes i Maj, skapades av ingen ringare än Ryan Dahl — den ursprungliga författaren till Node.js. Ännu värre än att ha en konkurrent som känner till din produkt inifrån och Ut, Deno skapades speciellt för att fixa vad Dahl uppfattade som de viktigaste svagheterna i Node.js-inklusive säkerhetsproblem, användning av ett centraliserat förvarssystem (npm) och ”tunghänt verktyg.”

för att ta reda på hur den nuvarande generationen av Nod.js-utvecklare har att göra med den nya utmanaren — och i förlängningen vad de gör för att ta itu med Dahls kritik — intervjuade jag Bethany Griggs, en Senior mjukvaruingenjör på Red Hat och en nod.JS teknisk styrgrupp ledamot. Griggs har varit involverad i noden.js projekt sedan 2016, främst med noden.JS släpper arbetsgrupp.

Richard MacManus
Richard är seniorredaktör på den nya stacken och skriver en veckokolumn om vad som är nästa på det inbyggda Internet i molnet. Tidigare grundade han ReadWriteWeb 2003 och byggde den in i en av världens mest inflytelserika tekniknyhets-och analyssidor.

nod.js gör det möjligt för utvecklare att köra JavaScript-kod utanför en webbläsare. Dess ursprungliga syfte var att skapa dynamiska webbsidor på en server innan de skickades till webbläsaren; vilket betyder att JavaScript-koden kördes på serversidan snarare än på klienten. Mer allmänt, nod.js har blivit standard för backend webbprogrammering (medan lik av React och Angular används för frontend). Tanken är att utvecklare kan använda samma språk, JavaScript, för både backend och frontend.

nod.js är också mycket skalbar och har en händelsestyrd programmeringsmodell, som båda har gjort den till en bra passform för molnbaserade applikationer.

”nod.js fortsätter att vara en av de ledande körtiderna för att bygga molnbaserade mikrotjänster och backend-applikationer,” sa Griggs till mig. Hon tillade att ” det är också populärt för IoT — projekt-ett av mina favoritexempel är NASA med Node.js för att övervaka rymddata.”

rymddräkter åt sidan, nod.js ses inte längre som den heta nya saken med JavaScript-utveckling (nästa.js, en frontend React framework, har kanske tagit den manteln). Och jämfört med denos banbrytande natur — till exempel skrevs Deno i det trendiga nya programmeringsspråket, Rust — noden.js-projektet följer en relativt konservativ utvecklingsväg idag. Så det är ingen överraskning att version 15 av Node.js är en stegvis uppgradering.

Griggs citerade ”kasta som standard på obehandlade avslag” som den viktigaste uppdateringen i v15. Det betyder att utvecklare nu kan få ” tidig feedback om att de utelämnar hanteringen av ett fel i sin ansökan.”En värdefull teknisk uppdatering, utan tvekan, men inte sannolikt att generera entusiastisk diskussion på tech Twitter.

som svar på Ryan Dahls kritik

vad jag var mer nyfiken på var om noden.js projektgrupp har genomfört några nya utvecklingar, eller fixar, att ta itu med några av de farhågor Ryan Dahl har tagit upp under de senaste åren?

För några år sedan gjorde Dahl en presentation om hans ånger efter att ha skapat Node.js. En viktig var att han inte gjorde körtiden så säker som han kunde ha — något han tog upp när han skapade Deno, som främjas som ”säker som standard.”Denos inställning till säkerhet är att sätta säkerhetsskenor runt dataåtkomst; som beskrivs i sin manual ”kräver Deno uttryckliga behörigheter för fil -, nätverks-och miljöåtkomst.”

Ryan Dahl på JSConf EU 2018.

diplomatiskt berättade Griggs mig den noden.js kommer att ”ta inspiration från” Deno om detta och andra frågor. Men hon sa att noden.js project ” har haft en historia av diskussioner kring säkerhetsövervakning och begränsning av åtkomst till API: er från innan Deno tillkännagavs.”Hon pekade på ett par” experimentella funktioner ” för säkerhet (exempel 1, exempel 2).

Griggs är inte heller övertygad om att denos säkerhets-första tillvägagångssätt för åtkomst är rätt för Node.js. ”För praktiska tillämpningar”, sa hon, ” skulle du snabbt behöva falla tillbaka för att ge tillgång till många API: er, så nettovärdet kontra komplexitet skulle vara lågt.”

även om det finns intresse bland noden.js projektgrupp i experimentera med starkare säkerhetsfunktioner, enligt Griggs ”det har inte varit ett övertygande fall att anta alla samma kompromisser som Deno.”när det gäller Dahls kritik av npm som ett slutet ekosystem för moduler ser Griggs ingen anledning till nod.js för att ändra på det.

” När det gäller hur moduler hanteras har module ecosystem varit en stor del av framgången för Node.js. Även om det pågår diskussioner kring integration av kunder-registren som betjänar moduler – har huvudfokus varit att lägga till stöd för ES6-moduler, snarare än att ändra hur de hanteras.”

i stället för att använda npm har Deno valt att använda moduler som refereras till som webbadresser eller filvägar.

serversidan JavaScript Still Going Strong

med den nuvarande populariteten för JavaScript-ramar som Next.js och Gatsby, tillsammans med uppkomsten av Jamstack och dess statiska webbplats generation strategi, Jag frågade Griggs om det har påverkat användningsfall för serversidan JavaScript?

” det kan finnas en minskning av användningen av saker som mallmotorer för serversidan,” sa hon, ”men Node.js används fortfarande kraftigt för att bygga mikrotjänsterna som stöder de statiska sidorna som kan distribueras med hjälp av tillvägagångssätt som Jamstack. Nod.js fortsätter också att användas kraftigt i de verktyg som utgör utvecklingsledningarna för JavaScript på klientsidan.”

terminerna för noden.js och Deno

Så vad är nästa för nod.js? I meddelandet om version 15 skrev Griggs att efter att ha firat tioårsdagen av Node.js förra året, ” projektet har startat de kommande 10 åren av Node.JS ansträngning. ”

Jag frågade Griggs vilka typer av initiativ projektmedlemmarna vill genomföra under det kommande decenniet?

” hittills har vi definierat våra prioriteringar som utvecklarupplevelse, stabilitet, operativa egenskaper, nod.JS Utvecklare erfarenhet, och up-to-date teknik och API: er,” hon svarade.

dessa beskrivs för närvarande i ett GitHub-dokument med titeln värden och prioriteringar. Säkerhet nämns en gång som en underkategori av ”operativa egenskaper” och säger helt enkelt: ”att ta itu med säkerhetsproblem på ett ansvarsfullt sätt.”

det verkar inte som ett högt mål för det kommande decenniet, särskilt jämfört med denos mer ambitiösa mål att försöka undvika sårbarheter i första hand.

men sedan nod.js är ett stabilt och relativt långvarigt projekt, och vänder sig till några mycket stora företag mjukvaruleverantörer (som Grigg arbetsgivare, Red Hat), du kan inte skylla de ansvariga för att vara konservativ. Även om det lämnar en öppning för andra att tänka större och djärvare om framtiden för serversidan JavaScript-vilket är exakt vad Dahl och hans Deno — projekt gör.

Red Hat är en sponsor av den nya stacken.

Feature bild via .