¿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.

Keren Kenzi
Keren Kenzi
10 min
23 Oct, 2023

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.

Available in English

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

How to Build Your Own Open Source Project
React Advanced Conference 2022React Advanced Conference 2022
16 min
How to Build Your Own Open Source Project
We all used open source projects every day such as npm packages, editors, web applications, and even operating systems... Have you ever thought of building one of your own? In this talk, I will share my journey building jest-preview, from when it was just a vague idea, to currently a well-adopted library to help frontend engineers write tests faster. I will share with you how to come up with an idea for a project to work on, what is the struggles you have to overcome as an author of an open source project, how to manage time efficiently, and how you get attention from engineers around the world.
Lessons from Maintaining TypeScript Libraries
TypeScript Congress 2022TypeScript Congress 2022
30 min
Lessons from Maintaining TypeScript Libraries
Maintaining widely-used JS libraries is already complicated, and TypeScript adds an additional set of challenges.

Join Redux maintainer Mark Erikson for a look at some of the unique problems TS library maintainers face, and how the Redux team has handled those problems. We'll cover:

- Tradeoffs of different ways to define TS types for a library
- How to target different versions of TS, and considerations for determining the supported version range
- Migrating existing JS libraries to TS
- Differences between writing "app" types and "library" types
- Managing and versioning public types APIs
- Tips and tricks used by types from the Redux libraries
- TS limitations and possible language-level improvements
Nuxt 3 Modules and Open-Source
Vue.js London 2023Vue.js London 2023
31 min
Nuxt 3 Modules and Open-Source
Nuxt modules are the de-facto way of extending our Nuxt applications with new behaviors and functionalities. Have you ever built your own? Why would you bother with hundreds of modules already out there? Let's answer those questions together and see why making your own modules in Nuxt 3 can both help you have a deeper understanding of how Nuxt works while also paving the way for you to get into open source!
Making an Open Source Library Financially Sustainable
React Day Berlin 2022React Day Berlin 2022
8 min
Making an Open Source Library Financially Sustainable
React Flow is an open source library used by thousands of developers and hundreds of companies. How do we make sure it stays alive, and also free? I’ll share some insights along our journey from open sourcing React Flow to passing the “black zero,” including findings from our user research where we spoke to some of the people who support us every month.
Break the Race: Easy Race Condition Detection for React
React Day Berlin 2023React Day Berlin 2023
31 min
Break the Race: Easy Race Condition Detection for React
Race conditions are among some of the most challenging to detect and reproduce issues. As such they pose a significant challenge in development notably in UI. In this talk, we explore how to detect race conditions by leveraging fuzzing techniques. We walk you through discovering the real problem of race conditions and how they impact user experience. We provide you tools and examples demonstrating how to easily detect them in your daily work thanks to tests relying on fuzzing. After that talk, we hope your React code will be race conditions free or at least that you will have the right tools to help you.
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: Landing your first Open Source contribution & how the Node.js project works
Node Congress 2023Node Congress 2023
85 min
Node.js: Landing your first Open Source contribution & how the Node.js project works
Workshop
 Claudio Wunder
Claudio Wunder
This workshop aims to give you an introductory module on the general aspects of Open Source. Follow Claudio Wunder from the OpenJS Foundation to guide you on how the governance model of Node.js work, how high-level decisions are made, and how to land your very first contribution. At the end of the workshop, you'll have a general understanding of all the kinds of work that the Node.js project does (From Bug triage to deciding the Next-10 years of Node.js) and how you can be part of the bigger picture of the JavaScript ecosystem.

The following technologies and soft skills might be needed):
  - Basic understanding of Git & GitHub interface
  - Professional/Intermediate English knowledge for communication and for allowing you to contribute to the Node.js org (As all contributions require communication within GitHub Issues/PRs)
  - The workshop requires you to have a computer (Otherwise, it becomes difficult to collaborate, but tablets are also OK) with an IDE setup, and we recommend VS Code and we recommend the GitHub Pull Requests & Issues Extension for collaborating with Issues and Pull Requests straight from the IDE.

The following themes will be covered during the workshop:
- A recap of some of GitHub UI features, such as GitHub projects and GitHub Issues
- We will cover the basics of Open Source and go through Open Source Guide
- We will recap Markdown
- We will cover Open Source governance and how the Node.js project works and talk about the OpenJS Foundation
  - Including all the ways one might contribute to the Node.js project and how their contributions can be valued
- During this Workshop, we will cover Issues from the nodejs/nodejs.dev as most of them are entry-level and do not require C++ or deep technical knowledge of Node.js.
  - Having that said, we still recommend enthusiast attendees that want to challenge themselves to "Good First Issues" from the nodejs/node (core repository) if they wish.
  - We're going to allow each attendee to choose an issue or to sit together with other attendees and tackle issues together with Pair Programming through VS Code Live Share feature
    - We can also do Zoom breakrooms for people that want to collaborate together
  - Claudio will be there to give support to all attendees and, of course, answer any questions regarding Issues and technical challenges they might face
  - The technologies used within nodejs/nodejs.dev are React/JSX, Markdown, MDX and Gatsby. (No need any knowledge of Gatsby, as most of the issues are platform agnostic)
- By the end of the Workshop, we'll collect all (make a list) the contributors who successfully opened a Pull Request (even if it's a draft) and recognise their participation on Social media.