Estamos tratando de decidir una buena forma de numerar versiones para componentes de software, que dependen unos de otros.
Seamos más específicos:
El componente de software A es un firmware que se ejecuta en un dispositivo integrado y el componente B es su controlador respectivo para una PC normal (máquina Linux / Windows). Se comunican entre sí mediante un protocolo personalizado. Dado que nuestro producto también está dirigido a desarrolladores, ofreceremos versiones estables e inestables (experimentales) de ambos componentes (el firmware es de código cerrado, mientras que el controlador es de código abierto). Nuestra mayor dificultad es cómo manejar los cambios de API en el protocolo de comunicación.
Mientras estábamos implementando una verificación de compatibilidad en el controlador, que verifica si la versión del firmware es compatible con la versión del controlador, comenzamos a analizar varias formas de numeración de versiones.
Se nos ocurrió una solución, pero también tuvimos ganas de reinventar la rueda. Es por eso que me gustaría recibir algunos comentarios de la comunidad de programadores / desarrolladores de software, ya que creemos que este es un problema común.
Entonces aquí está nuestra solución:
Planeamos seguir la numeración de versiones major.minor.patch ampliamente utilizada y usar números menores pares / impares para las versiones estables / inestables. Si introducimos cambios en la API, aumentaremos el número menor.
Esta convención conducirá a la siguiente situación de ejemplo:
La rama estable actual es 1.2.1 y la inestable es 1.3.7. Ahora, un nuevo parche para inestable cambia la API, lo que hará que el nuevo número de versión inestable se convierta en 1.5.0. Una vez, la rama inestable se considera estable, digamos en 1.5.3, la lanzaremos como 1.4.0.
Estaría contento con una respuesta a cualquiera de las preguntas relacionadas a continuación:
- ¿Puede sugerir una mejor práctica para manejar los problemas descritos anteriormente?
- ¿Crees que nuestra convención "personalizada" es buena?
- ¿Qué cambios aplicarías a la convención descrita?