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/userssigue 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
-alphaadvierte 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.
- ¿Un error visual en el CSS? → Lanzas la
