En regardant les projets open source populaires qui me viennent à l’esprit, je ne vois aucune mention d’un dossier «contrib»:
- jQuery ,
- Express ,
- Sass ,
- MOINS ,
- MongoDB ,
- Redis ,
- Marionnette ,
- Chef
- NUnit ,
- Ruby on Rails ,
- Laravel ,
- Jenkins ,
- Clojure ,
- Ruby .
Le seul qui a 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 de Python «batteries incluses». Il est livré avec une variété d’outils supplémentaires facultatifs qui résolvent les problèmes courants de développement Web.
Ce code existe django/contrib
dans la distribution Django. Ce document donne un aperçu des paquets dans contrib, ainsi que de leurs dépendances éventuelles.
Le chapitre 16 du Livre Django contient une description plus détaillée du rôle de ce répertoire et de la liste de son contenu.
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 contrib
répertoire 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%
Les meilleurs auteurs sont pratiquement les mêmes, ce qui signifie que ce ne sont pas des contributions de personnes extérieures. En regardant les répertoires à l’intérieur du contrib
dossier, il semble qu’une fois de plus, ce sont «une variété d’outils supplémentaires facultatifs», exactement comme dans Django. Par exemple, vous n'avez pas besoin du gestionnaire de demandes d'importation de données pour que Solr fonctionne, mais si vous souhaitez importer des données à partir d'une base de données ou d'un fichier XML, il est agréable de les avoir dans un contrib
dossier. Même chose pour map-réduire, vous n’en aurez peut-être pas nécessairement besoin, mais dans certains cas.
Est-ce que ces plugins ou add-ons? Je n'utiliserais pas ce terme. Les plugins et add-ons 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'autre part, contrib
contient des outils qui peuvent probablement fonctionner de manière autonome.