このガイドは、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 git@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を優先 - 単一行ブロックには
{ ... }をdo ... endより優先し、複数行ブロックには{ ... }の使用を避ける - 不要な場合は
returnを避ける
-
コミット:
git commit -m "変更の簡単な要約" -m "変更の詳細な説明"コミットメッセージを空にしないでください - これは役立つガイド です。メッセージは、最初の行に短い要約(最大 72 文字)を記述し、その後に空行を入れ、最後に変更の詳細な説明を記述する必要があります。必要に応じて、簡単なスタイリングのために Markdown 構文を使用できます。
コミットのタイトルには、Discourse の規約 に従ってプレフィックスを付けてください。
5 (a). リンティング:
JavaScript コードは eslint と prettier のフォーマット条件でリンティングされます。Ruby は RuboCop でリンティングされます。これらのチェックはすべて、Discourse へのプルリクエストを作成するたびに GitHub Actions で自動的に実行されます。lefthookを使用して、コミット前の Git フックをインストールすることを強くお勧めします。これにより、Discourse コアでコミットを行うたびに自動的に実行され、GitHub CI が実行されるのを待つ前に、さまざまな言語やテンプレートに関する問題を提起します。プロジェクトのルートでこれを実行します。mkdir .git/hooks npx lefthook install
-
ブランチの更新:
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 オープンソースプロジェクトへのご協力に感謝します!