Question

Notre équipe se déplace dans des projets beaucoup plus grande taille, dont beaucoup utilisent plusieurs projets open source en leur sein.

Tous les conseils ou les meilleures pratiques pour garder les bibliothèques et les dépendances relativement modulaire et facilement upgradable lorsque de nouvelles versions pour eux sont dehors?

Pour le dire d'une autre manière, permet de dire que vous faites un programme qui est une fourchette d'un projet open source. Comme les deux projets se développent, ce qui est la meilleure façon de maintenir et partager des mises à jour au coeur?

conseils en ce qui concerne ce que je vous demande seulement s'il vous plaît ... Je ne ai pas besoin « Eh bien, vous devriez le faire à la place » ou « pourquoi êtes-vous » .. merci.

Était-ce utile?

La solution

Avec des clones de projets open source un de vos plus grands maux de tête garderez en phase / patché selon les sources en amont. Vous pourriez ne pas se soucier de nouvelles fonctionnalités, mais vous vous besoin des corrections de bugs critiques appliquées.

Ma suggestion serait d'envelopper soigneusement ces projets intérieurs dans des bibliothèques partagées, de sorte que vous pouvez plus ou moins mise à niveau sans douleur seulement les parties si l'ABI est pas rompu par les changements.

Une autre chose - si vous trouvez et de corriger des bugs dans un projet open source - ne gardez pas les correctifs pour vous. Pousser les plaques en amont. Cela fera le projet mieux et vous permettra d'économiser jours de la fusion avec une nouvelle version.

Autres conseils

Par ordre de préférence

  1. le moins de changements possible aux bibliothèques de tiers. Essayez et contourner leurs limites dans votre code. Documentez vos modifications, puis soumettre un patch.
  2. Si vous ne pouvez pas contourner leurs limites, soumettre votre changement comme un patch (cela peut être idéaliste avec le rythme glaciaire de certains projets).
  3. Si vous ne pouvez pas faire l'une de ces choses, le document que vous avez changé dans un emplacement centralisé afin que la pauvre fait l'intégration des nouvelles versions peut comprendre ce que le diable vous faisiez, et si les changements apportés sont encore nécessaires.

1 et 2 sont fortement préférés (cependant, respectivement rapide et très lent), alors que la troisième option ne conduira à des maux de tête et des bugs que votre base de code dévie de la base de code des dépendances. Dans mon code, je n'ai même pas le code 3ème partie chargé dans l'IDE à moins que je dois prendre connaissance d'un fichier d'en-tête. Cela supprime la tentation de changer les choses qui ne sont pas à moi.

En ce qui concerne la modularité, et cela suppose que vous utilisez les bibliothèques 3ème partie relativement stables, le seul programme à l'interface public face. Tout simplement parce que vous avez la source ne signifie pas que vous devez utiliser tout votre code. Cela devrait permettre d'être glisser-déposer essentiellement des mises à jour. Maintenant, ce qui est totalement idéaliste mais son ce que j'efforcez avec le code pour que je travaille sur.

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