web-dev-qa-db-fra.com

Que contient le dossier "contrib"?

Les projets logiciels open source ont souvent un dossier appelé "contrib". Par exemple, Django en a un . Pourquoi est-ce?

45
Colonel Panic

Il s'agit d'un logiciel qui a été contrib utilisé pour le projet, mais qui pourrait ne pas être maintenu par les développeurs principaux. Le nommer "contrib" ou "Contrib" est une convention établie de longue date, mais il n'y a vraiment rien de spécial dans le nom, et il n'est généralement utilisé que par des projets assez importants.

22
Bryan Oakley

En regardant les projets open source populaires qui viennent à l'esprit, je ne vois aucune mention de dossier "contrib":

Le seul qui possède un dossier "contrib" est Django. Pour Django, le rôle de ce dossier est déjà expliqué dans la documentation :

Django vise à suivre la philosophie "piles incluses" de Python. Il est livré avec une variété d'outils supplémentaires en option qui résolvent les problèmes de développement Web courants.

Ce code vit dans Django/contrib dans la distribution Django. Ce document donne un aperçu des packages dans contrib, ainsi que toutes les dépendances de ces packages.

Le chapitre 16 du Django Book contient une description plus détaillée du rôle de ce répertoire et la liste des contenus.

Un autre exemple est Solr . Avec gitstats , nous pouvons obtenir les statistiques sur les contributeurs.

Robert Muir         22.09%
Michael McCandless  13.60%
Mark Robert Miller   9.73%
Uwe Schindler        8.17%
Yonik Seeley         5.56%
Steven Rowe          5.55%

Ensuite, nous pouvons sélectionner uniquement le répertoire contrib en exécutant:

git filter-branch --subdirectory-filter solr/contrib --Prune-empty

et obtenez les statistiques une fois de plus:

Robert Muir         19.62%
Steven Rowe          8.87%
Mark Robert Miller   8.33%
Uwe Schindler        8.06%
James Dyer           7.80%

Ainsi, les meilleurs auteurs sont pratiquement les mêmes, ce qui signifie que ce ne sont pas des contributions de l'extérieur. En regardant les répertoires à l'intérieur du dossier contrib, il semble que ce sont encore une fois "une variété d'outils supplémentaires optionnels", exactement comme dans Django. Par exemple, vous n'avez pas besoin du gestionnaire de demande d'importation de données pour faire fonctionner Solr, mais si vous souhaitez importer des données à partir d'une base de données ou XML, il est agréable de les avoir dans le dossier contrib. Idem pour la réduction de carte, vous n'en aurez pas nécessairement besoin, mais il y a des cas où vous en avez.

S'agit-il de plugins ou de modules complémentaires? Je n'utiliserais pas ce terme. Les plugins et modules complémentaires ont une intégration spécifique avec l'application principale. Par exemple, un plugin ne devrait pas fonctionner de manière autonome, mais hébergé dans l'application principale. D'un autre côté, contrib contient des outils qui peuvent probablement fonctionner de manière autonome.

15
Arseni Mourzenko

Il est destiné aux bibliothèques ou composants qui contrib se rapportent au projet, mais qui ne sont pas la propriété ou une partie du projet lui-même. Je l'ai toujours utilisé comme emplacement commun ou partagé pour mettre toutes les bibliothèques tierces que j'utilise.

Par exemple, vous pourriez avoir:

  • /Contrib/log4net-x.x.x
  • /Contrib/SSH.NET-x.x.x
  • / BackendService
  • / DesktopUI
  • / GenUtils
  • / SMCore
  • / WebUI

Ensuite, référencez-les dans chacun des composants du projet à l'aide de chemins relatifs, de sorte qu'il n'y ait aucun type d'installation ou de configuration nécessaire avant de le construire. Il sera construit directement à partir du référentiel, peu importe où il est extrait localement.

6
Amac

Git est un excellent exemple de logiciel open source qui utilise cette convention:

https://github.com/git/git/tree/master/contrib

Voici un extrait pertinent de ce fichier README.md:

Logiciels contribués

Bien que ces pièces soient disponibles dans le cadre de l'arbre source officiel de git, leur statut est quelque peu différent. L'intention est de garder des outils intéressants autour de git ici, peut-être même expérimentaux, pour donner aux utilisateurs un accès plus facile à eux, et pour donner aux outils une plus grande exposition, afin qu'ils puissent être améliorés plus rapidement.

Je ne m'attends pas à les toucher moi-même autant. En ce qui concerne mon fonctionnement quotidien, ces sous-répertoires appartiennent à leurs auteurs principaux respectifs. Je suis prêt à aider si les utilisateurs de ces composants et les "propriétaires" de contrib/subtree ont des problèmes techniques/de conception à résoudre, mais l'initiative de corriger et/ou d'améliorer les choses doit être du côté des propriétaires de sous-arborescences.

2
Alex W