私は多くのオープンソースソフトウェアリポジトリを調べましたが、いくつかの共通の要素と、人々が互いに異なる方法で行うことを見つけました。
たとえば、すべてのリポジトリには、README
ファイル、INSTALL
ファイル、COPYING
ファイルなどがあります。
他のものは異なります:
src/
フォルダーにソースコードを持ち、Linuxカーネルなどの他のプロジェクトはルートレベルの異なるフォルダーにソースコードを展開しています。コードを領域で分割します。t/
フォルダーにあり、他のテストはtests/
フォルダーにあるか、別の名前が付けられています。Documentation/
内またはルートレベルにある可能性があります。推奨事項はありますか?ベストプラクティス?
例:個人的には、ルートレベルのgit-fashionのコードは好きではありません。それは厄介に見え、寄稿者として始めようとしている人を混乱させます(特に、フォルダー内にいくつかのコードがあり、ルートレベルにもスクリプトがあるため、本当に厄介です)。
自分でプロジェクトを始めて、最初からやりたいと思ったら、おすすめはありますか?ベストプラクティス?どうすればクリーンでクリアな構造を作ることができますか?
その他のビット用にルートを予約し(リポジトリに保存するのに役立つその他の関連ディレクトリやファイルのための場所を確保します)、ソースツリーを1レベル下に開始します。複数のコンポーネントの場所に対応するには、最初のコンポーネントに2番目のレベルを追加します。
Gitを使用している場合は、後でいつでも再形成できますが、あまり気にしないでください。
この質問はかなり前に尋ねられましたが、あなたが解決策をマークしなかったので、私は貢献を追加すると思います。
オープンソースでの私の経験に基づいて、構造を設定する前にいくつかのことを考慮する必要があります。
言語とテクノロジー:フレームワークと言語は、構造がどのように見えるかを決定します。たとえば、PHPを使用したWeb開発構造は、C++デスクトップとは異なります
Deployment:このコードをこのrawフォームでデプロイする必要がある場合(たとえば、pythonのプログラム))、構造はコンパイルされたプログラムとは大きく異なります。Python構造は実際にはエンドユーザーに表示されるため、外観に影響を与えます。
フレームワークとインクルード:プロジェクトでサードパーティのライブラリを使用している場合は、構造を調整する必要があります。
ソース管理:使用しているソース管理プロバイダーは、特定のファイルが配置される場所に影響を与える可能性があります。
ただし、これらすべてにもかかわらず、ほとんどの構造を次のように一般化できます。
私はあなたのための良い構造のいくつかの素晴らしい例を見つけました:
これらのプロジェクトはどちらも、非常に明確に定義された構造を持つ大規模なオープンソースプロジェクトです。
これがお役に立てば幸いです。
リポジトリがパッケージとして配布または展開する予定のライブラリである場合は、特定の構造が必要になる場合があります。たとえば、pip
には、さまざまなファイルとその場所に関するいくつかの厳格なルールがあり、リポジトリの特定の構造に変換されます。
フレームワークは、いくつかのルールを指示することもできます。
使用するツールにも特定の期待がある場合があります。たとえば、Visual Studioで作成されたプロジェクトの場合、ルートディレクトリに.slnファイルがあり、Visual Studioのソリューションの仮想構造は、必ずしもファイルの物理構造を反映しているとは限りません。たとえば、プロジェクトはIDEの仮想構造にグループ化されていても、すべてディスク上のルートディレクトリに格納されている場合があります。
あなたのコミュニティも特定のスタイルを持っているかもしれません。たとえば、C#プロジェクトが次のようにグループ化されることは珍しくありません。
/Project1
/Project1Tests
/Project2
/Project2Tests
/src
および/tests
ディレクトリを持つ代わりに。 /t
が一般的な言語を使用しているようです。 /t
ディレクトリが含まれているリポジトリを見たことがありません。
最後に、バージョン管理に関連するツールにも制約がある場合があります。たとえば、GitHubを使用する場合、GitHubはこのファイル内のドキュメントを自動的に表示するため、README.md
を使用することをお勧めします。
次のルールを収集したら:
適用するルールについて明確なビジョンを持っている必要があります。疑問がある 選択した言語/テクノロジーのオープンソースリポジトリを確認してください で、その構造をコピーしてください。