Pregunta

Si tiene un proyecto, que libera una biblioteca y una aplicación, cómo maneja los números de versión entre los dos.

Ejemplo: su proyecto entrega una biblioteca que convierte diferentes formatos de archivo entre sí. La biblioteca está disponible para su inclusión en otras aplicaciones. Pero también libera una aplicación de línea de comandos, que utiliza esta biblioteca e implementa una interfaz para la funcionalidad.

Los nuevos lanzamientos de la biblioteca conducen a nuevos lanzamientos de la aplicación (para hacer uso de todas las nuevas características), pero los nuevos lanzamientos de la aplicación pueden no activar nuevos lanzamientos de la biblioteca. Ahora, ¿cómo se manejan los números de las versiones: completamente independientes o si la versión de la biblioteca y la aplicación debe depender de alguna manera?

¿Fue útil?

Solución

Yo diría que use números de versión separados y, por supuesto, documente qué versión mínima de biblioteca se requiere para cada versión de la aplicación. Si siempre tienen el mismo número de versión, y solo se prueba la aplicación con la versión de la biblioteca de igual número, entonces no son realmente componentes separados, así que no digas que sí lo son. Suelte todo el lote como un solo bulto.

Si los separas, aún puedes darles el mismo número de versión cuando sea apropiado, por ejemplo, después de una ruptura de compatibilidad importante, puedes lanzar la versión 2.0 de ambos simultáneamente.

El siguiente ejemplo ilustra: xsltproc (una aplicación de línea de comandos) se lanza como parte de libxslt (una biblioteca), por lo que no tiene su propio número de versión. Pero libxslt depende de otras dos bibliotecas, y los números de versión de las mismas son independientes.

$ xsltproc --version
Using libxml 20628, libxslt 10120 and libexslt 813
xsltproc was compiled against libxml 20628, libxslt 10120 and libexslt 813
libxslt 10120 was compiled against libxml 20628
libexslt 813 was compiled against libxml 20628

Otros consejos

Números de versión completamente independientes, pero la línea de comandos (o cualquier otra aplicación dependiente) debe indicar contra qué versión de la biblioteca se compiló en la sección de ayuda o un banner.

De esa manera, podrá saber qué funcionalidad tendrán las aplicaciones y reducir la posible confusión, especialmente dado que alguien podría compilar una versión más nueva de la aplicación contra una biblioteca antigua por cualquier motivo. Además, los desacopla y puede agregar funciones en la biblioteca sin depender del lanzamiento de una nueva versión de la aplicación, etc.

Si está seguro de que siempre deseará que todas las aplicaciones y la biblioteca queden cerradas, entonces podría usar los mismos números, pero eso agrega una restricción por una razón no muy fuerte.

Construimos una aplicación que usa un framework. Mantenemos números de versión separados para ambos.

Esto funciona bien, especialmente que ahora el marco y la aplicación han crecido lo suficiente como para ser desarrollados por diferentes equipos.

Entonces, mi opinión ... mantenga los números de versión separados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top