Cosa c'è nella cartella "contrib"?

38

Spesso i progetti software open source hanno una cartella chiamata "contrib". Ad esempio, Django ne ha uno . A cosa serve?

    
posta Colonel Panic 02.08.2014 - 14:13
fonte

4 risposte

16

È per il software che è stato contrib uted al progetto, ma che potrebbe non essere effettivamente mantenuto dagli sviluppatori principali. Denominarlo "contrib" o "Contrib" è una convenzione consolidata, ma non c'è davvero nulla di speciale nel nome, e di solito è usato solo da progetti abbastanza grandi.

    
risposta data 11.01.2017 - 00:51
fonte
14

Guardando i famosi progetti open source che vengono in mente, non vedo alcuna menzione di alcuna cartella "contrib":

L'unico che ha una cartella "contrib" è Django. Per Django, il ruolo di questa cartella è già spiegato nella documentazione :

Django aims to follow Python’s “batteries included” philosophy. It ships with a variety of extra, optional tools that solve common Web-development problems.

This code lives in django/contrib in the Django distribution. This document gives a rundown of the packages in contrib, along with any dependencies those packages have.

Capitolo 16 di Il libro di Django contiene una descrizione più dettagliata del ruolo di questa directory e 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 directory contrib 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 gli autori principali sono praticamente gli stessi, il che significa che quelli non sono contributi degli estranei. Guardando le directory all'interno della cartella contrib , sembra che ancora una volta, quelle siano "una varietà di strumenti extra, opzionali", esattamente come in Django. Ad esempio, non è necessario il gestore delle richieste di importazione dei dati per far funzionare Solr, ma se si desidera importare i dati dal database o XML, è bello averlo nella cartella contrib . Lo stesso vale per la riduzione della mappa, potrebbe non essere necessariamente necessario, ma ci sono casi in cui lo fai.

Sono quei plug-in o componenti aggiuntivi? Non userei questo termine. Plug-in e componenti aggiuntivi hanno un'integrazione specifica con l'applicazione principale. Ad esempio, non è previsto che un plug-in esegua autonomamente, ma è ospitato all'interno dell'applicazione principale. D'altra parte, contrib contiene strumenti che possono probabilmente essere indipendenti.

    
risposta data 02.08.2014 - 15:25
fonte
5

È pensato per librerie o componenti che contrib ute al progetto, ma non sono di proprietà o parte del progetto stesso. L'ho sempre usato come posizione comune o condivisa per inserire eventuali librerie di terze parti che uso.

Ad esempio, potresti avere:

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

Quindi fai riferimento ad essi in ciascuno dei componenti del progetto usando percorsi relativi, quindi non c'è alcun tipo di configurazione o configurazione necessaria prima di costruirla. Costruirà direttamente dal repository, indipendentemente da dove è stato estratto localmente.

    
risposta data 10.01.2017 - 19:45
fonte
0

Git è un ottimo esempio di software open source che utilizza questa convenzione:

link

Ecco un estratto pertinente dal file README.md:

Contributed Software

Although these pieces are available as part of the official git source tree, they are in somewhat different status. The intention is to keep interesting tools around git here, maybe even experimental ones, to give users an easier access to them, and to give tools wider exposure, so that they can be improved faster.

I am not expecting to touch these myself that much. As far as my day-to-day operation is concerned, these subdirectories are owned by their respective primary authors. I am willing to help if users of these components and the contrib/ subtree "owners" have technical/design issues to resolve, but the initiative to fix and/or enhance things must be on the side of the subtree owners.

    
risposta data 06.12.2018 - 20:40
fonte

Leggi altre domande sui tag