Archive for 2013年3月21日
Java に対するさまざまな貢献について
Java に対して貢献したいのですが、どういった貢献が必要とされているのか、どのような貢献ができるのか、貢献をするためには何処から、何を始めたらいいのか?とご質問を頂きました。そこで本エントリでは Java における貢献の種類や方法についてまとめて紹介したいと思います。まず、始めにお伝えしたい事は、貢献は様々な種類がありますが、全てにおいて気構える事なく、自分で可能な範囲とお時間で貢献をして頂ければ幸いです。
それでは、Java における貢献とはどのような種類があるのでしょうか。数多く有りすぎて全てを列挙できないかもしれませんが、今思いつく所だけでも下記のような内容があります。上から下に向けて難易度は難しくなるかと思います。
- ご自身のブログ、もしくは記事の執筆、書籍の出版、各種技術セミナーでご登壇 (ご自身でできる事)
- 日本全国、各地方における勉強会の企画、開催、実施、登壇など(日本単独でできる事)
- 英語で記載された技術ドキュメントの翻訳 (java.net サイト上で)
- 英語ドキュメントの不具合の指摘(リンク切れ、スペルミスなど)、ドキュメントの改善提案、ドキュメントの作成
- クオリティ向上のための Early Access Program の不具合プログラムに参加
- 各種 ML もしくはバグ登録サイトでバグ報告、機能改善要望 (RFE:Request for Enhancement) 提案
- パッチ(バグ FIX コード)の提供
- 各プロジェクトのコミッター
それでは、どこから何をすればよいのでしょうか?ここでは、ご自身でできる事、日本単独でできる事は除いて紹介します。まず、一番最初に、java.net プロジェクトにご参加ください。
1. java.net プロジェクトにアカウントを作成する。
java.net : https://java.net/people/new
登録時には、メールアドレス、ユーザ名、パスワード、氏名、住んでいる国(Japan)の記入が必要です。ML 内の議論を参照するだけであれば、”Browse Archive”より、過去の議論をスレッドで参照する事は可能です。
2. 興味のあるプロジェクトのメーリングリストに参加する
OpenJDK 関連の ML 一覧:
http://mail.openjdk.java.net/mailman/listinfo
Java EE 7 関連 ML 一覧:
https://wikis.oracle.com/display/GlassFish/PlanForGlassFish4.0
GlassFish 関連の ML 一覧:
http://glassfish.java.net/public/mailing-lists.html
ここでは、書ききれない程数多くのプロジェクトが動いています。ご自身の興味分野のプロジェクトをプロジェクト・検索ツールよりお探しください(例:Project Lambda, Type Annotation, WebSocket, JAX-RS, Batch, Concurrency for EE など)。
3. 各プロジェクト内の議論に参加する
ご貢献いただく方、それぞれで貢献の度合いは異なってくると思いますが、まずは ML に参加する所から始めてください。他の既存の協力者がどのような協力をしているのかを学んでいただくのがよいかと思います。
その際、多くのプロジェクトで出荷前の製品に関するフィードバックを求めているため、ML でこうした方がよい、ここにバグがある、これと組み合わせるとうまくいかないなどのフィードバックをたくさんご報告頂くだけでも、非常に素晴らしい貢献だと思います。
不具合情報に関しては、プログラム上の動作だけでなく、ドキュメント、サンプルを含めて幅広い点でフィードバックをいただければ、将来的に製品版としてリリースされる際のクオリティが高くなると思います。
個人的な経験から申し上げると、リリース後に問題(バグ)報告するよりもリリース前に(それも早い段階で)報告する方が意見が通り易く、問題も修正されやすいかと想定しております。製品リリース後は下記よりバグ登録を行なう事ができます。
http://bugreport.sun.com/bugreport/
次のステップとして、パッチ提供やコミッターとしての貢献ですが、将来的にコミッターを目指す方は、単にバグなどの問題、課題を報告するだけではなく、ソースコードからどの部分がおかしいのか、どのように FIX すれば、その問題が解決するのかを ML 内で議論していただくのがよいのではないかと思います。数多くの FIX 提案、パッチの提供を行なっていただく事で、将来、スペックリードからコミッターに推薦されるかと思います。
4. 貢献者として必要な手続き
※ 本文構成の 3 と 4 を入れ替え、記載内容も若干修正しました。櫻庭さんに Twitter 経由でご指摘を頂きましたが、下記に記載する Oracle Contributor Agreement の記載は、ML 上での議論、もしくは問題報告などの場合は不要で、全ての方にとって必要な手続きではありません。スペック・リードやプロジェクト・リード、もしくはオラクルから提出をお願いした場合に必要になる内容ですので、下記のように内容を修正しました。 |
さて、ここまでは貢献者になるための準備です。ここから公に貢献者として活動を開始するためには、 ご貢献頂く内容によっては「Oracle Contributor Agreement(オラクルに対する貢献者としての同意書)」に記載して、オラクルにお送りいただく必要があります。基本的にはこの同意書は、スペック・リード、プロジェクト・リード、その他オラクルの関係者から提出をお願いした場合に、記載内容に同意頂いた後提出して頂きます。
同意書に記載されている例として、バグ FIX 等でパッチを提供して頂く際にコピーライトをオラクルに共有していただく事などが記載されています。これは、オラクルがコードベースを守る義務を持ち、法務関連の課題もオラクルが追う目的があるためです。詳しくは下記のサイトや FAQ をご覧ください。
OCA について:
http://www.oracle.com/technetwork/community/oca-486395.html
OCA に関する FAQ:
http://www.oracle.com/technetwork/oca-faq-405384.pdf
OCA の登録フォーム:
http://www.oracle.com/technetwork/oca-405177.pdf
上記の、送り先としては、各プロジェクトのスペック・リードへお送り頂く事が多いかと思います。
その他、GlassFish の FishCAT というプログラムでは、下記の登録フォームに内容を記載していただく事で、事前・検証・評価のプログラムに参加して頂く事も可能です。(java.net のアカウントは必須)
http://glassfish.java.net/fishcat/
日本の開発者の皆様貢献を心よりお待ち申し上げます。