A menudo, los proyectos de software de código abierto tienen una carpeta llamada "contrib". Por ejemplo, Django tiene uno . ¿Para qué sirve?
project-structure
Coronel Panic
fuente
fuente
Contrib
carpeta que sigo viendo en los proyectos?" - "¿Por qué, o por qué un proyecto no tendría uno?" - "¿Hay alguna convención estándar para esto que debería saber?"Respuestas:
Es para el software que ha contribuido al proyecto, pero que los desarrolladores principales podrían no mantener. Nombrarlo "contrib" o "Contrib" es una convención establecida desde hace mucho tiempo, pero en realidad no hay nada especial sobre el nombre, y generalmente solo se usa en proyectos bastante grandes.
fuente
Mirando los proyectos populares de código abierto que vienen a la mente, no veo ninguna mención de ninguna carpeta "contrib":
El único que tiene una carpeta "contrib" es Django. Para Django, el papel de esta carpeta ya se explica en la documentación :
El Capítulo 16 de The Django Book contiene una descripción más detallada del rol de este directorio y la lista de contenidos.
Otro ejemplo es Solr . Con
gitstats
, podemos obtener las estadísticas sobre los contribuyentes.Luego, podemos seleccionar solo el
contrib
directorio ejecutando:y obtenga las estadísticas una vez más:
Por lo tanto, los principales autores son prácticamente los mismos, lo que significa que no son contribuciones de personas externas. Mirando los directorios dentro de la
contrib
carpeta, parece que una vez más, se trata de "una variedad de herramientas adicionales y opcionales", exactamente como en Django. Por ejemplo, no necesita el controlador de solicitud de importación de datos para que Solr funcione, pero si desea importar datos de una base de datos o XML, es buenocontrib
tenerlos en la carpeta. Lo mismo para map-reduce, puede que no lo necesite necesariamente, pero hay casos en los que lo necesita.¿Son esos complementos o complementos? No usaría este término. Los complementos y complementos tienen una integración específica con la aplicación principal. Por ejemplo, no se espera que un complemento se ejecute de forma independiente, sino alojado dentro de la aplicación principal. Por otro lado,
contrib
contiene herramientas que probablemente pueden ejecutarse de forma independiente.fuente
Contrib
(mirando otra más ahora mismo en Akka.NET)! - No tengo idea de por qué tienen una carpeta llamada así, o cuál es la convención para esta convención de nomenclatura. - Ninguna de las cosas mencionadas hasta ahora parece encajar en todas las formas en que he visto "contrib". - parece que cada proyecto tiene cosas completamente diferentes allí (Akka.Net parece poner una buena parte de su base de código allí: Akka.Clustering, Logging, DI, Persistence, TestKits, etc.).Está destinado a bibliotecas o componentes que contribuyen al proyecto, pero que no son propiedad ni son parte del proyecto en sí. Siempre lo he usado como una ubicación común o compartida para colocar las bibliotecas de terceros que estoy usando.
Por ejemplo, podrías tener:
Luego, haga referencia a ellos en cada uno de los componentes del proyecto utilizando rutas relativas, de modo que no se necesite ningún tipo de configuración o configuración antes de construirlo. Se generará directamente desde el repositorio sin importar dónde se haya extraído localmente.
fuente
vendor
othirdparty
.Git es un gran ejemplo de software de código abierto que utiliza esta convención:
https://github.com/git/git/tree/master/contrib
Aquí hay un extracto relevante de ese archivo README.md:
fuente