Olhando para projetos populares de código aberto que vêm à mente, não vejo menção de nenhuma pasta "contrib":
- jQuery ,
- Express ,
- Sass ,
- MENOS ,
- MongoDB ,
- Redis ,
- Fantoche ,
- Chefe de cozinha
- NUnit ,
- Ruby on Rails ,
- Laravel ,
- Jenkins ,
- Clojure ,
- Ruby .
O único que possui uma pasta "contrib" é o Django. Para o Django, o papel desta pasta já está explicado na documentação :
O Django tem como objetivo seguir a filosofia de "baterias incluídas" do Python. É fornecido com uma variedade de ferramentas extras opcionais que resolvem problemas comuns de desenvolvimento da Web.
Este código reside na django/contrib
distribuição do Django. Este documento fornece um resumo dos pacotes no contrib, juntamente com quaisquer dependências desses pacotes.
O Capítulo 16 do Livro do Django contém uma descrição mais detalhada do papel deste diretório e da lista de conteúdos.
Outro exemplo é o Solr . Com gitstats
, podemos obter as estatísticas sobre os colaboradores.
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%
Em seguida, podemos selecionar apenas o contrib
diretório executando:
git filter-branch --subdirectory-filter solr/contrib --prune-empty
e obtenha as estatísticas mais uma vez:
Robert Muir 19.62%
Steven Rowe 8.87%
Mark Robert Miller 8.33%
Uwe Schindler 8.06%
James Dyer 7.80%
Portanto, os principais autores são praticamente os mesmos, o que significa que essas não são contribuições de pessoas de fora. Olhando para os diretórios dentro da contrib
pasta, parece que mais uma vez, essas são “uma variedade de ferramentas opcionais extras”, exatamente como no Django. Por exemplo, você não precisa do manipulador de solicitação de importação de dados para fazer o Solr funcionar, mas se você deseja importar dados do banco de dados ou XML, é bom tê-lo na contrib
pasta. O mesmo para redução de mapa, você pode não necessariamente precisar, mas há casos em que você precisa.
Esses plug-ins ou complementos? Eu não usaria esse termo. Plugins e complementos têm uma integração específica com o aplicativo principal. Por exemplo, não se espera que um plug-in seja executado de forma independente, mas hospedado no aplicativo principal. Por outro lado, contrib
contém ferramentas que provavelmente podem ser executadas de forma independente.