Articles

.js relève le défi du nœud Deno

de Ryan Dahl.js, le runtime JavaScript open source, a publié sa 15e version la semaine dernière. Maintenant dans sa 11e année, Node.js est aussi populaire que jamais, mais en 2020, un concurrent parvenu a émergé. Deno, un runtime JavaScript open source publié en mai, a été créé par nul autre que Ryan Dahl — l’auteur original de Node.js. Encore pire que d’avoir un concurrent qui connaît votre produit à l’envers, Deno a été créé spécifiquement pour corriger ce que Dahl percevait comme les principales faiblesses de Node.js – y compris les problèmes de sécurité, l’utilisation d’un système de dépôt centralisé (npm) et « l’outillage lourd. »

Pour savoir comment la génération actuelle de nœud.les responsables de js font face au nouveau challenger — et par extension, à ce qu’ils font pour répondre aux critiques de Dahl — J’ai interviewé Bethany Griggs, ingénieur logiciel senior chez Red Hat et un nœud.membre du Comité Directeur Technique de js. Griggs a été impliqué dans le nœud.projet js depuis 2016, principalement avec le Nœud.groupe de travail sur la publication de js.

Richard MacManus
Richard est rédacteur en chef de la nouvelle pile et écrit une colonne hebdomadaire sur la suite de l’Internet natif du cloud. Auparavant, il a fondé ReadWriteWeb en 2003 et l’a intégré à l’un des sites d’actualités et d’analyses technologiques les plus influents au monde.

Nœud.js permet aux développeurs d’exécuter du code JavaScript en dehors d’un navigateur Web. Son but initial était de créer des pages Web dynamiques sur un serveur, avant de les envoyer au navigateur; ce qui signifie que le code JavaScript a été exécuté côté serveur, plutôt que sur le client. Plus généralement, Nœud.js est devenu la valeur par défaut pour la programmation Web backend (tandis que les goûts de React et Angular sont utilisés pour le frontend). L’idée étant que les développeurs peuvent utiliser le même langage, JavaScript, à la fois pour le backend et le frontend.

Nœud.js est également très évolutif et dispose d’un modèle de programmation axé sur les événements, ce qui en a fait un bon choix pour les applications natives dans le cloud.

« Nœud.js continue d’être l’un des principaux runtimes pour la création de microservices et d’applications backend natifs dans le cloud « , m’a déclaré Griggs. Elle a ajouté que « c’est également populaire pour les projets IoT — l’un de mes exemples préférés est la NASA utilisant Node.js pour surveiller les données des combinaisons spatiales. »

Combinaisons spatiales de côté, Nœud.js n’est plus considéré comme la nouveauté du développement JavaScript (Next.js, un framework frontend React, a peut-être pris ce manteau). Et comparé à la nature de pointe de Deno — par exemple, Deno a été écrit dans le nouveau langage de programmation à la mode, Rust — the Node.le projet js suit une voie de développement relativement conservatrice de nos jours. Il n’est donc pas surprenant que la version 15 de Node.js est une mise à niveau incrémentielle.

Griggs a cité « lancer par défaut sur les rejets non gérés » comme étant la mise à jour la plus importante de la v15. Cela signifie que les développeurs peuvent désormais obtenir des « commentaires précoces sur le fait qu’ils omettent de gérer une erreur dans leur application. »Une mise à jour technique précieuse, sans aucun doute, mais qui ne devrait pas générer de discussions enthousiastes sur tech Twitter.

Répondre aux critiques de Ryan Dahl

Ce qui m’intéressait le plus, c’était de savoir si le nœud.l’équipe du projet js a entrepris de nouveaux développements ou des correctifs pour répondre à certaines des préoccupations soulevées par Ryan Dahl au cours des deux dernières années?

Il y a quelques années, Dahl a fait une présentation sur ses regrets après avoir créé Node.js. Un point important était qu’il n’a pas rendu le runtime aussi sécurisé qu’il aurait pu — ce qu’il a abordé lors de la création de Deno, qui est promu comme étant « sécurisé par défaut. »L’approche de Deno en matière de sécurité consiste à mettre des barrières de sécurité autour de l’accès aux données ; comme décrit dans son manuel, « Deno nécessite des autorisations explicites pour l’accès aux fichiers, au réseau et à l’environnement. »

Ryan Dahl à JSConf EU 2018.

Diplomatiquement, Griggs m’a dit ce nœud.js « s’inspirera de »Deno sur cette question et d’autres. Cependant, elle a dit que le nœud.js project  » a eu une histoire de discussions sur l’application de la sécurité et la limitation de l’accès aux API avant l’annonce de Deno. »Elle a souligné quelques « fonctionnalités expérimentales » pour la sécurité (exemple 1, exemple 2).

De plus, Griggs n’est pas convaincu que l’approche d’accès axée sur la sécurité de Deno convient à Node.js.  » Pour des applications pratiques « , a-t-elle déclaré,  » il faudrait rapidement revenir à l’octroi d’un accès à de nombreuses API, de sorte que la valeur nette par rapport à la complexité serait faible. »

Bien qu’il y ait un intérêt parmi le nœud.l’équipe du projet js en expérimentant des fonctionnalités de sécurité plus fortes, selon Griggs « il n’y a pas eu de cas convaincant d’adopter tous les mêmes compromis que Deno. »

Quant à la critique de Dahl sur npm en tant qu’écosystème fermé pour les modules, Griggs ne voit aucune raison pour Node.js pour changer cela.

« En ce qui concerne la gestion des modules, l’écosystème des modules a joué un rôle important dans le succès de Node.js. Bien que des discussions soient en cours sur l’intégration des clients — les registres qui servent les modules —, l’accent a été mis sur l’ajout de la prise en charge des modules ES6, plutôt que de modifier la façon dont ils sont gérés. »

Plutôt que d’utiliser npm, Deno a choisi d’utiliser des modules référencés sous forme d’URL ou de chemins de fichiers.

Le JavaScript côté serveur Continue De fonctionner

Avec la popularité actuelle des frameworks JavaScript comme Next.js et Gatsby, ainsi que la montée en puissance de Jamstack et son approche de génération de site statique, j’ai demandé à Griggs si cela avait eu un impact sur les cas d’utilisation du JavaScript côté serveur?

« Il peut y avoir une réduction de l’utilisation de choses comme les moteurs de modèles pour le rendu côté serveur », a-t-elle dit, « mais Node.js est encore largement utilisé pour créer les microservices qui soutiennent les pages statiques qui peuvent être déployées à l’aide d’approches telles que Jamstack. Nœud.js continue également d’être fortement utilisé dans les outils qui composent les pipelines de développement pour JavaScript côté client. »

Les futures de Node.js et Deno

Alors quelle est la prochaine étape pour le nœud.js ? Dans le message d’annonce sur la version 15, Griggs a écrit qu’après avoir célébré le dixième anniversaire de Node.js l’année dernière, « le projet a donné le coup d’envoi des 10 prochaines années de Node.effort js. « 

J’ai demandé à Griggs quels types d’initiatives les membres du projet cherchent à mettre en œuvre au cours de la prochaine décennie?

 » Jusqu’à présent, nous avons défini nos priorités comme l’expérience du développeur, la stabilité, les qualités opérationnelles, le nœud.expérience du mainteneur js, technologie et API à jour « , a-t-elle répondu.

Celles-ci sont actuellement décrites dans un document GitHub intitulé Valeurs et priorités. La sécurité est mentionnée une fois, en tant que sous-catégorie des « qualités opérationnelles », et indique simplement: « S’attaquer aux vulnérabilités de sécurité de manière responsable. »

Cela ne semble pas être un objectif haut de gamme pour la prochaine décennie, en particulier par rapport à l’objectif plus ambitieux de Deno d’essayer d’éviter les vulnérabilités en premier lieu.

Mais depuis le nœud.js est un projet stable et relativement long, et s’adresse à de très grands fournisseurs de logiciels d’entreprise (comme l’employeur de Grigg, Red Hat), vous ne pouvez pas reprocher aux responsables d’être conservateurs. Bien que cela laisse une ouverture pour que d’autres pensent plus grand et plus audacieux à l’avenir du JavaScript côté serveur – ce qui est exactement ce que font Dahl et son projet Deno.

Red Hat est un sponsor de la Nouvelle pile.

Image de fonctionnalité via.