このガイドは、Discourse オープンソースプロジェクトへの貢献を希望する方を対象としており、効果的なコラボレーションに必要なセットアップと規約について詳しく説明しています。
必要なユーザーレベル: コードの貢献は誰でも可能ですが、Ruby と JavaScript に精通している必要があります。
概要
このドキュメントでは、以下の内容を扱います。
- 開発環境のセットアップ
- どこから貢献を始めるかを理解する
- Discourse プラグインの作成と操作
- Discourse コアへの貢献
- 従うべきコーディング規約
- GitHub への貢献の送信
開発環境のセットアップ
貢献を始める前に、開発環境が適切にセットアップされていることを確認してください。プラットフォームに応じたガイドに従ってください。
- すべてのプラットフォーム: Docker を使用した開発用の Discourse のインストール
- Mac OS X: 開発用に macOS に Discourse をインストールするための初心者ガイド
- Linux (Ubuntu): 開発用に Ubuntu に Discourse をインストールするための初心者ガイド
- Windows: 開発用に Windows 10 に Discourse をインストールするための初心者ガイド
どこから始めるかを知る
Discourse は大規模なプロジェクトであり、Ruby や JavaScript などの基盤となるテクノロジーを理解することが不可欠です。開始方法については、初心者ガイドを参照してください。
プラグインの作成と操作
プラグインは、Discourse の内部構造を管理しやすい部分で理解し、コードへの貢献を容易に開始するための方法を提供します。以下から始めてください。
- Developing Discourse Plugins - Part 1 - Create a basic plugin
- (deprecated) Plugin outlet locations theme component
インスピレーションを得るには、Feature および Plugin > Extras の人気のあるアイデアを探ってください。
Discourse コアへの貢献
Discourse コアコードは GitHub のコアリポジトリ で管理されています。
CLA への署名
貢献する前に、Electronic Discourse Forums Contribution License Agreement を読み、署名してください。CLA に署名していないユーザーからのプルリクエスト (PR) は、法的に受け付けることができません。
スタータータスクでウォームアップする
始めるのに適したタスクについては、pr-welcome タグを確認してください。
バグリストを順に処理する
いいね順に並べられたオープンバグのリスト からバグを修正します。バグに取り組んでいる場合はメモを残してください。完了しなかった場合は、他の誰かが作業を引き継げるように関連するメモを残してください。
機能トピックの支援
機能リクエスト に詳細やモックアップを提供し、承認プロセスを支援します。すべての機能がコアに含まれるわけではないことに注意してください (各バージョンの Discourse に何が含まれるかをどのように決定するか)。
パフォーマンスの向上
フロントページまたはトピックビューの初期ロードなど、影響の大きい領域に焦点を当て、クライアント側またはサーバー側のパフォーマンスを向上させるプルリクエストを歓迎します。
Discourse が保守するプロジェクトへの貢献
Discourse が保守する他のオープンソースプロジェクトに貢献してください。注目すべきプロジェクトには以下のようなものがあります。
- Logster - Web GUI ログビューア
- Message Bus - サイトのライブインタラクションのためのエンジン
- Rack Mini Profiler - 診断ツール
- Onebox - URL プレビュー用の Ruby gem
- Discourse API - API コンシューマ
- Discourse Docker - Discourse ディストリビューションエンジン
- WP Discourse - WordPress プラグイン
- Memory Profiler - Ruby 用プロファイラ
- Ember Performance - Ember パフォーマンステストスイート
コーディング規約
名前付けは極めて重要
サイトで使用される用語と、クラス名およびデータベースの列名 (例: “posts”) との間に 100% の整合性を持たせるようにしてください。
依存関係の最新バージョンとの互換性は極めて重要
Rails、Ruby、Ember などのライブラリの最新の安定版リリースとの互換性を確保してください。依存関係を更新する際は、リグレッションがないかテストしてください。
テストのみの貢献は歓迎されます
テストされていないプロセスやコントローラーアクションに対するテストの貢献は歓迎されます。絶対に必要な場合を除き、モック化は避けてください。
リファクタリングのみの貢献は歓迎されません
リファクタリングのみのプルリクエストの提出は避けてください。代わりに、コードを改善しながらバグを修正するか、機能を実装してください。
GitHub へのコードの送信
ステップバイステップのワークフロー
-
Discourse リポジトリのクローン:
git clone https://github.com/discourse/discourse.git -
新しいブランチの作成:
cd discourse git checkout -b new_discourse_branch -
コーディング:
- コード内にある既存のコーディング規約に従ってください。
- テストを含め、それらがパスすることを確認してください。
- Discourse メタフォーラム で関連するディスカッションを参照してください。
-
コーディング規約に従う:
- スペース 2 つ、タブなし
- 末尾の空白なし、空行にはスペースなし
- 演算子の周り、コンマ、コロン、セミコロンの後、
{の周り、および}の前にスペースを使用 (、[の直後、または]、)の直前にはスペースなし- Ruby 1.9 のハッシュ構文を使用:
{ :a => 1 }よりも{ a: 1 }を優先 - クラスメソッドには
def self.methodよりもclass << self; def method; endを優先 - 1 行ブロックには
do ... endよりも{ ... }を優先し、複数行ブロックには{ ... }の使用を避ける - 不要な場合は
returnを避ける
-
コミット:
git commit -m "変更の簡単な要約" -m "変更の詳細な説明"コミットメッセージを空にしないでください - これは役立つガイド です。コミットメッセージは、最初の行に短い (最大 72 文字) 要約を記述し、その後に空行を挟んで、変更の詳細な説明を続けます。必要に応じて、簡単なスタイリングのためにマークダウン構文を使用できます。
コミットのタイトルには、Discourse の規約 に従ってプレフィックスを付けるようにしてください。
5 (a). リンティング:
JavaScript コードは eslint および prettier のフォーマット条件でリンティングされます。Ruby は RuboCop でリンティングされます。これらのチェックはすべて、Discourse へのプルリクエストを作成するたびに GitHub Actions で自動的に実行されます。- プリコミット Git フックを
lefthookを使用してインストールすることを強くお勧めします。これにより、Discourse コアでコミットを行うたびに自動的に実行され、プッシュして GitHub CI の実行を待つ前に、さまざまな言語やテンプレートに関する問題を報告できます。プロジェクトのルートでこれを実行します。mkdir .git/hooks npx lefthook install
- プリコミット Git フックを
-
ブランチの更新:
git fetch origin git rebase origin/main -
フォーク:
git remote add mine git@github.com:<your-username>/discourse.git -
リモートへのプッシュ:
git push mine new_discourse_branch -
[プルリクエスト]の送信:
- GitHub でリポジトリに移動します。
- 「Pull Request」をクリックします。
- ブランチフィールドにブランチ名を入力します。
- 「Update Commit Range」をクリックします。
- 「Commits」タブと「Files Changed」タブで変更を確認します。
- タイトルと説明を提供します。
- 「Send pull request」をクリックします。
プルリクエストを送信する前に、履歴をクリーンアップし、コミットを確認して、マイナーな変更や修正を対応するコミットにまとめます。インタラクティブなリベースコマンドを使用してコミットをまとめることができます。
git fetch origin
git checkout new_discourse_branch
git rebase origin/main
git rebase -i
< エディタが開き、コミット履歴を変更できます >
< エディタの下部にある指示に従ってください >
git push -f mine new_discourse_branch
- フィードバックへの対応:
- フィードバックに迅速に対応し、提案された変更を実装する準備をしてください。
- フィードバックは、あなたの作業が評価され、組み込まれることを意図していることを意味することを忘れないでください。
Discourse オープンソースプロジェクトへのご貢献に感謝いたします!