29 votes

Booster la dépendance pour un projet open source C ++?

Boost est censé être la bibliothèque C ++ standard non standard que chaque utilisateur C ++ peut utiliser. Est-il raisonnable de supposer qu'il est disponible pour un projet C ++ open source, ou s'agit-il d'une trop grande dépendance trop loin?

44voto

Konrad Rudolph Points 231505

Fondamentalement, votre question se résume à "est-il raisonnable d'avoir [bibliothèque libre xyz] en tant que dépendance d'un C++ projet open source."

Considérons maintenant la citation suivante de Stroustrup et la réponse est vraiment pas sorcier:

Sans une bonne bibliothèque, la plupart des tâches intéressantes sont difficiles à faire dans C++; toutefois, étant donné une bonne bibliothèque, presque n'importe quelle tâche peut être rendue facile

En supposant que cela est correct (et dans mon expérience, il est), alors l'écriture d'une taille raisonnable projet C++ sans dépendances est carrément déraisonnable.

Le développement de cet argument plus loin, l' un de C++ de dépendance (à l'exception du système de bibliothèques) que l'on peut raisonnablement s'attendre à un (développeur) le système client est le coup de pouce des bibliothèques. Je sais qu'ils ne sont pas, mais il n'est pas déraisonnable de présomption en faveur d'un logiciel pour faire des.

Si un logiciel ne peut même pas compter sur un coup de pouce, il ne peut pas compter sur toute la bibliothèque.

28voto

Anders Hansson Points 2362

Jetez un oeil à http://www.boost.org/doc/tools.html. Plus précisément, le bcp utilité serait de venir dans maniable si vous souhaitez intégrer votre boost-dépendances dans votre projet. Un extrait du site web:

"L'utilitaire bcp est un outil pour extraire des sous-ensembles de Boost, il est utile pour Stimuler les auteurs qui veulent diffuser leur de la bibliothèque séparément de Boost, et pour Stimuler les utilisateurs qui veulent distribuer un sous-ensemble de Boost à leur demande.

bcp peut également faire rapport sur les parties de Booster votre code dépend, et quelles licences sont utilisées par ces dépendances."

Bien sûr, cela pourrait avoir certains inconvénients, mais au moins vous devriez être conscient de la possibilité de le faire.

12voto

Diomidis Spinellis Points 8417

Je l'habitude d'être extrêmement prudent d'introduire des dépendances à des systèmes, mais maintenant, je trouve que les dépendances ne sont pas une grosse affaire. Les systèmes d'exploitation modernes viennent avec les gestionnaires de paquets qui peuvent souvent résoudre automatiquement les dépendances ou, au moins,il est très facile pour les administrateurs d'installer ce qui est nécessaire. Par exemple, Boost est disponible sous Gentoo-frais de port en tant que dev-libs/boost et en vertu des ports FreeBSD comme devel/boost.

Moderne de logiciels open source s'appuie beaucoup sur les autres systèmes. Dans une étude récente, par le suivi des dépendances de l'FreeBSD paquets, nous avons établi que la 12,357 ports paquets dans nos FreeBSD 4.11 système, avait au total 21,135 dépendances de la bibliothèque; c'est à dire, ils ont besoin d'une bibliothèque, d'autres que l'52 bibliothèques qui font partie du système de base, afin de compiler. Les dépendances de la bibliothèque comprend 688 différentes bibliothèques, tandis que le nombre de bibliothèques externes utilisées par un seul projet a varié entre 1 et 38, avec une valeur de mode 2. En outre, 5,117 projets ont utilisé au moins une bibliothèque externe et 405 projets ont utilisé plus de 10.

En fin de compte, la réponse à votre question viendra à partir d'une analyse coûts-avantages.. Est de nouveau à l'aide d'une maturité, largement utilisé, examinés et testés bibliothèque comme Boost et plus grande que la faiblesse et la baisse du coût de la dépendance? Pour tout non-trivial utilisation de Stimuler les installations de la réponse est que vous devriez aller de l'avant et utiliser Boost.

4voto

Robert Gould Points 29406

KDE dépend aussi de coup de pouce.

Cependant, il dépend essentiellement de vos objectifs, et plus encore sur votre public cible, plutôt que de la portée de votre projet. par exemple TinyJSON (très petit projet), est près de 100% de coup de pouce, mais c'est bien parce que l'API, il fournit est de Stimuler et ciblée à Stimuler les programmeurs qui ont besoin de JSON liaisons. Cependant, de nombreux autres JSON bibliothèques ne pas utiliser Boost car ils ciblent d'autres publics.

D'autre part, je ne peux pas utiliser Boost au travail, et je sais que beaucoup d'autres développeurs (dans leurs tâches de la journée) sont dans le même bateau. Donc, je suppose que vous pourriez dire que si votre Cible est OpenSource, et un groupe qui utilise le Boost, aller de l'avant. Si vous avez de l'entreprise cible que vous pourriez penser et copiez-collez simplement les pièces nécessaires à partir de Boost(et de s'engager à leur prise en charge) pour votre projet de travaux.

  • Edit: La raison pour laquelle nous ne pouvons pas l'utiliser au travail est parce que notre logiciel a pour être portable à environ 7 les plates-formes et à travers 4 compilateurs. Donc nous ne pouvons pas utiliser boost, car il n'a pas été prouvé pour être compatible avec tous nos objectifs, de sorte que la raison est un technique. (Nous sommes très bien avec le OpenSource et de Stimuler la Licence de la partie, comme nous l'utiliser Boost pour d'autres choses, à fois)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X