Cómo Erick Wendel, GDE web, cambió para siempre Node.js con el apoyo de la comunidad de código abierto

MAY 23, 2023
Kevin Hernandez Developer Relations Community Manager

¿Alguna vez te tocó solucionar errores en tecnologías conocidas en todo el mundo? ¿Qué hiciste? 

Si eres Erick Wendel, GDE web, te arremangas y buscas una solución a un error que lleva tiempo acechando a las grandes empresas de tecnología. 

Erick es un desarrollador comunitario que se inició en el campo a través de una comunidad de software que solía ofrecer cursos gratuitos en su país de origen, Brasil. Esta experiencia despertó su pasión por los proyectos de código abierto y la colaboración que lo ayudó a resolver un problema dentro de Node.js, que afectó la forma en que funcionan los subprocesos en el tiempo de ejecución. Erick continuó con sus ganas de compartir conocimientos al describir exactamente cómo resolvió el error en un detallado video de YouTube (en portugués).



erickWendelNodeJS
Erick Wendel, GDE web, hablando en la conferencia FrontInSampa

El error

En Node.js, hay un módulo llamado "proceso secundario", que te permite crear tareas en otras funciones para que puedas procesar datos en segundo plano. Este proceso demanda más energía de tu máquina y, en las páginas web, es lo que permite que las páginas se carguen más rápido. Al intentar importar módulos en JavaScript, hay dos formas principales de cargar esos módulos:

  1. CommonJS: los scripts deben cargarse en una secuencia determinada. Este método bloquea el programa hasta que todos los módulos se carguen en esa secuencia.
  2. Módulos ECMAScript: permite que JavaScript cargue módulos de forma asíncrona, lo que evita el bloqueo del programa a medida que carga archivos.

Mientras creaba una clase educativa para sus alumnos, Erick usaba el módulo de proceso secundario de Node.js e intentaba programar una función que se ejecutaría en segundo plano. Si hubiese funcionado correctamente, el proceso superior debería haber enviado mensajes al programa que se ejecuta en segundo plano no bien llamara a la función. Mientras este paso se procesaba, notó que recibía un error e, incluso, reescribió su código varias veces. Erick estaba totalmente seguro de que su código debía funcionar, pero, a pesar de su confianza, seguía recibiendo un error. Así que pensó: "¿Qué pasa si pongo una función setTimeout aquí y espero un poco y, luego, pregunto por los eventos? ¡Y entonces funcionó!". Erick se dio cuenta de que esto era, de hecho, un error real y fue directamente al repositorio de GitHub de Node.js para abrir un problema y trabajó con otros colaboradores para encontrar la mejor solución.

Encontrar una solución

Después del descubrimiento de Erick, quería estar seguro de que este no fuera un problema que solo lo afectaba a él. "Cuando busqué en Google este problema, encontré información sobre este problema en Facebook Jest, Yarn y en otras grandes bibliotecas a las que cualquier persona que ejecute JavaScript podría acudir", comentó. Como defensor de los proyectos de código abierto y de la colaboración, Erick creó un problema en GitHub de Node.js y se abocó al problema mientras otros colaboradores también participaban.

Cuando se le preguntó sobre los recursos que utilizó para solucionar este error, Erick mencionó rápidamente a la comunidad de código abierto. Habló con Anna Henningsen, una de las colaboradoras más importantes de Node.js, en su opinión. La idea que propuso era introducir un nuevo evento en el módulo de proceso secundario que alertaría a los usuarios cuando el evento estuviera "listo". Sin embargo, como señaló Anna, esto hubiera provocado cambios que hubieran requerido que la comunidad aprendiera a usar este nuevo proceso. En su lugar, propuso: "¿Qué pasa si pones en cola todos los mensajes y, cuando el proceso secundario esté listo, los envías todos juntos?". Este es el tipo de colaboración que Erik busca y esta solución de Anna habría solucionado el error sin que fuera necesario romper todas las apps que usan Node.js.

Anna brindó una ayuda invaluable y, poco después de abrir la discusión en GitHub, los miembros de la comunidad comentaron sobre el proyecto y dieron su opinión. Recuerda: “Después de enviar la primera versión de mi solución, muchos colaboradores revisaron mi código y dijeron: 'No, no. Esta no es la forma correcta. Deberías solucionar esto. Es un problema de rendimiento, etc.'. Así que recibí muchos comentarios, aprendí mucho, ¡y finalmente se aprobó!". Sin la ayuda de la comunidad de código abierto, Erick habría trabajado en una solución que habría creado más problemas. En cambio, la comunidad señaló los puntos ciegos y esta colaboración permitió crear una solución perfecta.

Con la solución de Erick, Node.js puede ejecutar tareas en segundo plano de manera efectiva utilizando módulos ECMAScript, de modo que las grandes empresas tienen que agradecer a Erick y a la comunidad de código abierto por haber resuelto un problema que existía desde el comienzo de Node.js.

Impacto

Desde que resolvió este problema, Erick se convirtió en miembro principal de Node.js, donde revisa las solicitudes de extracción, participa de las discusiones y se lo considera un desarrollador influyente en el espacio. Erick también recibió invitaciones a conferencias en todo el mundo para hablar sobre el desarrollo de código abierto y su experiencia.

Erick quiere agregar visibilidad al poder de los proyectos de código abierto y pide a todos, estudiantes y profesionales por igual, que ayuden con el código abierto. Estos proyectos lo ayudaron a alcanzar su objetivo de dejar una huella en el mundo y afirma: "Quiero poner mi nombre en algo que la gente recuerde para siempre. Yo diría que este es el poder del código abierto. Puedes agregar ideas o intentar arreglar algo, lo que te hará un mejor desarrollador y una mejor persona".

Erick continúa resolviendo problemas (su solución más reciente reparó un error en Node.js con una sola línea de código), aprendiendo, educando a través de su canal de YouTube y esperando con ansias el próximo gran desafío.

Los agradecimientos de Erick

Erick quiere agradecer a la comunidad de código abierto y, en particular, a Anna Henningsen y Reich Trott por su apoyo y por haber contribuido a encontrar esta solución. En sus propias palabras: "Sé que los colaboradores experimentados de Node.js podrían haber solucionado este error en cuestión de minutos, pero me permitieron ayudar y dar lo mejor de mí. Esta es una lección que siempre recordaré".

You can find Erick on Twitter, GitHub and YouTube where he published a step-by-step tutorial (in Brazilian Portuguese) on how he fixed this bug and also gave a summarized tech talk sharing his journey.

El programa de expertos desarrolladores de Google (GDE) es una red global de expertos en tecnología, influencers y líderes de opinión de gran trayectoria, que apoyan activamente a los desarrolladores, empresas y comunidades de tecnología. Para ello, participan en conferencias y publican contenido.