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.

This talk has been presented at DevOps.js Conf 2024, check out the latest edition of this JavaScript Conference.

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
pnpm is a fast and efficient package manager that gained popularity in 2021 and is used by big tech companies like Microsoft and TikTok. It has a unique isolated node module structure that prevents package conflicts and ensures each project only has access to its own dependencies. pnpm also offers superior monorepo support with its node module structure. It solves the disk space usage issue by using a content addressable storage, reducing disk space consumption. pnpm is incredibly fast due to its installation process and deterministic node module structure. It also allows file linking using hardlinks instead of symlinks.
Yarn 4 - Gestión Moderna de Paquetes
JSNation 2022JSNation 2022
28 min
Yarn 4 - Gestión Moderna de Paquetes
Top Content
Yarn is a package manager that focuses on stability, performance, and security. It offers unique features like plug and play installation, support for nonmodules, and the exec protocol. Yarn is committed to being a good citizen in the open-source community and contributes to fixing dependencies. It is part of the Node.js Loader's working group and advocates for Corepack. Yarn is still experimental but is improving its user experience and security features. Contributions are welcome, and switching to Yarn can improve performance in large projects.
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
In this Talk, the speaker discusses package resolution in Node.js, covering topics such as CommonJS, ES modules, package.json structure, and package.json loader. The Talk also touches on conditional loading and file extension resolution, module import and export, module type determination based on file extensions and package.json, module resolution strategies in Node.js, and tips for improving loading time in ESM applications.
Vite - La Herramienta de Desarrollo Frontend de Próxima Generación
React Advanced Conference 2021React Advanced Conference 2021
20 min
Vite - La Herramienta de Desarrollo Frontend de Próxima Generación
VIT is a build tool that solves the problem of slow feedback loop speed by leveraging native support for ES modules in modern browsers. It allows you to write code as native ES modules and handles the parsing and serving of modules for you. VIT supports JavaScript, CSS, SAS, React, TypeScript, and TSX out of the box. It also allows for quick migration from CRA to VIT and can be used as a middleware in an existing Node.js server to enable server-side rendering.
Versionado y Publicación de Paquetes con Nx Release
DevOps.js Conf 2024DevOps.js Conf 2024
10 min
Versionado y Publicación de Paquetes con Nx Release
In this Talk, Austin Faisal introduces Nx Release and demonstrates how to improve versioning and publishing processes with it. The tool allows for a dry run to preview changes, keeps packages in sync, and generates changelogs. It also automates staging, committing, tagging, and publishing changes to the registry. Nx Release offers additional features such as independent versioning, automatic versioning with conventional commits, creating GitHub releases, customizable changelog rendering, and a programmable API.
Gestión de paquetes en Monorepos
DevOps.js Conf 2024DevOps.js Conf 2024
19 min
Gestión de paquetes en Monorepos
This Talk discusses pain points and effective package management in monorepos, including the use of hoisted or isolated layouts and the challenges of working with peer dependencies. It introduces the tool Bit, which addresses these issues and handles dependency management and version control. Bit enables automatic installation and management of dependencies, supports multiple versions of a peer dependency, and seamlessly updates components across different environments.