开源软件项目通常都有一个名为“ contrib”的文件夹。例如,Django有一个。这是为了什么
Contrib
我在项目中一直看到的这个文件夹是什么?” -“为什么,或者为什么一个项目没有一个?” -“我应该了解一些标准惯例吗?”
开源软件项目通常都有一个名为“ contrib”的文件夹。例如,Django有一个。这是为了什么
Contrib
我在项目中一直看到的这个文件夹是什么?” -“为什么,或者为什么一个项目没有一个?” -“我应该了解一些标准惯例吗?”
Answers:
在考虑流行的开源项目时,我没有提到任何“ contrib”文件夹:
唯一具有“ contrib”文件夹的文件夹是Django。对于Django,此文件夹的作用已在文档中说明:
Django旨在遵循Python的“含电池”理念。它附带了许多额外的可选工具,可以解决常见的Web开发问题。
此代码位于
django/contrib
Django发行版中。本文档简要介绍了软件包的概要以及这些软件包具有的所有依赖关系。
Django Book的第16章包含对该目录的作用和目录的更详细描述。
另一个例子是Solr。使用gitstats
,我们可以获得有关贡献者的统计信息。
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%
然后,我们可以contrib
通过运行以下命令仅选择目录:
git filter-branch --subdirectory-filter solr/contrib --prune-empty
并再次获得统计信息:
Robert Muir 19.62%
Steven Rowe 8.87%
Mark Robert Miller 8.33%
Uwe Schindler 8.06%
James Dyer 7.80%
因此,顶级作者实际上是相同的,这意味着这些不是外部人士的贡献。查看contrib
文件夹中的目录,似乎它们再次是“各种其他可选工具”,与Django中的完全相同。例如,您不需要数据导入请求处理程序即可使Solr工作,但是如果您想从数据库或XML导入数据,最好将其放在contrib
文件夹中。与map-reduce相同,您可能不一定需要它,但是在某些情况下您确实需要。
是那些插件或附件吗?我不会用这个词。插件和附加组件与主应用程序具有特定的集成。例如,插件不应独立运行,而是托管在主应用程序中。另一方面,contrib
包含可能可以独立运行的工具。
Contrib
(在Akka.NET中现在又看一个)的文件夹!-我不知道为什么会有一个名为该文件夹的文件夹,或者该命名约定的约定是什么。-到目前为止,提到的所有内容似乎都不符合我所看到的“ contrib”使用的所有方式。-似乎每个项目中都有完全不同的内容(Akka.Net似乎在其中放置了相当一部分代码库:Akka.Clustering,Logging,DI,Persistence,TestKits等)。
Git是使用此约定的开源软件的一个很好的例子:
https://github.com/git/git/tree/master/contrib
这是该README.md文件的相关摘录:
贡献软件
尽管这些片段可作为官方git源码树的一部分获得,但它们的状态有些不同。目的是在git周围保留有趣的工具,甚至是实验性工具,以使用户更容易访问它们,并为工具提供更广泛的了解,以便可以更快地对其进行改进。
我不希望自己碰那么多。就我的日常操作而言,这些子目录由其各自的主要作者拥有。如果这些组件和contrib /子树“所有者”的用户有要解决的技术/设计问题,我愿意提供帮助,但是修复和/或增强功能的主动权必须在子树所有者方面。