How Node.js is het aanpakken van de uitdaging van Ryan Dahl ‘ s Deno
Node.js, de open source JavaScript runtime, bracht zijn 15e versie vorige week. Nu in zijn 11e jaar, Node.js is even populair als altijd, maar in 2020 is een parvenu concurrent ontstaan. Deno, een open source JavaScript runtime uitgebracht in mei, werd gemaakt door niemand minder dan Ryan Dahl — De oorspronkelijke auteur van Node.js. Nog erger dan het hebben van een concurrent die uw product kent binnenstebuiten, Deno werd speciaal gemaakt om op te lossen wat Dahl waargenomen als de belangrijkste zwakke punten van Node.js – inclusief beveiligingsproblemen, het gebruik van een centralized repository system (npm), en “heavy-handed tooling.”
om uit te vinden hoe de huidige generatie van Node.js onderhouders hebben te maken met de nieuwe uitdager — en bij uitbreiding, wat ze doen om Dahl ‘ s kritiek aan te pakken — ik interviewde Bethany Griggs, een Senior Software Engineer Bij Red Hat and a Node.lid technische Stuurgroep js. Griggs is betrokken bij het knooppunt.js project sinds 2016, voornamelijk met de Node.js Release werkgroep.
knooppunt.js stelt ontwikkelaars in staat om JavaScript-code uit te voeren buiten een webbrowser. Het oorspronkelijke doel was om dynamische webpagina ‘ s te maken op een server, voordat het naar de browser werd verzonden; wat betekent dat de JavaScript-code werd uitgevoerd server-side, in plaats van op de client. Meer in het algemeen, Node.js is de standaard geworden voor backend web programmering (terwijl de wil van React en Angular worden gebruikt voor de frontend). Het idee is dat ontwikkelaars dezelfde taal, JavaScript, kunnen gebruiken voor zowel backend als frontend.
Node.js is ook zeer schaalbaar en heeft een event-driven programmeermodel, die beide hebben gemaakt het een goede pasvorm voor cloud native toepassingen.
“Node.js blijft een van de toonaangevende runtimes voor het bouwen van cloud native microservices en backend toepassingen, ” Griggs vertelde me. Ze voegde eraan toe dat ” het is ook populair voor IoT — projecten-een van mijn favoriete voorbeelden is NASA met behulp van Node.js om ruimtepak data te monitoren.”
ruimtepakken opzij, Node.js wordt niet langer gezien als de hete nieuwe ding van JavaScript ontwikkeling (volgende.js, een frontend react framework, heeft misschien die mantel genomen). En in vergelijking met de cutting edge aard van Deno — bijvoorbeeld, Deno werd geschreven in de trendy nieuwe programmeertaal, Rust — the Node.js project volgt een relatief conservatieve ontwikkeling pad tegenwoordig. Dus het is geen verrassing dat Versie 15 van Node.js is een incrementele upgrade.
Griggs noemde “standaard gooien op niet-behandelde afwijzingen” als de belangrijkste update in v15. Dit betekent dat ontwikkelaars kunnen nu krijgen ” vroege feedback dat ze het weglaten van de behandeling van een fout in hun toepassing.”Een waardevolle technische update, zonder twijfel, maar niet waarschijnlijk om enthousiaste discussie te genereren op tech Twitter.
reageren op Ryan Dahl ‘ s kritiek
waar ik meer nieuwsgierig naar was, was of de Node.js project team heeft nieuwe ontwikkelingen ondernomen, of oplossingen, om een aantal van de zorgen Ryan Dahl heeft opgeworpen in de afgelopen paar jaar aan te pakken?
een paar jaar geleden gaf Dahl een presentatie over zijn spijt na het maken van Node.js. Een belangrijke was dat hij de runtime niet zo veilig als hij kon hebben-iets wat hij aangepakt bij het maken van Deno, die wordt gepromoot als zijnde “veilig door standaard.”Deno’ s benadering van beveiliging is om Veiligheidsrails rond toegang tot gegevens te plaatsen; zoals beschreven in de handleiding, “Deno vereist expliciete machtigingen voor bestand, netwerk en toegang tot de omgeving.”
Ryan Dahl at JSConf EU 2018.
diplomatiek vertelde Griggs me dat knooppunt.js zal” inspiratie uit ” Deno op deze en andere kwesties. Echter, ze zei dat het knooppunt.js project “heeft een geschiedenis van discussies over de handhaving van de beveiliging en het beperken van de toegang tot API’ s van voordat Deno werd aangekondigd.”Ze wees op een paar “experimentele functies” voor beveiliging (voorbeeld 1, Voorbeeld 2).
Griggs is er ook niet van overtuigd dat Deno ‘ s safety-first benadering van toegang juist is voor Node.js. “Voor praktische toepassingen,” zei ze, “je zou snel terug te vallen op het verlenen van toegang tot veel API’ s, dus de netto waarde versus complexiteit zou laag zijn.”
hoewel er interesse is onder het knooppunt.js project team in het experimenteren met sterkere beveiligingsfuncties, volgens Griggs ” er is geen dwingende zaak om alle van dezelfde afwegingen als Deno vast te stellen.”
voor Dahl ‘ s kritiek op npm als een gesloten ecosysteem voor modules, Griggs ziet geen reden voor Node.js om dat te veranderen.
” met betrekking tot hoe modules worden beheerd, is het module-ecosysteem een groot deel van het succes van Node geweest.js. Hoewel er lopende discussies zijn over de integratie van klanten — de registers die modules bedienen — lag de nadruk vooral op het toevoegen van ondersteuning voor ES6-modules, in plaats van het veranderen van de manier waarop ze worden beheerd.”
in plaats van npm te gebruiken, heeft Deno ervoor gekozen om modules te gebruiken waarnaar wordt verwezen als url ‘ s of bestandspaden.
Server-Side JavaScript nog steeds sterk
met de huidige populariteit van JavaScript frameworks zoals Next.js en Gatsby, samen met de opkomst van Jamstack en de statische site generatie aanpak, Ik vroeg Griggs als dat de use cases voor server-side JavaScript heeft beïnvloed?
” Er kan een vermindering zijn in het gebruik van dingen als templating engines voor server-side rendering,” zei ze, “maar Node.js wordt nog steeds zwaar gebruikt voor het bouwen van de microservices die terug de statische pagina ‘ s die kunnen worden ingezet met behulp van benaderingen zoals Jamstack. Knooppunt.js blijft ook zwaar worden gebruikt in de tools die deel uitmaken van de ontwikkeling pijpleidingen voor client-side JavaScript.”
de Futures van Node.js en Deno
dus wat is het volgende voor Node.js? In de aankondiging post over Versie 15, Griggs schreef dat na het vieren van de tiende verjaardag van Node.js vorig jaar, ” het project is begonnen met de volgende 10 jaar van Node.js inspanning. “
Ik vroeg Griggs wat voor soort initiatieven de projectleden in het komende decennium willen uitvoeren?
” tot nu toe hebben we onze prioriteiten gedefinieerd als ervaring met ontwikkelaars, stabiliteit, operationele kwaliteiten, knooppunt.js onderhouder ervaring, en up-to-date technologie en API ‘s,” antwoordde ze.
deze worden momenteel beschreven in een GitHub document getiteld Values and Priorities. Beveiliging wordt één keer genoemd als een subcategorie van ” operationele kwaliteiten “en stelt simpelweg:” kwetsbaarheden in de beveiliging op een verantwoorde manier aanpakken.”
Het lijkt niet op een high-bar doel voor de komende tien jaar, vooral in vergelijking met Deno ‘ s meer ambitieuze doel om te proberen om kwetsbaarheden te voorkomen in de eerste plaats.
maar sinds Node.js is een stabiel en relatief langlopend project, en is geschikt voor een aantal zeer grote enterprise software leveranciers (zoals Grigg ‘ s werkgever, Red Hat), je kunt niet de schuld van de onderhouders voor het zijn conservatief. Hoewel het laat een opening voor anderen om groter en brutaler te denken over de toekomst van server-side JavaScript — dat is precies wat Dahl en zijn Deno project doen.
Red Hat is een sponsor van de nieuwe Stack.
Feature image via .