オープンソースの最大の利点の一つは、貢献の形態や規模が多様であることです。スキルセット、経験、タイムゾーン、バックグラウンドを問わず、誰でも貢献できます。オープンソースプロジェクトに参加する方法は無数にあります。
WordPress も例外ではありません。コード変更を提出する貢献者は、コミュニティ全体から見ればごく一部に過ぎません。あらゆる場所でのあらゆる種類の貢献を認めることは、健全な貢献者基盤を確立するために不可欠です。認められ、評価されていると感じている貢献者は、貢献を継続する可能性が高くなります。
この責任はプロジェクトのメンテナーにかかっています。 作業が完了し、変更が加えられると、プロジェクトは関与したすべての貢献者に「props」を与えることで、その進捗状況を追跡します。
“props” とは何ですか ?
「Props」は「proper respect (適切な敬意)」の略で、WordPress では貢献への感謝を表すために使用されます。この慣習は [1102] において、WordPress への最初の貢献者に Props が贈られたことに始まります。それ以来、props はプロジェクトの歴史を通して貢献を認識し、追跡する方法として使用されてきました。コアへの貢献は、コードに直接影響を与えるもの (パッチの作成とレビューなど) から、設計、テスト、よく書かれたバグレポートなど、さまざまな形をとります。
誰が props をくれますか ?
リリース内の props (またはクレジット) は、WordPress.org 上のスクリプトを使用して収集されます。このスクリプトはコミットログを解析し、コミッターとメンテナーが貢献者に付与したすべての props を、以下に詳述する特定の形式で抽出します。コミットログファイルは、現在のリリースサイクルを表す特定の日付またはコミット範囲のすべてのアクティビティを表すように、慎重にスコープ設定されています。結果はアバウトページとリリースアナウンス投稿に埋め込まれ、WordPress ダッシュボードのクレジットページに貢献者リストを表示するために使用される w.org クレジット API にコミットされます。
コード以外の貢献はリリースチームによって収集され、必要に応じてフォーカスリードがクレジット API に追加します。たとえば、リリースパッケージのテスト、ミーティングの進行、開発者メモの作成などに対する Slack での貢献は、現在自動的にコンパイル されません。
クレジット API には現在、WordPress 3.2以上の貢献者リストのみが含まれています。
Props はいつ与えるべきですか ?
惜しみなく与えましょう。Props は貢献者にとって大きな励みとなり、貢献が認められることにつながります。
パッチ、更新されたパッチ、別の提案のコード、デザイン、執筆、ユーザーテスト、その他の多大な時間と労力の投資など、最終コミットに貢献したすべての人に props が与えられるべきです。
バグレポートの場合は、バグレポートの報告者にも props を付与する必要があります。重複としてクローズされたチケットにも props に値する貢献が含まれているかどうかを確認してください。
Props はどのように与えられますか ?
貢献は複数の場所でさまざまなツールを用いて行われるため、props のフォーマットには微妙な違いがあります。以下は、SVN リポジトリと Git リポジトリにおける props の記述方法です。
SVN における wordpress-develop のコミット
コアコミッターが変更の準備が整ったと判断し、正規の Subversion リポジトリにトランザクションを記録する (つまり、コードをコミットする) とき。
Props desrosj, jorbin, jeffpaul.
完全なコミットメッセージガイドではこの点について詳細に説明していますが、標準的なルールは次のとおりです:
- 先頭には空白行が必要です。
- 「Props」と w.org ユーザー名の間にはセミコロン (
:
) を入れないでください。 - ユーザー名は
@
(アット) 記号で始めることはできません。 - ユーザー名はカンマとスペースで区切ってください。正規表現:
/^props (\s*([^,]+),?)+$/
- タイプミスを避けるため、ユーザー名はコピー & ペーストしてください。
- ユーザーの表示名にスペースがある場合は、w.org プロフィールの URL のスラッグを使用してください。たとえば、Trac の Frank Klein は frank-klein として props を取得する必要があります。
- props 行には、props、wordpress.org ユーザー名、スペース、句読点のみを含めてください。
props
行はピリオドで終わらせます。
GitHub リポジトリ/マージコミット
GitHub のプルリクエストを通じてコードをマージする場合、メンテナーは Props Bot GitHub Action によって提供された貢献者のリストをコピーして、マージ コミットメッセージの下部に貼り付ける必要があります。
含まれる GitHub アカウントのリストを常に確認し、PR またはリンクされた問題に有意義な貢献をしたすべての人がクレジットされていることを確認してください。
いくつかの技術的な注意事項:
Co-authored-by
のリストの前には空白行が必要です。Co-authored-by
はコミット メッセージの最後に置く必要があります。- リンクされていない貢献者は、
Co-authored-by
の前に来なければなりません。 リンクされていない貢献者は、Unlinked contributors:
を先頭に付けて1行に入力し、各貢献者をカンマとスペース (,
) で区切り、最後の貢献者の後にピリオドを付けます。例:Unlinked contributors: nacin, matt.
- ユーザー名は
@
(アット) 記号で始まってはいけません。 - 手動で追加する場合は、次の形式で GitHub および WordPress.org のユーザー名のみを使用してください:
Co-authored-by: githubusername <[dotorgusername@git.wordpress.org](mailto:dotorgusername@git.wordpress.org)>
。 - w.org 以外のメールアドレスで記載できるアカウントは、ボットアカウント (
dependabot
またはgithub-actions
) のみです。これらのボットは、GitHub が生成したCo-authored-by
にリストされているとおりに残しておくことが重要です。そうすることで、将来の貢献者がどのボットが変更に関与したかを把握できるようになります。 - 提案されたコミットメッセージにすでに
Co-authored-by
で貢献者が記載されている場合は、削除する前に、Props Bot が提供するリストにも含まれていることを確認してください。これらの貢献者はGitHub 形式であるため、上記の w.org 形式に変換する必要があります。GitHub 形式の貢献者を削除すると、各コミットの貢献者数が正確に把握できますが、必須ではありません。w.org 以外のメールアドレスは、props 解析スクリプトによって無視されます。 - 貢献者の w.org ユーザー名が不明な場合は、GitHub ユーザー名を「Unlinked contributors」リストに追加してください。
- 提案されたコミットメッセージに
Signed-off-by
が含まれている場合は、Co-authored-by
の上に残してください。これらは別の目的で使用され、props 収集のコンテキストでは無視されます。
Props Bot
WordPress プロジェクト全体の GitHub リポジトリで活用することで、マージコミットに props 内の貢献者を特定、取得、追加できる GitHub Actions である WordPress Props が作成されました。リポジトリ内でのアクションとしての設定についてサポートが必要な場合は、Meta チームにチケットを作成してください。
一般的なルールとベストプラクティス
- 生成されたリストは常に手動で確認し、貢献が認識されないことがないようにします。
- 誰かが有意義な貢献をしていない場合、そのユーザーを props リストから削除することが適切な場合もあります。そのユーザーが本当に助けようとしていたのかどうかは、ご自身の判断で判断してください。「なぜまだ壊れているのですか ?」や「いつ修正されるのですか ?」といったコメントだけでは、最終的な解決にはあまり良い影響を与えていません。一方、「xy にアップデートしたら、自分のサイトでこの問題が発生しました」といったコメントは、一見役に立たないように思えるかもしれませんが、報告の裏付けとなる重要な詳細情報や、どのような状況で発生したかを示す情報を提供してくれます。
- 不明な点がある場合は、Slack の #core-committers チャンネルで質問してください。
wordpress-develop 特有のメモ
- コミットが複数の人が関わる多大な努力の成果である場合 (主要な機能、API、特にやっかいなバグなど) は、自分自身に props を付与しましょう。
- 自分のコードをコミットする場合は、props が付与されているものとみなされるため、ここでも自分自身に props を付与する必要はありません。
- 誰かに props を付与することを忘れた場合は、現在のリリースですでにその人に props が付与されているかどうかを確認してください。いずれにせよリリースのクレジットには含まれるため、長期的には問題ありません。まだ props が付与されていない場合は、リリースコーディネーターに報告して、リリース日にその人が追加されるようにしてもらうことができます。また、Slack やチケットへのコメントで貢献者に連絡を取り、コミットメッセージに名前が記載されていないことをお詫びし、貢献が認められていることを伝えることもおすすめします。その方法に注意してください。また、コア props ツールを使用して、各自のプロフィールに適切にクレジットが付与されていることを確認してください。
- コミット時に props をリストする際は、w.org ユーザー名に含まれないものは含めないようにしてください。
Props jorbin for testing.
やProps nacin for the initial implementation.
などと書く必要はありません。スクリプトを使用して貢献者のユーザー名を抽出する際に、誤検知が発生する可能性があります (implementation 実装は w.org 貢献者ではありません)。 - コミッターがコミット前にスタイルを調整したり、ロジックを変更したり、単純なエッジケースに対応したりすることはよくあります。このような場合は、自分自身を省略してください。コミットにあなたの名前が記載されているということは、あなたがコミットをレビューし、テストしたことを意味します。これはコミットの内容と同じくらい重要です。
GitHub 特有のメモ
- マージコミットの作成者であることが明記されている場合でも、必ず props リストに自分自身を含めてください。w.org スタイルのクレジット表記で、貢献を w.org プロフィールに明記してください。
- 個人用メールアドレスや GitHub 固有のメールアドレスは使用しないでください (
ID+USERNAME@users.noreply.github.com
またはUSERNAME@users.noreply.github.com
)。 - 現在、Props Bot によって作成されたリストに含まれていない貢献者を自動的に追加する方法はありません。誰かの w.org プロフィールを見つけるには、
[https://profiles.wordpress.org/github:GHUSERNAME](https://profiles.wordpress.org/github:GHUSERNAME)
にアクセスし、GHUSERNAME
を貢献者の GitHub ユーザー名に置き換えてください。相手がアカウントを接続している場合は、w.org プロフィールにリダイレクトされます。接続されていない場合は、(@
なしの) GitHub ユーザー名をUnlinked contributors:
リストに追加してください。
メジャーリリースのクレジット
.org props スクリプトは、スペルミスを検出し、リンクされていない GitHub アカウントを可能な限り一致させようとします。ただし、必ず何らかの手動レビューが必要になります。props スクリプトを実行する貢献者は、そのほとんどを簡単に実行できます。リリースの貢献者リストを確認し、正確性を向上させるためのヒントをいくつか紹介します。
- https://profiles.wordpress.org/github:username は、有効な接続が存在する場合、貢献者の w.org プロフィールにリダイレクトします。
- https://profiles.wordpress.org/$slack_user_id は、貢献者の w.org プロフィールにリダイレクトします。Slack ID は、Slack のユーザー詳細ビューから取得されます (アバターをクリック > プロフィールを表示 > その他 […] > ID をコピー)。
- リンクされていない GitHub アカウントの場合は、貢献者の情報を確認するために、ある程度の調査作業を実行してください。
- ユーザーの GitHub プロフィールページ (名前、メールアドレスなど) または Web サイト/ソーシャル プロフィールに記載されている詳細情報を使用します。
- レビューコミットを探し、コミット URL に
.patch
を追加します。場合によっては、異なる名前とメールアドレスがリストされていることがあります。
- この情報は、WordPress.org のプロフィールを検索する際に使用され、一致する可能性のあるユーザーを見つけることができます。検索エンジンでの検索クエリーの例は、
site:profiles.wordpress.org desrosj.
です。
一致が見つかったら、Slack または参加した PR を通じて、GitHub アカウントの所有者に GitHub アカウントと WordPress.org アカウントのリンクに関するハンドブックのページを参照するよう伝えてください。これは、将来のリリースで同じ調査作業を繰り返さなくて済むため、非常に役立ちます。
Props とアバウトページ
Props とリリースアナウンス
各リリースに関連するすべての props は、対応するアナウンス投稿の下部に必ず記載してください。これには2つの方法があります。
メジャーリリースの投稿では、props は [wpcredits x.y]
ショートコードを使用して記載する必要があります。たとえば、WordPress 6.5の場合は [wpcredits 6.5]
というショートコードを使用します。
クレジット API は、マイナーバージョンごとにクレジットの一覧表示をサポートしています。ただし、対応するメジャーバージョンには貢献していないマイナーバージョンの貢献者は、メジャーバージョンの下の API に追加されます。そのため、ショートコードではなく HTML リストを使用する必要があります。wordpress.org のサンドボックスにアクセスできるユーザーは、スクリプトを使用してこのリストを生成できます。各貢献者の名前は、w.org のプロフィールで設定されているものを使用し、プロフィールページにリンクする必要があります。
追加リソース: