Espec-tacular - SemVer y Más Allá

Rate this content
Bookmark

Esta charla desentraña las complejidades de Semantic Versioning (SemVer) mientras se adentra en las complejidades prácticas del mundo real de navegar por el infierno de las dependencias. Obtén nuevos conocimientos sobre el origen y los desafíos de la versiones, descubre los poderes ocultos del esquema de versiones semánticas existente y vislumbra el futuro de la gestión de paquetes. Ya seas un desarrollador experimentado que vive y respira commits convencionales o un recién llegado ansioso por comprender este aspecto esencial de nuestro ecosistema de paquetes, esta charla promete elevar tu comprensión de todo lo relacionado con las especificaciones.

Darcy Clarke
Darcy Clarke
22 min
15 Feb, 2024

Comments

Sign in or register to post your comment.

Video Summary and Transcription

¡Bienvenido a DevOpsJS 2024! Discutiremos semántica y esquemas de versionado, en particular Semantic Versioning (SEMVR). Existen preocupaciones sobre las fallas en SEMVR y la necesidad de abrazar el cambio en el desarrollo de software. El infierno de las dependencias en el ecosistema de JavaScript se ha abordado mediante el versionado semántico y nuevas capacidades. Sin embargo, todavía existen problemas con la especificación SEMBR, incluyendo definiciones ausentes y problemas con los metadatos de construcción. Para mejorar el versionado, debemos abordar las definiciones faltantes y considerar una nueva especificación para el futuro.

Available in English: Spec-tacular - SemVer & Beyond

1. Introducción a la Semántica y la Versionización

Short description:

¡Bienvenidos a DevOpsJS 2024! Hablaremos sobre semántica y esquemas de versionado, en particular el versionado semántico (SEMBR). Soy Darcy Clark, un ingeniero de software con más de 20 años de experiencia. Inspirado por la charla de Rich Hickey, tengo algunas preocupaciones sobre sus puntos de vista sobre Semver. ¡Vamos a sumergirnos!

Bienvenidos, gracias por unirse a DevOpsJS 2024 y mostrar interés en mi charla de hoy. Nos adentraremos en uno de mis temas favoritos, que es la semántica y más específicamente los esquemas de versionado, siendo el más popular el versionado semántico, también conocido como SEMBR. Primero un poco sobre mí. Mi nombre es Darcy Clark. He sido ingeniero de software durante más de 20 años, desarrollando software tanto de código abierto como cerrado. Tuve una larga carrera como consultor, trabajando con marcas increíbles, agencias y grandes empresas. También cofundé una empresa llamada Themify hace unos 10 años, que ofrece temas comerciales de WordPress y todavía está activa hoy en día. Pasé los últimos cuatro años trabajando en NPM en GitHub, en los equipos de la interfaz de línea de comandos (CLI) tanto de GitHub como de NPM. Estoy construyendo un nuevo registro y cliente de paquetes JavaScript en una empresa que fundé el año pasado llamada Volt, y puedes obtener más información en VLT.SH. Esta charla en realidad fue inspirada por una charla de Rich Hickey. En 2016, hizo una presentación llamada Especulación, en la que profundiza en el versionado de software y en el propio versionado semántico. Si no has visto alguna de sus charlas antes, te recomiendo encarecidamente que vayas a YouTube y eches un vistazo a su trabajo. Esta charla en particular es increíble, y creo que él es un gran orador con ideas impresionantes. Dicho esto, tengo algunas preocupaciones con algunas de las conclusiones clave de la charla de Rich, su charla de especulación. Hasta donde puedo ver, nadie ha planteado problemas en los últimos siete años, así que espero no estar solo.

2. Desafíos con Semver y Abrazar el Cambio

Short description:

Rich cree que Semver tiene fallas y solo acepta cambios compatibles hacia atrás. Yo creo que el software debe reflejar la vida real, abrazando errores y cambios. La estancación y la excesiva permisividad pueden llevar a interfaces sobrecargadas. El versionado de software debe anticipar y comunicar los cambios necesarios.

El primero de ellos es que Rich cree ampliamente que Semver es una especificación deficiente. No estoy completamente en contra de él en este punto. Creo que hay mucho margen de mejora, y definitivamente profundizaremos en eso un poco más adelante. La segunda afirmación principal y conclusión es que nunca deberíamos lanzar cambios disruptivos, o si necesitamos lanzar cambios disruptivos, deberíamos hacerlo bajo un nuevo nombre. En otras palabras, él cree que los únicos cambios aceptables en el software deberían ser los compatibles hacia atrás. Y, por supuesto, por último, está de acuerdo con la idea de la estancación del software, lo cual está en línea con el segundo punto. Para mí, creo que la creación y versionado del software deberían imitar la vida real. A veces las cosas cambian y los cambios no son perfectos. Rompemos cosas, y eso es parte de la vida. No deberíamos tener miedo de cometer errores, y deberíamos sentirnos obligados a crear entornos donde sea fácil aprender con un impacto externo mínimo cuando nos equivocamos. En el caso de la estancación, es un fenómeno natural, pero no es algo que debamos promover o pensar que es positivo. La estancación del software es lo mismo. Negarse a fomentar y mantener el software significa que probablemente tendrá un final similar al del mundo real. La muerte, o peor aún, la irrelevancia. Cuando hablamos de flexibilizar las restricciones o crear una API más amplia, volvemos a encontrarnos en un territorio antinatural e incómodo nuevamente. Ser más permisivos con el software significa que con el tiempo terminarás con una interfaz pública sobrecargada que debes mantener. Esta es una carga autoimpuesta que solo puede ser reflejada a través de cambios disruptivos. Esto es similar a cómo es posible que necesites romper malos hábitos en el mundo físico. Pero eso termina prolongando tu vida útil. Por último, considero totalmente antinatural contaminar nuestros ecosistemas con espacios de nombres falsos. Nuestros esquemas de versiones deberían liberarnos de los contratos restrictivos que tenemos con interfaces históricas, siempre y cuando el propósito subyacente del proyecto no haya cambiado. Este punto de vista que tengo proviene de mi comprensión de que el software y el versionado de software son caóticos, al igual que la vida. El software cambia con el tiempo, y esto refleja cómo todos aprendemos y crecemos orgánicamente. Los cambios en el software pueden romper cosas, al igual que en el mundo real. No todos los cambios son esperados, y a veces rompen. Pero debemos respetar y aceptar que los cambios disruptivos son parte de la vida y son parte del crecimiento. Tener un esquema en su lugar que anticipe eso como algo necesario, es fundamental para crear un ecosistema próspero de software versionado. A veces, los cambios incluso pueden quitar cosas, lo cual es otro tipo de ruptura y cambio. Pero nuevamente, esto refleja la vida real. Y en última instancia, una especificación de versionado de software

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

pnpm: un gestor de paquetes rápido y eficiente para JavaScript
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
pnpm: un gestor de paquetes rápido y eficiente para JavaScript
Aprenderás sobre uno de los gestores de paquetes más populares para JavaScript y sus ventajas sobre npm y Yarn.Una breve historia de los gestores de paquetes de JavaScriptLa estructura aislada de node_modules creada por pnpmQué hace que pnpm sea tan rápidoQué hace que pnpm sea eficiente en el uso del espacio en discoSoporte para monoreposGestión de versiones de Node.js con pnpm
Yarn 4 - Gestión Moderna de Paquetes
JSNation 2022JSNation 2022
28 min
Yarn 4 - Gestión Moderna de Paquetes
Top Content
Yarn 4 es la próxima versión mayor de tu gestor de paquetes JavaScript favorito, con un enfoque en rendimiento, seguridad y experiencia del desarrollador. A lo largo de esta charla repasaremos sus nuevas características, cambios importantes y compartiremos nuestros planes a largo plazo para el proyecto.Si solo has oído hablar de Yarn sin probarlo aún, si no estás seguro de por qué la gente hace tanto alboroto con los gestores de paquetes, si te preguntas cómo tu gestor de paquetes puede hacer tu trabajo más sencillo y seguro, ¡esta es la charla perfecta para ti!
Vite - La Herramienta de Desarrollo Frontend de Próxima Generación
React Advanced Conference 2021React Advanced Conference 2021
21 min
Vite - La Herramienta de Desarrollo Frontend de Próxima Generación
¿Cómo construiremos aplicaciones web en el futuro? Aprendamos cómo esbuild y los bundlers como Vite, construidos sobre él, funcionan para ver cómo pueden acelerar nuestros flujos de trabajo de desarrollo.
Comprendiendo la Resolución de Paquetes en Node.js
Node Congress 2024Node Congress 2024
11 min
Comprendiendo la Resolución de Paquetes en Node.js
Cada vez que importamos o requerimos un paquete, seguimos un conjunto de reglas para resolver el paquete. Esta charla cubrirá las diferentes formas en que Node.js resuelve los paquetes y cómo depurar cuando las cosas salen mal. También cubriremos las nuevas características en Node.js 20 que hacen que la resolución de paquetes sea más rápida y confiable.
Gestión de paquetes en Monorepos
DevOps.js Conf 2024DevOps.js Conf 2024
19 min
Gestión de paquetes en Monorepos
Hablaremos sobre algunos de los puntos problemáticos y exploraremos recetas para una gestión de paquetes efectiva en Monorepos.
Discutiremos cómo funciona la gestión de paquetes con npm, pnpm y Yarn. Además, te mostraré una nueva herramienta que es menos conocida pero mejora mucho la experiencia del desarrollador.
La Vida Secreta de los Gestores de Paquetes
Node Congress 2022Node Congress 2022
9 min
La Vida Secreta de los Gestores de Paquetes
¿Alguna vez te has preguntado qué sucede después de ejecutar npm install y vas a tomar un café? Vamos a sumergirnos en el proceso de instalación de Npm y Yarn, y cómo puedes poner este conocimiento en práctica.