¿Qué es el versionamiento semántico?

  • #general

Si alguna vez te has preguntado cómo funciona el versionamiento en los gestores de paquetes, aquí te contamos el secreto.

Cuando te propones crear una aplicación, sitio web, librería de software o algo de ese estilo, tal vez te has planteado utilizar versionamiento. Pero... ¿cuándo alcanzamos la versión 1.0? A menudo la gente se inventa los números.

Esto no debería ser un problema cuando a nadie más le afecta si a tu software le has dado la versión 1.0 o 0.1, pero hoy en día contamos con unas magníficas piezas de software llamadas gestores de paquetes/librerías.

Por ejemplo, npm (gestor de paquetes para Node.js) es un sistema mediante el cual podemos instalar librerías, que a su vez dependen de otras. Estos paquetes a lo mejor necesitan una versión específica, superior o inferior de otros paquetes de los que depende, y si cada dueño le da a su proyecto los números de versión que le apetece, sería un caos.

Semantic Versioning

Ante tal necesidad, nació el versionamiento semántico, un proyecto que pretende solucionar este dilema mediante convención y buenas prácticas.

Major, minor y patch, las claves de semver

A grandes rasgos, SemVer propone utilizar X.Y.Z para el versionamiento, sumarizado en lo siguiente:

  • X: Versión major. Utilizado cuando se introducen cambios que no son compatibles con versiones anteriores.
  • Y: Versión minor. Utilizado cuando se añaden nuevas funcionalidades y no se rompe la compatibilidad.
  • Z: Versión patch. Corrección de errores compatible con versiones anteriores.

También se permite especificar un nombre de versión, por ejemplo:

  • 1.0.1-alpha
  • 1.0.1-beta
  • 1.0.1-salchichas

Esto quiere decir que por ejemplo, si nuestra aplicación utiliza la librería "foobar", podríamos actualizar dicha librería sin riesgos siempre y cuando el cambio que se produzca sea un minor o un patch. ¿Muy cómodo verdad?

Puedes consultar el resto de la especificación así como una lista de preguntas frecuentes en semver.org.

Compartir en