2013年6月18日

CommitFestでパッチのレビューに参加してみよう

次期バージョン9.3のbetaが先日リリースされたばかりですが、PostgreSQLの最先端の開発は次々期バージョンの9.4に向かっており、その9.4の開発に向けての1回目のCommitFestが今週から始まりました。

[9.4 CF 1] Commit Fest has started
http://www.postgresql.org/message-id/51BE003A.2050600@agliodbs.com

今回は、「CommitFestとは何か」という話と、「開発プロセスに参加してみたいな」と思っている方に向けて、「CommitFestでパッチのレビューに参加してみよう」という話です。

■CommitFest(CF) とは


PostgreSQLはご存じの通りオープンソースソフトウェアですので、その開発プロセスでは、機能追加や性能改善などのディスカッションは開発者のメーリングリスト上で行われています。

PostgreSQL Mailing Lists: pgsql-hackers
http://www.postgresql.org/list/pgsql-hackers/

パッチが作成されてメーリングリスト上である程度のコンセンサスが取れると(言い換えると、強い反対が無い場合には)、そのパッチは「CommitFest(CF)」と呼ばれるプロセスに回されます。

CommitFestというのは、「集中的にパッチのレビューを行い、コードツリーにパッチを適用してコミットしていく期間およびそのプロセス」のことです。

CommitFest - PostgreSQL wiki
http://wiki.postgresql.org/wiki/CommitFest

CommitFestは、数ヶ月に一回程度行われ、期間としては1ヶ月程度続くのですが、これは「作成したパッチが放置されないように、一定の品質を保ちつつコードツリーに取り込んでいく」ためのPostgreSQL開発グループの工夫です。

CommitFestのためのWebサイトがあり、作成されたパッチの内容、メーリングリストの該当スレッドへのリンク、パッチのステータスなどを確認することができます。

PostgreSQL CommitFest Management: CommitFest Index
https://commitfest.postgresql.org/

PostgreSQL CommitFest Management: CommitFest 2013-06 (In Progress)
https://commitfest.postgresql.org/action/commitfest_view?id=18

CommitFestの期間、開発者はパッチのレビューを優先することを求められますし、パッチをCommitFestに登録した開発者は、他人のパッチのレビューを行うことを求められます。また、コミッターは「コミット可能 / Ready for Committer」となったパッチを可能な限りコミットしていくことが求められます。

CommitFestが行われる時、開発グループでは「CommitFest Manager (CFM)」という役割の開発者が、パッチのレビューとコミットを促す(催促とも言いますがw)役割を担います。今回のCommitFestでは、コアチームのJosh BerkusがCFMを担っており、パッチを投稿していた私にも「他の人のパッチもレビューしてね!」というメールが来ていました。

■CommitFestでパッチをレビューしてみよう


PostgreSQLの開発コミュニティでは、開発プロセスが工夫され、プロセスが明文化され、比較的参加しやすい環境が整いつつあります。

例えば、コードレビューの観点や方法についてもWikiに記載されています。

Reviewing a Patch - PostgreSQL wiki
http://wiki.postgresql.org/wiki/Reviewing_a_Patch

詳細な説明は上記のWikiの記載に譲るとして、ここでは「いつか開発に参加してみたいな」と思った方へ、(さらに)簡単なガイドをご紹介したいと思います。

CommitFestにおけるパッチレビューのプロセスはおおまかには以下の通りです。
  • PostgreSQLのCommitFestサイトにアカウントを作成する
  • レビューするパッチを選び、レビュアーの欄に名前を記載する
  • パッチを実際にコードツリーに当ててみて、レビューを行う
  • レビュー結果をパッチ作成者にフィードバックし、パッチのステータスを変更する
  • 作成者から改善版が送られて来たら、それを同じようにレビューする
  • 十分に改善されてステータスがReady for Committerになったらコミッターがコミットする
また、パッチレビューの観点としては、
  • 最新のHEADブランチに適用してビルドできるか
  • メーリングリストで議論されていた通りに動作しているか
  • 他に修正すべき個所がないか
  • 性能に影響を与えていないか
  • 互換性に影響を与えていないか
  • 必要なテストが書かれているか
  • 必要なドキュメント(マニュアルやコードコメント)が書かれているか
といった点が中心になります。

レビューの例としては、私が前回のCF参加したときのものをいくつかご紹介します(どれも小さいパッチですので、レビューも簡単です)。

Patch: pgbench to the MAXINT
https://commitfest.postgresql.org/action/patch_view?id=1068
Patch: Improve buffer refcount leak warning messages
https://commitfest.postgresql.org/action/patch_view?id=1035
Patch: psql \l to accept patterns
https://commitfest.postgresql.org/action/patch_view?id=1051

■パッチレビューは開発プロセス/コミュニティへの参加の第一歩


そんなわけで今回も始まったCommitFestですが、PostgreSQLの開発コミュニティでは、いつも「パッチのレビュアーが足りない」という切実な問題を抱えています。CommitFestという仕組みが誕生した背景にも、「作成されたパッチを、もっとシステマチックに取り込んでいく必要がある」という問題意識があったためです。

PostgreSQLの開発に興味を持っている方は、ぜひこれを機会にCommitFestでパッチのレビューに参加してみることをお勧めします。

現時点で必ずしもPostgreSQLに詳しくなくても、「まだあまり詳しくないのだけれど」と断った上で、上記のような観点でパッチレビューに参加すれば、開発者たちはレビューを喜んで歓迎してくれるでしょう。

ぜひ、オープンソースならではの、開発コアメンバーやコミッターたちとのダイレクトなコミュニケーションを楽しんでいただければと思います。CommitFestにおけるパッチのレビューは、その良い入口になるのではないかと思います。

では、また。

0 件のコメント:

コメントを投稿