Question

J'ai cherché des façons d'en apprendre davantage sur la bonne façon de gérer un projet de logiciel, et je l'ai trébuché sur le blog suivant. J'ai appris certaines des choses mentionnées à la dure, d'autres ont un sens, et d'autres encore sont encore peu claires pour moi.

Pour résumer, les listes d'auteur d'un bouquet de fonctionnalités d'un projet et combien ces caractéristiques contribuent à un manque d'un meilleur terme d'un projet « de suckiness ». Vous pouvez trouver ici l'article complet: http://spot.livejournal.com/308370.html

En particulier, je ne comprends pas la position de l'auteur sur les dépendances avec votre regroupement projet. Ceux-ci sont:

== == Bundling

  • Votre source provient uniquement avec d'autres projets de code qu'il dépend de [+20 points de FAIL]

    Pourquoi est-ce un problème, en particulier étant donné le point 3, que vous avez modifié vos projets dépendances pour répondre à vos besoins du projet, ne serait-il pas donc logique encore plus que votre code doit être distribué avec ses dépendances?

  • Si votre code source ne peut pas être construit sans construire d'abord les bits de code [empaquetés +10 points de FAIL]

    Ne est-ce nécessairement être le cas pour le logiciel intégré contre libs 3ème partie? Votre code doit que tout autre code à compiler dans sa bibliothèque avant l'éditeur de liens peut fonctionner?

  • Si vous avez modifié ces autres bits de code [empaquetés points de +40 FAIL]

    Si cela est nécessaire pour votre projet, il suit naturellement que vous avez dit emmitouflé code avec le vôtre. Si vous souhaitez personnaliser un build de certains lib, disons wxWidgets, vous devrez éditer que les scripts de compilation des projets Bulid la bibliothèque que vous voulez. Par la suite, vous devrez publier ces modifications aux personnes qui souhaitent construire votre code, alors pourquoi ne pas utiliser un script de faire de haut niveau avec les params déjà écrit dans et distribuer? De plus, (en particulier dans une fenêtre env) si votre base de code dépend d'une version particulière d'un lib (que vous avez aussi besoin de compiler pour votre projet) ne serait-il plus facile de donner à l'utilisateur le code vous-même (parce que dans ce cas, il est peu probable que l'utilisateur aura déjà la bonne version installée)?

Alors, comment voulez-vous répondre à ces commentaires, et quels sont les points que je sois à défaut de prendre en considération? Seriez-vous d'accord ou en désaccord avec la prise de l'auteur (ou le mien), et pourquoi?

Edité des éclaircissements.

Était-ce utile?

La solution

  

Votre source provient uniquement avec d'autres projets de code qu'il dépend.

Mon projet nécessite projet X.

Cependant, depuis mon projet dépend de mystères intérieurs secrets de X, ou une version précédente de X, alors mon projet comprend une copie de X. Plus précisément libérer N.m de X. Et aucun autre.

Essayez d'installer le dernier et le plus grand X et voir ce que les pauses dans mon projet. Depuis la mise à niveau X a cassé mon projet, oublier mon projet. Ils ne vont pas lutter avec quelque chose qui brise spontanément après une mise à jour. Ils trouveront une meilleure composante open source.

D'où un score FAIL.

  

Si votre code source ne peut pas être construit sans construire d'abord les bits de code empaquetés.

Mon projet ne repose sur l'API X. Elle repose sur profonde, liaison intérieure à des parties spécifiques de X, sans passer par l'API.

Si mon projet dépendait de l'API à X, puis - pour certaines langues comme C ou C ++ -. Mon projet pourrait compiler avec seulement les en-têtes C ou C ++, pas les binaires

Pour Java cela est moins vrai, car il n'y a pas indépendant, en-tête non binaire. Et pour les langages dynamiques (comme Python) cela n'a aucun sens technique.

Cependant, même Java et Python ont des moyens à l'interface séparée de mise en œuvre. Si je compte, je l'ai encore créé la mise en œuvre (pas d'interface) le même problème essentiel.

Si mon projet dépend de C ou C ++ binaires, et ils construisent des choses de l'ordre, ou mettre à jour un autre composant sans reconstruire le mien, les choses peuvent aller mal pour eux. Ils voient la bizarrerie, la rupture, « l'instabilité ». Mon produit semble cassé. Ils ne seront pas (et ne peut pas) débugger. Ils sont faits. Ils trouvent quelque chose de plus stable.

D'où un score FAIL.

  

Si vous avez modifié ces autres bits de code fourni.

J'ai deux choix quand je modifie X.

  1. faire accepter dans le cadre de X.

  2. Fixer mon programme à travailler avec X non modifié.

Si mon projet dépend d'un X modifié, on ne peut installer X simplement, correctement et de manière indépendante. Ils ne peuvent pas mettre à jour X, ils ne peuvent pas maintenir X. Ils ne peuvent probablement pas appliquer des corrections de bugs ou des correctifs de sécurité à X.

Je l'ai essentiellement fait leur travail impossible en modifiant X.

D'où le score FAIL.

  

Par la suite, vous devrez publier ces changements aux personnes qui souhaitent construire votre code.

En fait, ils vont me détester pour ça. Ils ne veulent pas connaître les mystérieux changements à X. Ils veulent construire X selon les règles, puis construire mes affaires selon les règles. Ils ne veulent pas lire, penser ou assurez-vous que le kit de patch de mise à jour de mystère a été appliqué correctement.

Au lieu de plaisanter avec ça, ils vont télécharger un paquet concurrent. FAIL.

  

si votre base de code dépend d'une version particulière d'un lib (que vous avez aussi besoin de compiler pour votre projet)

C'est vraiment minable. Si je dépends une version avec compilable sur mesure, ils sont fait regarder mon paquet. Ils y trouveront quelque chose sans mystères intérieurs spécifiques version et compiles personnalisés avant qu'ils luttent. FAIL.

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