Question

Si vous avez un projet qui libère une bibliothèque et une application, comment vous gérez les numéros de version entre les deux.

Exemple: votre projet fournit une bibliothèque qui convertit différents formats de fichiers les uns en les autres. La bibliothèque est libérée pour être incluse dans d'autres applications. Mais vous libérez également une application de ligne de commande, qui utilise cette bibliothèque et implémente une interface pour la fonctionnalité.

Les nouvelles versions de la bibliothèque conduisent à de nouvelles versions de l'application (pour utiliser toutes les nouvelles fonctionnalités), mais les nouvelles versions de l'application peuvent ne pas déclencher de nouvelles versions de la bibliothèque. Comment les numéros de version sont-ils gérés: Complètement indépendant ou la version de la bibliothèque et de l'application doit-elle être dépendante d'une manière ou d'une autre?

Était-ce utile?

La solution

Je dirais que vous devez utiliser des numéros de version distincts et, bien sûr, indiquer la version minimale de la bibliothèque requise pour chaque version de l'application. S'ils ont toujours le même numéro de version et que vous testez uniquement l'application par rapport à la version de bibliothèque à numérotation égale, ils ne sont pas vraiment des composants distincts. Ne dites donc pas qu'ils le sont. Libérez le tout en un seul morceau.

Si vous les séparez, vous pouvez toujours leur attribuer le même numéro de version, le cas échéant. Par exemple, après une interruption majeure de la compatibilité, vous pouvez publier simultanément la version 2.0 des deux.

L'exemple suivant illustre: xsltproc (une application en ligne de commande) est publié dans le cadre de libxslt (une bibliothèque) et n'a donc pas son propre numéro de version. Mais libxslt dépend de deux autres bibliothèques et les numéros de version de celles-ci sont indépendants.

$ 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

Autres conseils

Numéros de version totalement indépendants, mais l'application en ligne de commande (ou toute autre application dépendante) doit indiquer la version de la bibliothèque pour laquelle elle a été compilée dans la section d'aide ou dans une bannière.

De cette manière, vous serez en mesure de déterminer les fonctionnalités des applications et de réduire le risque de confusion, en particulier étant donné que quelqu'un pourrait compiler une version plus récente de l'application sur une ancienne bibliothèque pour une raison quelconque. Vous pouvez également les découpler et ajouter des fonctionnalités à la bibliothèque sans dépendre de la publication d'une nouvelle version de l'application, etc.

Si vous êtes certain de vouloir toujours que toutes les applications et la bibliothèque soient verrouillées, vous pouvez utiliser les mêmes numéros, mais cela ajoute une contrainte pour une raison peu convaincante.

Nous avons construit une application qui utilise un framework. Nous conservons des numéros de version distincts pour les deux.

Cela fonctionne bien, surtout que maintenant le framework et l'application sont devenus assez grands pour être développés par différentes équipes.

Donc, à mon avis, gardez les numéros de version séparés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top