Articles

How.js Está Abordando el Desafío del nodo Deno

de Ryan Dahl.js, el tiempo de ejecución de código abierto de JavaScript, lanzó su versión número 15 la semana pasada. Ahora en su 11º año, Node.js es tan popular como siempre, pero en 2020 ha surgido un competidor advenedizo. Deno, un tiempo de ejecución de código abierto de JavaScript lanzado en mayo, fue creado por nada menos que Ryan Dahl, el autor original de Node.js. Incluso peor que tener un competidor que conoce tu producto de adentro hacia afuera, Deno fue creado específicamente para arreglar lo que Dahl percibía como las debilidades clave de Node.js-incluyendo problemas de seguridad, uso de un sistema de repositorio centralizado (npm) y herramientas de mano dura.»

Para averiguar cómo funciona la generación actual del Nodo.los mantenedores de js están lidiando con el nuevo retador, y por extensión, lo que están haciendo para abordar las críticas de Dahl, entrevisté a Bethany Griggs, Ingeniera de Software Sénior en Red Hat y un Nodo.miembro del Comité Directivo Técnico de js. Griggs ha estado involucrado con el Nodo.proyecto js desde 2016, principalmente con el Nodo.js Release Working Group.

Richard MacManus
Richard es el mayor editor en La Nueva Pila y escribe una columna semanal sobre lo que viene en la nube de internet nativo. Anteriormente, fundó ReadWriteWeb en 2003 y lo convirtió en uno de los sitios de análisis y noticias tecnológicas más influyentes del mundo.

Nodo.js permite a los desarrolladores ejecutar código JavaScript fuera de un navegador web. Su propósito original era crear páginas web dinámicas en un servidor, antes de enviarlas al navegador; lo que significa que el código JavaScript se ejecutaba en el lado del servidor, en lugar de en el cliente. Más en general, Nodo.js se ha convertido en el predeterminado para la programación web de backend (mientras que los gustos de React y Angular se utilizan para el frontend). La idea es que los desarrolladores puedan usar el mismo lenguaje, JavaScript, tanto para el backend como para el frontend.

Nodo.js también es altamente escalable y tiene un modelo de programación basado en eventos, lo que lo ha convertido en una buena opción para aplicaciones nativas de la nube.

«Nodo.js sigue siendo uno de los principales tiempos de ejecución para crear microservicios nativos en la nube y aplicaciones de backend», me dijo Griggs. Agregó que » también es popular para proyectos de IoT, uno de mis ejemplos favoritos es la NASA que usa Node.js para monitorear los datos del traje espacial.»

Trajes espaciales a un lado, Nodo.js ya no se ve como la nueva cosa caliente del desarrollo de JavaScript (Siguiente.js, un framework de frontend React, quizás ha tomado ese manto). Y en comparación con la naturaleza de vanguardia de Deno, por ejemplo, Deno fue escrito en el nuevo lenguaje de programación de moda, Rust — the Node.el proyecto js sigue un camino de desarrollo relativamente conservador en la actualidad. Así que no es de extrañar que la versión 15 de Node.js es una actualización incremental.

Griggs citó «lanzar por defecto en rechazos no manejados» como la actualización más significativa en v15. Esto significa que los desarrolladores ahora pueden obtener «información temprana de que están omitiendo el manejo de un error en su aplicación».»Una valiosa actualización técnica, sin duda, pero no es probable que genere un debate entusiasta en Twitter tecnológico.

Respondiendo a las críticas de Ryan Dahl

Lo que más me interesaba era si el Nodo.el equipo del proyecto js ha emprendido nuevos desarrollos, o correcciones, para abordar algunas de las preocupaciones que Ryan Dahl ha planteado en los últimos años.

Hace un par de años, Dahl hizo una presentación sobre sus arrepentimientos después de crear Node.js. Una de las principales fue que no hizo que el tiempo de ejecución fuera lo más seguro posible, algo que abordó al crear Deno, que se promociona como «seguro por defecto».»El enfoque de Deno para la seguridad es poner rieles de seguridad alrededor del acceso a los datos; como se describe en su manual, «Deno requiere permisos explícitos para el acceso a archivos, redes y entornos.»

Ryan Dahl en JSConf EU 2018.

Diplomáticamente, Griggs me contó ese Nodo.js «se inspirará» en Deno en este y otros temas. Sin embargo, dijo que el Nodo.js project » ha tenido un historial de discusiones sobre la aplicación de la seguridad y la limitación del acceso a las API desde antes de que se anunciara Deno. Señaló un par de» características experimentales » para la seguridad (ejemplo 1, ejemplo 2).

Además, Griggs no está convencido de que el enfoque de acceso que prioriza la seguridad de Deno sea adecuado para Node.js. «Para las aplicaciones prácticas, «dijo,» tendría que recurrir rápidamente a la concesión de acceso a muchas API, por lo que el valor neto frente a la complejidad sería bajo.»

Aunque hay interés entre el Nodo.el equipo del proyecto js en experimentar con características de seguridad más fuertes, según Griggs, «no ha habido un caso convincente para adoptar las mismas compensaciones que Deno.»

En cuanto a la crítica de Dahl de npm como un ecosistema cerrado para módulos, Griggs no ve ninguna razón para Node.js para cambiar eso.

«Con respecto a cómo se gestionan los módulos, el ecosistema de módulos ha sido una gran parte del éxito de Node.js. Si bien hay discusiones en curso sobre la integración de los clientes — los registros que sirven a los módulos—, el enfoque principal ha sido agregar soporte para los módulos ES6, en lugar de cambiar la forma en que se administran.»

En lugar de usar npm, Deno ha optado por usar módulos referenciados como direcciones URL o rutas de archivo.

El JavaScript del lado del servidor Sigue Siendo Fuerte

Con la popularidad actual de los marcos de JavaScript como Next.js y Gatsby, junto con el auge de Jamstack y su enfoque de generación de sitios estáticos, le pregunté a Griggs si eso ha afectado los casos de uso de JavaScript del lado del servidor.

«Puede haber una reducción en el uso de cosas como motores de plantillas para el renderizado del lado del servidor», dijo, «pero Node.js todavía se utiliza en gran medida para crear los microservicios que respaldan las páginas estáticas que se pueden implementar utilizando enfoques como Jamstack. Nodo.js también sigue siendo muy utilizado en las herramientas que componen los canales de desarrollo para JavaScript del lado del cliente.»

Los Futuros del Nodo.js y Deno

Entonces, ¿qué sigue para Node?js? En la publicación de anuncio sobre la versión 15, Griggs escribió eso después de celebrar el décimo aniversario de Node.js el año pasado, » el proyecto ha comenzado los próximos 10 Años de Nodo.esfuerzo de js. «

Le pregunté a Griggs qué tipo de iniciativas están buscando implementar los miembros del proyecto durante la próxima década.

«Hasta ahora hemos definido nuestras prioridades como experiencia de desarrollador, estabilidad, cualidades operativas, Nodo.experiencia de mantenedor de js, tecnología y API actualizadas», respondió.

Estos están descritos actualmente en un documento de GitHub titulado Valores y prioridades. La seguridad se menciona una vez, como una subcategoría de «Cualidades Operativas», y dice simplemente: «Abordar las vulnerabilidades de seguridad de manera responsable.»

No parece un objetivo de alto nivel para la próxima década, especialmente en comparación con el objetivo más ambicioso de Deno de tratar de evitar vulnerabilidades en primer lugar.

Pero desde Nodo.js es un proyecto estable y relativamente de larga duración, y abastece a algunos proveedores de software empresariales muy grandes (como el empleador de Grigg, Red Hat), no se puede culpar a los mantenedores por ser conservadores. Aunque deja una oportunidad para que otros piensen más grande y audaz sobre el futuro de JavaScript del lado del servidor, que es exactamente lo que están haciendo Dahl y su proyecto Deno.

Red Hat es patrocinador de la Nueva Pila.

Imagen de característica a través de .