Geralmente, os projetos de software de código aberto têm uma pasta chamada "contrib". Por exemplo, o Django tem um . Para que serve?
project-structure
Coronel Panic
fonte
fonte
Contrib
pasta que eu continuo vendo nos projetos?" - "Por que ou por que um projeto não teria um?" - "Existe alguma convenção padrão para isso que eu deva conhecer?"Respostas:
É para software que foi contribuído para o projeto, mas que pode não ser realmente mantido pelos desenvolvedores principais. Nomear "contrib" ou "Contrib" é uma convenção estabelecida há muito tempo, mas não há realmente nada de especial no nome, e geralmente é usado apenas em projetos razoavelmente grandes.
fonte
Olhando para projetos populares de código aberto que vêm à mente, não vejo menção de nenhuma pasta "contrib":
O único que possui uma pasta "contrib" é o Django. Para o Django, o papel desta pasta já está explicado na documentação :
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.Em seguida, podemos selecionar apenas o
contrib
diretório executando:e obtenha as estatísticas mais uma vez:
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 nacontrib
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.fonte
Contrib
(olhando para outra agora no Akka.NET)! - Não faço ideia por que eles têm uma pasta com esse nome ou qual é a convenção dessa convenção de nomenclatura. - Nenhuma das coisas mencionadas até agora parece se encaixar em todas as formas que eu vi "contrib" usadas. - parece que todo projeto tem coisas completamente diferentes (o Akka.Net parece colocar boa parte de sua base de código: Akka.Clustering, Logging, DI, Persistence, TestKits, etc ...).Destina-se a bibliotecas ou componentes que contribuem para o projeto, mas não pertencem ou fazem parte do próprio projeto. Eu sempre o usei como um local comum ou compartilhado para colocar as bibliotecas de terceiros que estou usando.
Por exemplo, você pode ter:
Em seguida, faça referência a eles em cada um dos componentes do projeto usando caminhos relativos, para que não haja nenhum tipo de instalação ou configuração necessária antes da construção. Ele será construído diretamente a partir do repositório, não importa onde o check-out seja feito localmente.
fonte
vendor
outhirdparty
.Git é um ótimo exemplo de software de código aberto que usa esta convenção:
https://github.com/git/git/tree/master/contrib
Aqui está um trecho relevante desse arquivo README.md:
fonte