Guardando i popolari progetti open source che vengono in mente, non vedo alcuna menzione di alcuna cartella "contrib":
- jQuery ,
- Express ,
- Sass ,
- MENO ,
- MongoDB ,
- Redis ,
- Puppet ,
- capocuoco
- NUnit ,
- Ruby on Rails ,
- Laravel ,
- Jenkins ,
- Clojure ,
- Rubino .
L'unico che ha una cartella "contrib" è Django. Per Django, il ruolo di questa cartella è già spiegato nella documentazione :
Django mira a seguire la filosofia "batterie incluse" di Python. Viene fornito con una varietà di strumenti extra opzionali che risolvono problemi comuni di sviluppo Web.
Questo codice è presente django/contrib
nella distribuzione Django. Questo documento fornisce una panoramica dei pacchetti in contrib, insieme alle eventuali dipendenze di tali pacchetti.
Il capitolo 16 di The Django Book contiene una descrizione più dettagliata del ruolo di questa directory e dell'elenco dei contenuti.
Un altro esempio è Solr . Con gitstats
, possiamo ottenere le statistiche sui contributori.
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%
Quindi, possiamo selezionare solo la contrib
directory eseguendo:
git filter-branch --subdirectory-filter solr/contrib --prune-empty
e ottieni le statistiche ancora una volta:
Robert Muir 19.62%
Steven Rowe 8.87%
Mark Robert Miller 8.33%
Uwe Schindler 8.06%
James Dyer 7.80%
Quindi i migliori autori sono praticamente gli stessi, il che significa che quelli non sono contributi degli estranei. Guardando le directory all'interno della contrib
cartella, sembra che, ancora una volta, quelli siano "una varietà di strumenti extra, opzionali", esattamente come in Django. Ad esempio, non è necessario il gestore richieste di importazione dati per far funzionare Solr, ma se si desidera importare dati da database o XML, è bello averli nella contrib
cartella. Lo stesso vale per la riduzione della mappa, potresti non averne necessariamente bisogno, ma ci sono casi in cui lo fai.
Quei plugin o componenti aggiuntivi? Non userei questo termine. Plugin e componenti aggiuntivi hanno una specifica integrazione con l'applicazione principale. Ad esempio, non è previsto che un plug-in possa essere eseguito autonomamente, ma ospitato all'interno dell'applicazione principale. D'altra parte, contrib
contiene strumenti che probabilmente possono essere eseguiti autonomamente.