Versionado de Software: SemVer y el Ciclo de Vida

El “Contrato” del Versionado Semántico

El SemVer no es solo un número; es un compromiso. Al usar el formato X.Y.Z, le estás diciendo a quien use tu código (ya sea un cliente o un colega) qué esperar al actualizar.

El Número MAYOR (X): La Ruptura (Breaking Changes)

Este número cambia cuando el código nuevo no es compatible con el anterior. Si alguien actualiza a una nueva versión “Major”, es muy probable que su aplicación deje de funcionar a menos que haga cambios manuales.

  • Cambios en la Firma: Renombrar una función principal o cambiar el orden/tipo de los parámetros requeridos.
  • Esquema de Base de Datos: Eliminar columnas de una tabla o cambiar tipos de datos que afectan consultas existentes.
  • Eliminación de Funciones: Quitar una parte del código que habías marcado como “obsoleta” (deprecated) en versiones anteriores.
  • Cambios de Dependencias: Migrar de un framework a otro (por ejemplo, pasar de una librería de renderizado a otra totalmente distinta).

El Número MENOR (Y): La Evolución (New Features)

Se incrementa cuando añades valor al producto sin romper lo que ya existe. Es una actualización “segura”.

  • Nuevos Endpoints: Agregar una nueva ruta a una API (ej. /api/v1/users sigue funcionando, pero ahora existe /api/v1/reports).
  • Parámetros Opcionales: Agregar una nueva funcionalidad a una función existente que, si no se usa, no afecta el resultado previo.
  • Nuevas Vistas o Componentes: En el frontend, agregar una nueva pantalla o un botón que antes no estaba.
  • Optimizaciones de Rendimiento: Si el código ahora corre más rápido pero se llama igual, es un cambio menor.

El Número PARCHE (Z): La Estabilidad (Bug Fixes)

Este es el número que más se mueve. Representa el mantenimiento diario y la corrección de errores que no alteran cómo se usa la aplicación.

  • Corrección de Seguridad: Parchear una vulnerabilidad.
  • Refactorización Interna: Limpiar el código para que sea más legible sin cambiar su comportamiento externo.
  • Errores de Lógica: Corregir un cálculo matemático que devolvía un resultado erróneo bajo ciertas condiciones.
  • Ajustes Visuales: Corregir un error de alineación en el CSS o una falta de ortografía en la interfaz.

El Mapa de Ruta: Del Código al Usuario Final

La relación entre el versionado y el ciclo de vida se visualiza mejor como una línea de tiempo donde el número de versión va ganando “apellidos” (sufijos) antes de quedar limpio para el público.

Fase 1: El Nacimiento (Alpha y la Versión 0)

Cuando empiezas un proyecto nuevo (como cuando inicias el backend en .NET o la estructura en PHP de tus aplicaciones), no tienes una versión estable.

  • Estado: Alpha.
  • Versión Sugerida: 0.1.0-alpha.
  • Lógica: Estás en la “Versión Cero”. Aquí, el número Menor (1) sube cada vez que terminas una funcionalidad básica, y el Parche (0) sube con cada corrección interna. El sufijo -alpha advierte que el código puede romperse en cualquier momento.

Fase 2: El Pulido (Beta y el Salto a la 1.0.0)

Una vez que la aplicación tiene todas las funciones principales y es “funcionalmente completa”, pasamos a las pruebas externas.

  • Estado: Beta.
  • Versión Sugerida: 1.0.0-beta.1.
  • Lógica: Ya te estás preparando para el gran lanzamiento (v1.0.0). Las versiones Beta sirven para recolectar feedback. Si encuentras errores durante las pruebas de usuario, subes el sufijo: 1.0.0-beta.2, 1.0.0-beta.3, etc.

Fase 3: La Recta Final (Release Candidate)

Es el último filtro. La aplicación ya no debería recibir funciones nuevas, solo correcciones críticas.

  • Estado: RC (Release Candidate).
  • Versión Sugerida: 1.0.0-rc.1.
  • Lógica: Si esta versión no presenta errores graves en un periodo de tiempo (por ejemplo, una semana), se le quita el sufijo y se convierte oficialmente en la versión Stable.

Fase 4: Producción y Mantenimiento (Stable/GA)

El software ya está en manos del usuario final. Aquí es donde el SemVer brilla en su forma pura.

  • Estado: Stable / GA.
  • Versión: 1.0.0.
  • Lógica de mantenimiento:
    • ¿Un error visual en el CSS? → Lanzas la 1.0.1.
    • ¿Añadiste un nuevo reporte o vista? → Lanzas la 1.1.0.
    • ¿Cambiaste la estructura de la base de datos y las versiones viejas ya no conectan? → Lanzas la 2.0.0.

Leave a Reply

Your email address will not be published. Required fields are marked *