¿Es la indicada? (¿Cómo seleccionar una biblioteca de código abierto?)

Rate this content
Bookmark

Como desarrolladores de software, a menudo usamos bibliotecas de código abierto. En esta charla, compartiré algunos consejos sobre cómo seleccionar una biblioteca de código abierto y a qué prestar atención al trabajar con bibliotecas de código abierto.

FAQ

Karen Kenzie es una ingeniera de software senior con pasión por el voluntariado en iniciativas que apoyan el crecimiento profesional de las mujeres en I+D. Co-gestiona programas como la Masterclass de Blogs Tecnológicos y Codefest.

El primer consejo de Karen es revisar las tendencias de NPM para comparar diferentes bibliotecas de código abierto y ver cuál es la más adecuada según las necesidades del proyecto.

Es crucial seleccionar una biblioteca bien mantenida, actualizada regularmente y con un bajo número de bugs abiertos, lo que indica que es confiable y eficiente.

El tamaño del paquete afecta el rendimiento de la aplicación, mientras que menos dependencias reducen el riesgo de vulnerabilidades de seguridad.

Es fundamental verificar las licencias de las bibliotecas porque algunas pueden requerir que el propio código del usuario se comparta o publique bajo la misma licencia.

En enero de 2022, el mantenedor de Faker y Colors publicó actualizaciones problemáticas como respuesta a su descontento con una empresa, causando la eliminación de repositorios y bucles infinitos que llevaron a denegaciones de servicio.

Karen recomienda no instalar automáticamente la última actualización de una biblioteca, sino esperar y observar las reacciones de la comunidad y verificar las dependencias, para evitar problemas de seguridad o funcionalidad.

Keren Kenzi
Keren Kenzi
10 min
23 Oct, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla proporciona consejos para seleccionar la biblioteca de código abierto correcta, como usar las tendencias de NPM para comparar bibliotecas y considerar el tamaño del paquete, las dependencias y las licencias. También enfatiza la importancia de elegir bibliotecas mantenidas por varios mantenedores y ser cauteloso al confiar en los ingenieros. La charla destaca una historia de precaución sobre confiar en un solo mantenedor y sugiere prestar atención a los cambios en las versiones principales y especificar las versiones exactas en las dependencias para mitigar las vulnerabilidades de seguridad.

1. Introducción a la Selección de Bibliotecas de Código Abierto

Short description:

En esta charla, discutiremos cómo seleccionar la biblioteca de código abierto correcta para tus necesidades. Comenzaremos con un ejemplo de implementación de formularios en React y exploraremos consejos para elegir la mejor biblioteca. Un consejo es utilizar las tendencias de NPM para comparar diferentes bibliotecas basándonos en estadísticas como la fecha de creación, estrellas, última actualización, bugs abiertos y tamaño del paquete.

Hola a todos, y bienvenidos a la charla, ¿Es la Uno? O, en otras palabras, ¿Cómo Seleccionar una Biblioteca de Código Abierto? Mi nombre es Karen Kenzie. Soy una ingeniera de software senior. Me encanta ser voluntaria en diferentes iniciativas para ayudar a las mujeres en I+D en su crecimiento profesional. Soy voluntaria como co-gestora de dos programas. Uno es la Masterclass de Blogs Tecnológicos, y el otro es Codefest. Me encanta compartir conocimientos y me encanta estudiar nuevas tecnologías y psicología.

Y hoy vamos a hablar de cómo seleccionar una biblioteca de código abierto. Te daré consejos para ayudarte a seleccionar la que es correcta para ti. Y comenzaremos con un ejemplo. Digamos, por ejemplo, que somos desarrolladores front-end, estamos usando React, y necesitamos implementar algún tipo de formularios. Ahora, los formularios pueden complicarse, especialmente si tienen diferentes tipos de campos de entrada, si tienen varios pasos. Y no necesitamos gestionar todo nosotros mismos. Hay excelentes bibliotecas ahí fuera que pueden ayudarnos a hacer exactamente eso. Entonces, ¿cómo eliges la correcta para ti? Consejo número uno, ve a las tendencias de NPM. Puedes escanear este QR, y te redirigirá a las tendencias de NPM. Y lo que verás allí es una forma de comparar entre diferentes bibliotecas de código abierto. Por ejemplo, digamos que tu colega recomendó usar el formulario React, que actualmente es la biblioteca líder en gestión de formularios. Entonces, las Tendencias de React, una vez que haces clic aquí, en el nombre, escribe el nombre, te recomendarán bibliotecas similares para comparar. Puedes ver aquí que Formic está en segundo lugar, y hay otras bibliotecas que puedes comparar. Algo importante a tener en cuenta. NPM te mostrará estadísticas, por ejemplo. Te mostrará cuándo se creó la biblioteca. Te mostrará cuántas estrellas tiene la biblioteca, cuándo fue la última actualización. Cuando eliges una biblioteca, quieres asegurarte de seleccionar una biblioteca de código abierto que esté bien mantenida, es decir, que se mantenga actualizada, que no, la última vez que se mantuvo fue, por ejemplo, si echamos un vistazo a ReactUK form, se mantuvo recientemente. Quieres comprobar también el número de bugs abiertos, que aparece aquí. Puedes ver que ReactUK form, por ejemplo, solo tiene 24 bugs abiertos, lo que significa que está realmente bien mantenida. Y otra cosa a comprobar es el tamaño del paquete. Puedes ver aquí el tamaño minificado. Si haces clic en la estadística, te redirigirá a otro sitio web importante, que es BundlePhobia. Este es el QR que te llevará allí, y si echas un vistazo, por ejemplo, en BundlePhobia, en el paquete

2. Consideraciones para Seleccionar Bibliotecas de Código Abierto

Short description:

Al seleccionar una biblioteca de código abierto, es importante considerar el tamaño del paquete, las dependencias y la licencia. Tener menos dependencias puede reducir el riesgo de vulnerabilidades de seguridad. Además, es aconsejable elegir una biblioteca mantenida por varios mantenedores y ser cauteloso al confiar en los ingenieros. Una historia de precaución destaca los posibles riesgos de confiar en un solo mantenedor. Es crucial prestar atención a los cambios, especialmente en las versiones mayores, y especificar la versión exacta en tus dependencias. Considera especificar un rango de versión o utilizar características del gestor de paquetes como NPM overrides o yarn resolution para mitigar las vulnerabilidades de seguridad. Estos consejos pueden ayudarte a tomar decisiones informadas al seleccionar y utilizar bibliotecas de código abierto.

tamaño de ReactUK form, se muestra diferente tipo de información. Puedes ver el tamaño del paquete, minimizado, y también puedes ver el tiempo de descarga, y una cosa importante a verificar son las dependencias. Aquí abajo, puedes ver la composición. Puedes ver las dependencias de la biblioteca. Aquí puedes ver que ReactUK form no tiene dependencias, y si lo comparas, por ejemplo, con Formic, puedes ver que Formic depende de lodash ES y otras bibliotecas. Ahora, no significa que una sea mejor que otra, pero significa que podría introducir, por ejemplo, vulnerabilidades de security, si una de las dependencias en el árbol tiene vulnerabilidades de security, por lo que es mejor tener menos dependencias. Ahora, un dato curioso, si observas el gráfico de las tendencias de npm a lo largo de los años, puedes ver que siempre hay una caída aquí al comienzo del nuevo año, lo cual es realmente bueno, creo que significa que los programadores dejan la computadora atrás y están ocupados celebrando el año nuevo, y es un gran consejo tomarse un tiempo para relajarse, recargar energías y recuperar algo de energía. Así que hablemos de otra cosa que necesitas verificar cuando eliges una biblioteca de open-source. Diferentes bibliotecas de open-source tienen diferentes tipos de licencias de open-source. Puedes escanear este QR y te llevará al sitio web que especifica todas las diferentes licencias que una biblioteca de open-source puede tener. Ahora, presta atención a que si usas una biblioteca con un cierto tipo de licencia, podría requerir que compartas tu propio código. Podría requerir que publiques tu propio código bajo la misma licencia. Es realmente también importante verificar antes de usar o modificar código de bibliotecas de open-source. Ahora, ¿qué pasa con los mantenedores de la biblioteca de open-source? ¿Deberías confiar en ellos? El mejor consejo es elegir una biblioteca que sea mantenida por varios mantenedores y no solo uno. También deberías ser un poco cauteloso al confiar en los ingenieros. La mayoría de nosotros somos buenas personas y no queremos hacerte daño, pero hay quienes de repente deciden tal vez entrar y publicar bucles infinitos en su código o incluso eliminar todo el repositorio. Así que una historia de precaución. En enero de 2022, el mantenedor de una de las bibliotecas de open-source más populares decidió que ya había tenido suficiente de una empresa que usaba su proyecto sin pagar por ello, grandes empresas por supuesto, no el individuo, y decidió que publicaría una nueva versión, la llamó Komit Endgame, y le dio el número 666. Puedes adivinar por el número de versión que probablemente contenía algo malo. Así que en esta versión, todos los que instalaron la última versión obtuvieron todo el repositorio de esta biblioteca eliminado. Puedes ver que tiene millones de descargas semanales, también puedes ver la licencia y todo, pero es realmente importante prestar atención a cuáles son los cambios, especialmente en las versiones mayores, que se introducen en la biblioteca de código abierto que eliges. Ahora, este mantenedor no solo era mantenedor de Faker, que es la biblioteca que la empresa usaba para falsificar data, para generar data falsa, también era el mantenedor de otra biblioteca de código abierto llamada Colors. Ahora podrías pensar que, oh, está bien, no uso Colors, pero tal vez una de tus dependencias en el árbol usa esta biblioteca. Así que lo que hizo allí es publicar una versión, en la que insertó un bucle infinito que causó denegación de servicio, y muchas personas tenían esta biblioteca en su árbol de dependencias. Así que causó muchos problemas y ni siquiera era una versión mayor. Así que realmente necesitas tomarlo como una historia de precaución y recordar, especifica la versión exacta en tus dependencias, no solo tomes automáticamente la última versión, espera un poco para escuchar a la community, cómo es la última versión, verifica la dependencia si tienes tiempo, y esta es una muy buena lección. Y si temes que en algún lugar de tu árbol de dependencias anidadas pueda haber una vulnerabilidad de security o algo así, también puedes especificar el rango de versión que quieres instalar y si lo permites también puedes especificar una versión específica que quieres instalar utilizando ya sea NPN overrides o si estás usando yarn, la resolución de yarn. Así que esos son mis tips, a qué debes prestar atención al seleccionar una biblioteca, y una vez que la selecciones no instales automáticamente la última actualización. Si tienes otros tips, si quieres compartir cómo seleccionas tu propia biblioteca para usar, por favor compártelo conmigo, estaré encantado de escuchar y también estaré encantado de escuchar cuál es tu biblioteca de código abierto favorita. Así que muchas gracias por unirte a esta masterclass, espero que hayas aprendido algo nuevo, y disfruta y ten un gran día.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Cómo Construir Tu Propio Proyecto de Código Abierto
React Advanced Conference 2022React Advanced Conference 2022
16 min
Cómo Construir Tu Propio Proyecto de Código Abierto
Todos usamos proyectos de código abierto todos los días, como paquetes de npm, editores, aplicaciones web e incluso sistemas operativos... ¿Alguna vez has pensado en construir uno propio? En esta charla, compartiré mi experiencia construyendo jest-preview, desde cuando era solo una idea vaga, hasta convertirse en una biblioteca ampliamente adoptada para ayudar a los ingenieros frontend a escribir pruebas más rápido. Compartiré contigo cómo encontrar una idea para un proyecto en el que trabajar, cuáles son los desafíos que debes superar como autor de un proyecto de código abierto, cómo administrar el tiempo de manera eficiente y cómo llamar la atención de los ingenieros de todo el mundo.
Lecciones de Mantenimiento de Bibliotecas de TypeScript
TypeScript Congress 2022TypeScript Congress 2022
30 min
Lecciones de Mantenimiento de Bibliotecas de TypeScript
Mantener bibliotecas de JS ampliamente utilizadas ya es complicado, y TypeScript agrega un conjunto adicional de desafíos.

Únete al mantenedor de Redux, Mark Erikson, para conocer algunos de los problemas únicos a los que se enfrentan los mantenedores de bibliotecas de TS y cómo el equipo de Redux ha abordado esos problemas. Cubriremos:

- Compromisos de diferentes formas de definir tipos de TS para una biblioteca
- Cómo apuntar a diferentes versiones de TS y consideraciones para determinar el rango de versiones admitidas
- Migrar bibliotecas de JS existentes a TS
- Diferencias entre escribir tipos de "aplicación" y tipos de "biblioteca"
- Administrar y versionar APIs de tipos públicos
- Consejos y trucos utilizados por los tipos de las bibliotecas de Redux
- Limitaciones de TS y posibles mejoras a nivel de lenguaje
Módulos Nuxt 3 y Código Abierto
Vue.js London 2023Vue.js London 2023
31 min
Módulos Nuxt 3 y Código Abierto
Los módulos Nuxt son la forma por defecto de extender nuestras aplicaciones Nuxt con nuevos comportamientos y funcionalidades. ¿Alguna vez has construido el tuyo propio? ¿Por qué te molestarías con cientos de módulos ya disponibles? Vamos a responder esas preguntas juntos y ver por qué crear tus propios módulos en Nuxt 3 puede ayudarte a tener una comprensión más profunda de cómo funciona Nuxt, al mismo tiempo que te abre el camino para involucrarte en el código abierto.
Rompe la Carrera: Detección Fácil de Condiciones de Carrera para React
React Day Berlin 2023React Day Berlin 2023
31 min
Rompe la Carrera: Detección Fácil de Condiciones de Carrera para React
Las condiciones de carrera se encuentran entre algunos de los problemas más desafiantes de detectar y reproducir. Como tal, representan un desafío significativo en el desarrollo, notablemente en la interfaz de usuario. En esta charla, exploramos cómo detectar condiciones de carrera aprovechando las técnicas de fuzzing. Te guiamos a través del descubrimiento del verdadero problema de las condiciones de carrera y cómo impactan en la experiencia del usuario. Te proporcionamos herramientas y ejemplos que demuestran cómo detectarlas fácilmente en tu trabajo diario gracias a las pruebas que se basan en el fuzzing. Después de esta charla, esperamos que tu código React esté libre de condiciones de carrera o al menos que tengas las herramientas adecuadas para ayudarte.
Haciendo que una biblioteca de código abierto sea financieramente sostenible
React Day Berlin 2022React Day Berlin 2022
8 min
Haciendo que una biblioteca de código abierto sea financieramente sostenible
React Flow es una biblioteca de código abierto utilizada por miles de desarrolladores y cientos de empresas. ¿Cómo nos aseguramos de que se mantenga viva y también sea gratuita? Compartiré algunas ideas a lo largo de nuestro viaje desde la liberación de React Flow como código abierto hasta alcanzar el "cero negro", incluyendo los hallazgos de nuestra investigación de usuarios donde hablamos con algunas de las personas que nos apoyan cada mes.
The State of XState
React Finland 2021React Finland 2021
18 min
The State of XState
Over the past few years, state machines, statecharts, and the actor model have proven to be viable concepts for building complex application logic in a clear, visual way with XState. In this talk, we'll take a peek into the future of XState, including new features in the next version, and new tools and services that will make it even easier to create and collaborate on state machines.

Workshops on related topic

Node.js: Aterrizando tu primera contribución de código abierto y cómo funciona el proyecto Node.js
Node Congress 2023Node Congress 2023
85 min
Node.js: Aterrizando tu primera contribución de código abierto y cómo funciona el proyecto Node.js
Workshop
 Claudio Wunder
Claudio Wunder
Esta masterclass tiene como objetivo brindarte un módulo introductorio sobre los aspectos generales del código abierto. Sigue a Claudio Wunder de la Fundación OpenJS para que te guíe sobre cómo funciona el modelo de gobierno de Node.js, cómo se toman decisiones de alto nivel y cómo hacer tu primera contribución. Al final de la masterclass, tendrás una comprensión general de todos los tipos de trabajo que hace el proyecto Node.js (desde la clasificación de errores hasta decidir los próximos 10 años de Node.js) y cómo puedes formar parte del panorama más amplio del ecosistema JavaScript.

Las siguientes tecnologías y habilidades suaves podrían ser necesarias:
- Comprensión básica de Git e interfaz de GitHub
- Conocimiento de inglés profesional/intermedio para la comunicación y para permitirte contribuir a la organización Node.js (ya que todas las contribuciones requieren comunicación dentro de los problemas y solicitudes de GitHub)
- La masterclass requiere que tengas una computadora (de lo contrario, se vuelve difícil colaborar, pero las tabletas también están bien) con una configuración de IDE, y recomendamos VS Code y recomendamos la extensión GitHub Pull Requests & Issues para colaborar con problemas y solicitudes directamente desde el IDE.

Se cubrirán los siguientes temas durante la masterclass:
- Un repaso de algunas características de la interfaz de GitHub, como los proyectos de GitHub y los problemas de GitHub
- Repasaremos los conceptos básicos del código abierto y seguiremos la Guía de código abierto
- Repasaremos Markdown
- Cubriremos el gobierno del código abierto y cómo funciona el proyecto Node.js y hablaremos sobre la Fundación OpenJS
- Incluyendo todas las formas en que uno puede contribuir al proyecto Node.js y cómo se pueden valorar sus contribuciones
- Durante esta masterclass, cubriremos problemas de nodejs/nodejs.dev, ya que la mayoría de ellos son de nivel básico y no requieren conocimientos profundos de C++ o de Node.js.
- Dicho esto, aún recomendamos a los asistentes entusiastas que deseen desafiarse a sí mismos a los "Good First Issues" de nodejs/node (repositorio principal) si lo desean.
- Permitiremos a cada asistente elegir un problema o trabajar junto con otros asistentes para abordar problemas juntos mediante la función de Pair Programming a través de la característica de VS Code Live Share
- También podemos hacer salas de descanso en Zoom para las personas que deseen colaborar juntas
- Claudio estará allí para brindar apoyo a todos los asistentes y, por supuesto, responder cualquier pregunta sobre problemas y desafíos técnicos que puedan enfrentar
- Las tecnologías utilizadas en nodejs/nodejs.dev son React/JSX, Markdown, MDX y Gatsby. (No se necesita ningún conocimiento de Gatsby, ya que la mayoría de los problemas son agnósticos a la plataforma)
- Al final de la masterclass, recopilaremos todos los colaboradores que hayan abierto con éxito una solicitud de extracción (incluso si es un borrador) y reconoceremos su participación en las redes sociales.