Road to an Author -Contributing to OpenJDK-

この記事はJava Advent Calendarの14日目の記事です.
昨日は@susumuisさんの「10年間Javaを書いていた僕が Effective Java 第2版を読み返して新人に薦められるのかを考えてみた | susumuis Info」でした.
明日はgrimroseさんです.

さて,先日OpenJDKのAuthorになれたので,今後,OpenJDKにコントリビュートして同じくAuthorになるかも知れない人のために,Authorになるまでの流れをまとめておきたいと思います.

そもそもAuthorって?

そもそもOpenJDK Authorってどういう人たちでしょう?
簡潔に言うとOpenJDK Authorはコードコントリビュートする人たちです.
コードコントリビュートというのはOpenJDKのバグ修正や新機能実装などなど,ありとあらゆることが含まれています.
APIドキュメントの整備などもソースコードと同じ扱いで管理されているので,コードコントリビュートと言えます.

Authorとその他の人との違い

OpenJDKの開発者はContributer,Author,Committer,Reviewerに分けられます.
それぞれでできることが違います.
できることを以下の5つに大きく分けて説明していきます.

・ コードレビューサーバ
・ Wiki
・ イシュートラッカ
・ リポジトリへのプッシュ
・ プッシュの承認(Approve)

コードレビューサーバというのはhttp://cr.openjdk.java.net/のことです.OpenJDK開発者のパッチ置き場になります.
Wikiというのはhttp://wiki.openjdk.java.net/のことです.いわゆるWikiです.
イシュートラッカはhttp://bugs.openjdk.java.net/にあります.これを利用できるようになると新しいイシューを登録したり,既存のイシューに投票したりできるようになります.
リポジトリへのプッシュというのはリポジトリサーバ(http://hg.openjdk.java.net/)にあるhgリポジトリへのプッシュのことです.

最後のプッシュの承認(Approve)についてはリポジトリへのプッシュに関わってきます.
OpenJDKのリポジトリにプッシュする場合は原則的にレビューができる人(Reviewerのこと)から,コミットに対していくつかのApproveを得なければいけません.

Contributerができることはメールにパッチを含めて送るだけです.OpenJDKのリソース(サーバ,Wikiなど)を利用することはできません.
リポジトリへの直接のプッシュは出来ないので,できる人にコミット&プッシュしてもらうことになります.
パッチが受け入れられるとコミットメッセージに原則的に「Contributed-by: e-mail@address」をいれてもらえます.

× コードレビューサーバ
× Wiki
× イシュートラッカ
× リポジトリへのプッシュ
× プッシュの承認(Approve)

Authorになるとできることが一気に増えます.
AuthorはコードレビューサーバとWiki,そしてイシュートラッカを利用できます.
コードレビューサーバが利用できるので,パッチはコードレビューサーバに上げて,やりとりしていきます.
ですが,Contributerと一緒でリポジトリへのプッシュは出来ません.

○ コードレビューサーバ
○ Wiki
○ イシュートラッカ
× リポジトリへのプッシュ
× プッシュの承認(Approve)

CommitterはAuthorができることに加えてリポジトリへのプッシュができるようになります.

○ コードレビューサーバ
○ Wiki
○ イシュートラッカ
○ リポジトリへのプッシュ
× プッシュの承認(Approve)

Reviewerはプッシュを承認することができます.

○ コードレビューサーバ
○ Wiki
○ イシュートラッカ
○ リポジトリへのプッシュ
○ プッシュの承認(Approve)

Road to an Author

ようやく本題です.
では,どうやってAuthorになるのでしょうか.

Authorになるためには以下の2つの条件があります.

  • 2つ以上のコードコントリビュート
  • Project Leadからの承認

まず,2つ以上のコードコントリビュートですが,リポトリにプッシュされたパッチが対象になります.
より具体的には「Contributed-by: my.email@address」が含まれたコミットの数が2つ以上ということです.
要は,Contributerの立場でパッチを送りまくって,2件以上プッシュされる必要があります

もうひとつがProject Leadからの承認です.
この承認を得るために,Author RequestのメールをProject Leadに送りつけます.
恐らく2件以上プッシュされていたら,問題なく承認してもらえると思います.

送るメールには本名やメールアドレスに加えて,2件以上のコードコントリビュートがあることを証明するリンクを含めます.
例えば以下のような感じになります.

Title: JDK9 Author request for: Taro Tanaka
Hi, <Project Lead>
I request for an author.

Email: taro@example.co.jp

References:
http://hg.openjdk.java.net/xxx/dev/rev/123456789
http://hg.openjdk.java.net/xxx/dev/rev/123456789

Start Contributing

2件以上のコントリビュートが必要ということでした.
Contributeを始めるためにはまず,OCAにサインしなければいけません.
OCAというのはOracle Contributing Associationのことで,提供したコードなどの取り扱いについての契約になります.
The Oracle Contributor Agreement

名前や住所などの必要な情報を埋めて,OCAのオフィスにメールを送ります.

To: oracle-ca_us@oracle.com
Title: Oracle Contributor Agreement for OpenJDK

詳しくは「OpenJDK: How to contribute」を参考にしてください.

後はSystem Dashboard - Java Bug Systemとかを眺めて解決できそうな物を探して,思い思いにパッチを送っていきます.
パッチを送る際はコードレビューサーバが使えないのでメールの文中に「hg diff」の結果を貼り付ける感じでいくといいと思います.

Authorになったら

Authorのリクエストが承認されたらInvitationメールが届きます.
名前やSSHの鍵を入れるなどして登録をすますと正式にOpenJDKのAuthorとなります.
また,http://openjdk.java.net/censusに名前が載る他,先ほど説明したコードレビューサーバ,Wiki,イシュートラッカにアクセスできるようになります.*1

ちなみに,僕の場合はWikiとイシュートラッカのInvitationが届いてなかったので,追加でもう一通メールを書いて改めてInvitationを送ってもらう必要がありました.

終わりに

駆け足でしたが,Authorになるまでの流れと,OpenJDKの開発の取っ掛かりを紹介しました.
OpenJDKの開発をやってみたいけど,全体像がわからないとか,何から始めたら良いかわからないという人の参考になれば幸いです.

*1:リポジトリサーバにもsftpなどで一応入れる