En el desarrollo de software, las versiones son cruciales para identificar la evolución de un proyecto. El sistema de versiones X.Y.Z es un estándar conocido como versionado semántico. Este formato sirve para comunicar claramente los cambios que se han hecho en el software.

Versiones semánticas

Estructura del Versionado Semántico

El sistema X.Y.Z se divide en tres números separados por puntos: MAJOR.MINOR.PATCH. Cada segmento tiene un significado específico:

  • MAJOR (X.y.z): Cambia cuando se hacen cambios incompatibles en la API.
  • MINOR (x.Y.z): Cambia cuando se añade funcionalidad de manera retrocompatible.
  • PATCH (x.y.Z): Cambia cuando se hacen correcciones de errores de manera retrocompatible.

Cuándo Cambiar Cada Número

Ahora que entendemos la estructura básica, veamos cuándo se deben cambiar estos números con ejemplos específicos.

1. Cambios MAJOR

Un cambio MAJOR (1.0.0 -> 2.0.0) ocurre cuando se realizan modificaciones que rompen la compatibilidad con versiones anteriores. Por ejemplo, si el software 'AlgunaApp' tiene una versión 1.0.0 y decide cambiar completamente su API o funcionamiento interno de la APP, la nueva versión sería 2.0.0. Esto significa que la version 1.0.0 deja de ser compatible y los usuarios deben actualizar lo más pronto posible para que siga el funcionamiento correcto de la APP.

2. Cambios MINOR

Un cambio MINOR (1.1.0 -> 1.2.0) se aplica cuando se agrega nueva funcionalidad de forma compatible con versiones anteriores. Por ejemplo, si 'AlgunaApp' en la versión 1.1.0 añade una nueva funcionalidad para mostrar la humedad, la siguiente versión sería 1.2.0. Esto lo que significa que los usuarios que no actualicen la APP les seguirá funcionando, pero si quieren hacer uso de las nuevas funcionalidades deben actualizar. 

3. Cambios PATCH

Un cambio PATCH (1.0.1 -> 1.0.2) se realiza para corregir errores, también de manera compatible con versiones anteriores. Si 'AlgunaApp' en la versión 1.2.1 corrige un bug menor en el cálculo de temperaturas, la nueva versión sería 1.2.2, esto significa que la version antigua contiene un error que no "Rompe" la lógica del negocio.

Ejemplos Reales

  • React 15.0.0 a 16.0.0: Cambio MAJOR debido a la introducción de cambios importantes en la API.
  • Angular 9.0.0 a 9.1.0: Cambio MINOR debido a la adición de nuevas funcionalidades como la inclusión de un nuevo método en la biblioteca.
  • Vue 3.0.3 a 3.0.4: Cambio PATCH para corregir errores menores sin alterar la funcionalidad existente.

El uso del versionado semántico ayuda a mantener la claridad en el desarrollo de software y facilita la gestión de actualizaciones y cambios. Siguiendo estas pautas, los desarrolladores pueden comunicar eficazmente el estado y las modificaciones de su software.

Las versiones del software son la clave para una buena comunicación entre los equipos de desarrollo y los usuarios.
Jodacame

Recuerda mantener un changelog actualizado para mejorar la documentación de tus release.