web-dev-qa-db-ja.com

「contrib」フォルダには何がありますか?

多くの場合、オープンソースソフトウェアプロジェクトには「contrib」と呼ばれるフォルダがあります。たとえば、 Djangoには1つあります です。それはなんのためですか?

45
Colonel Panic

contribプロジェクトに組み込まれているソフトウェア用ですが、実際にはコア開発者が保守していない可能性があります。 「contrib」または「Contrib」という名前を付けることは長い間確立された規則ですが、名前について特別なことは何もなく、通常、かなり大きなプロジェクトでのみ使用されます。

22
Bryan Oakley

頭に浮かぶ人気のあるオープンソースプロジェクトを見ると、「contrib」フォルダについては何も触れられていません。

「contrib」フォルダを持つのはDjangoだけです。 Djangoの場合、このフォルダの役割はすでに ドキュメントで説明されています

Djangoは、Pythonの「バッテリーを含む」という哲学に従うことを目指しています。一般的なWeb開発の問題を解決するさまざまな追加のオプションツールが同梱されています。

このコードは、DjangoディストリビューションのDjango/contribにあります。このドキュメントでは、contribのパッケージの概要と、それらのパッケージの依存関係を示します。

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には、スタンドアロンで実行できるツールが含まれています。

15

これは、プロジェクトに対してcontrib uteであるが、所有されていない、またはプロジェクト自体の一部であるライブラリまたはコンポーネント用です。私はいつもそれを、私が使用しているサードパーティのライブラリを置くための共通または共有の場所として使用してきました。

たとえば、次のような場合があります。

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

次に、相対パスを使用して各プロジェクトコンポーネントでそれらを参照するので、ビルドする前に必要な設定や構成はありません。ローカルでチェックアウトされている場所に関係なく、リポジトリから直接ビルドされます。

6
Amac

Gitは、この規則を使用するオープンソースソフトウェアの優れた例です。

https://github.com/git/git/tree/master/contrib

以下は、README.mdファイルからの関連する抜粋です。

寄贈ソフトウェア

これらのピースは公式のgitソースツリーの一部として入手できますが、ステータスは多少異なります。意図は、ここでgitの周りに興味深いツール(おそらく実験的なツール)を保持し、ユーザーがそれらに簡単にアクセスできるようにし、ツールをより広く公開して、より速く改善できるようにすることです。

私はこれらにそれほど触れることを期待していません。私の日常業務に関する限り、これらのサブディレクトリはそれぞれの主要な作成者が所有しています。これらのコンポーネントのユーザーとcontrib /サブツリーの「所有者」に解決すべき技術的/設計上の問題がある場合、私は喜んでお手伝いしますが、物事を修正または拡張するイニシアチブが必要ですサブツリーの所有者の側にいる。

2
Alex W