Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
OpenJDK コミュニ
ティに参加してみよう
KUBOTA Yuji
@sugarlife
NTT OSSセンタ
JJUG CCC 2016 Spring
Copyright©2016 NTT corp. All Rights Reserve...
はじめに
•  本セッションでは個人的なコミュニ
ティ活動の経験をベースに「最初の
1歩」を紹介します
•  コーディング方法やバグの解析方法
については今回は話しません
•  質問時間を設ける予定です。気にな
る点があったらぜひ共有して下さい...
@sugarlife
#ccc_i62
#jjug
Copyright©2016 NTT corp. All Rights Reserved. 3
OpenJDK ?
•  オープンソースの Java SE 実装
– openjdk.java.net
– GNU GPL, version 2
– Java SE Specification 準拠
– API 仕様のレベルでは Oracle ...
OpenJDK の流れ
•  JDK 7 が OSS 化 (Sun microsystems)
– OpenJDK 7 から OpenJDK 6 が派生
•  OpenJDK7b20 → OpenJDK6b1
– OpenJDK 8 は Ope...
使い物になるの?
•  http://www.slideshare.net/hadoopxnttdata/openjdk-
nttdata-oss-day-2015-autumn
Copyright©2016 NTT corp. All Rig...
• バグで困ってるので直したい
– Oracle JDK のバグも直る
• 便利な機能を追加したい
– Oracle JDK にも入る
• 30 億のデバイスで自分のコード
が走るなんて素敵やん?
Copyright©2016 NTT corp...
どうやって?
Copyright©2016 NTT corp. All Rights Reserved. 8
困ったらどこを読む?
•  OpenJDK の Contributing ページ
Copyright©2016 NTT corp. All Rights Reserved. 9
もう少し詳しい内容
最初
困ったらどこを読む?
•  OpenJDK Wiki (Adaptionの項)
Copyright©2016 NTT corp. All Rights Reserved. 10
おわり
Copyright©2016 NTT corp. All Rights Reserved. 11
と思いきや
意外に(?)書かれて
ないことも多い
Copyright©2016 NTT corp. All Rights Reserved. 12
どちらかというと最初の1歩以降が書かれてない
書かれている事もない事も含めてご紹介します
改善案の出し方は?
•  大きく分けて二通りの方法
1. メーリングリスト(ML)にパッチ投稿
• 提案・議論から始めるのもあり
2. JEP として機能提案 (JEP1参照)
•  どうすべきか?
– JEP として出すべきかの判断は
コミュ...
誰でも出せるの?
•  Oracle Contributor Agreement に
サインすれば誰でも OK
– 締結していないと受理されない
– PDF を印刷・サイン → メール →
2 週間後ぐらいに返事
– 個人でも可能、企業の場合は...
どこからコードを入手するの?
•  基本的には最新版の JDK に対し
てパッチを書く(今ならJDK9)
– 取り込まれたら過去バージョンに
バックポートされる
•  コード管理リポジトリは以下
– http://hg.openjdk.java...
寄り道: OpenJDK のリポジトリ
http://hg.openjdk.java.net/プロジェク
ト名/リポジトリ名/サブリポジトリ名
– プロジェクト名: OpenJDK コミュ
ニティトップページの左側にある
Projects 欄か...
寄り道: OpenJDK のリポジトリ
http://hg.openjdk.java.net/プロジェク
ト名/リポジトリ名/サブリポジトリ名
– プロジェクト名: OpenJDK コミュ
ニティトップページの左側にある
Projects 欄か...
どのプロジェクトを選ぶべきか?
•  51 プロジェクト
– 基本は jdkX (今は jdk9)
• jdkX = GA リリース前の
開発リポジトリ
• jdkXu = Updates
– それ以外はopenjdk.java.net
の P...
どのリポジトリを選ぶべきか?
•  hg clone http://hg.openjdk.java.net/jdk9/XXX/
XXX は以下から選ぶ
– dev: 基本はこれ (開発用リポジトリ)
– jdk9: Master. コードを読む...
どこにどんなコードがあるの?
•  サブリポジトリごとにコンポーネント分けしている
–  リポジトリ(jdk9)には主にビルドスクリプトが格納
•  common, make ディレクトリに入っている
–  各サブリポジトリには以下のようなコー...
どこにパッチ投稿すべきか?
•  ML を選んで登録し、投稿する
– http://mail.openjdk.java.net/mailman/listinfo
– プロジェクトやコンポーネントごとにある
Copyright©2016 NTT ...
どこにパッチ投稿すべきか?
•  ML を選んで登録し、投稿する
– http://mail.openjdk.java.net/mailman/listinfo
– プロジェクトやコンポーネントごとにある
主な例
– core-libs-dev...
メール投稿で注意すべきことは?
Copyright©2016 NTT corp. All Rights Reserved. 23
•  パッチはメール本文に貼り付ける
– 添付ファイルや外部サービスは基本NG
•  パッチが採用されるには以下が...
メール投稿で注意すべきことは?
Copyright©2016 NTT corp. All Rights Reserved. 24
• 反応がないことはザラ
– 休みだったり見てなかったり
– 1週間も反応がなかったら PING する
• 件名に...
役割ってあるの?
•  Author
2件の貢献(Contributed-byに名前が付いたコミット)
JIRA 書き込み権限、コードレビューサーバへのアク
セス権限
•  Committer
8件の貢献 + 投票
Author権限+コミット権...
役割ってあるの?
•  Author
2件の貢献(Contributed-byに名前が付いたコミット)
JIRA 書き込み権限、コードレビューサーバへのアク
セス権限
•  Committer
8件の貢献 + 投票
Author+コミット権限+...
役割ってあるの?
•  Author
2件の貢献(Contributed-byに名前が付いたコミット)
JIRA 書き込み権限、コードレビューサーバへのアク
セス権限
•  Committer
8件の貢献 + 投票(MLで推薦→投票→承認)
A...
ぜひ一緒に
やってみよう!
Copyright©2016 NTT corp. All Rights Reserved. 28
KUBOTA Yuji @sugarlife
• OpenJDK テクニカルサポート
– コア解析からGCチューニング, etc…
– OpenJDK Author (jdk9)
• 解析支援ツール HeapStats 開発
– 多数の商用で元...
NTT OSSセンタ
•  NTT グループの OSS 活用を支える部隊
*)OSSVERT®:OSs Suites VERified Technically(技術検証済みOSS組合せ)
事業会社
SI会社 
問合せ対応、導
入支援、保守等
技...
Q
Copyright©2016 NTT corp. All Rights Reserved. 31
Upcoming SlideShare
Loading in …5
×

OpenJDK コミュニティに参加してみよう #jjug

4,466 views

Published on

First step of contribution for OpenJDK in Japanese on JJUG CCC 2016 Spring

Published in: Technology
  • Be the first to comment

OpenJDK コミュニティに参加してみよう #jjug

  1. 1. OpenJDK コミュニ ティに参加してみよう KUBOTA Yuji @sugarlife NTT OSSセンタ JJUG CCC 2016 Spring Copyright©2016 NTT corp. All Rights Reserved. 2016/05/21  
  2. 2. はじめに •  本セッションでは個人的なコミュニ ティ活動の経験をベースに「最初の 1歩」を紹介します •  コーディング方法やバグの解析方法 については今回は話しません •  質問時間を設ける予定です。気にな る点があったらぜひ共有して下さい – セッション後でもいつでもどうぞ! Copyright©2016 NTT corp. All Rights Reserved. 2 (1日は欲しい)
  3. 3. @sugarlife #ccc_i62 #jjug Copyright©2016 NTT corp. All Rights Reserved. 3
  4. 4. OpenJDK ? •  オープンソースの Java SE 実装 – openjdk.java.net – GNU GPL, version 2 – Java SE Specification 準拠 – API 仕様のレベルでは Oracle JDK と完全互換している •  http://www.oracle.com/technetwork/jp/java/javase/ community/opensourcejdk-jsp-136417-ja.html Copyright©2016 NTT corp. All Rights Reserved. 4
  5. 5. OpenJDK の流れ •  JDK 7 が OSS 化 (Sun microsystems) – OpenJDK 7 から OpenJDK 6 が派生 •  OpenJDK7b20 → OpenJDK6b1 – OpenJDK 8 は OpenJDK 7 から派生 •  OpenJDK 9 は OpenJDK 8 から、以後同様 •  JDK 7からコードベースはOpenJDK 7 – Oracle JDK も OpenJDK も元は同じ •  https://blogs.oracle.com/darcy/entry/openjdk_6_genealogy Copyright©2016 NTT corp. All Rights Reserved. 5
  6. 6. 使い物になるの? •  http://www.slideshare.net/hadoopxnttdata/openjdk- nttdata-oss-day-2015-autumn Copyright©2016 NTT corp. All Rights Reserved. 6
  7. 7. • バグで困ってるので直したい – Oracle JDK のバグも直る • 便利な機能を追加したい – Oracle JDK にも入る • 30 億のデバイスで自分のコード が走るなんて素敵やん? Copyright©2016 NTT corp. All Rights Reserved. 7 貢献するモチベーション
  8. 8. どうやって? Copyright©2016 NTT corp. All Rights Reserved. 8
  9. 9. 困ったらどこを読む? •  OpenJDK の Contributing ページ Copyright©2016 NTT corp. All Rights Reserved. 9 もう少し詳しい内容 最初
  10. 10. 困ったらどこを読む? •  OpenJDK Wiki (Adaptionの項) Copyright©2016 NTT corp. All Rights Reserved. 10
  11. 11. おわり Copyright©2016 NTT corp. All Rights Reserved. 11
  12. 12. と思いきや 意外に(?)書かれて ないことも多い Copyright©2016 NTT corp. All Rights Reserved. 12 どちらかというと最初の1歩以降が書かれてない 書かれている事もない事も含めてご紹介します
  13. 13. 改善案の出し方は? •  大きく分けて二通りの方法 1. メーリングリスト(ML)にパッチ投稿 • 提案・議論から始めるのもあり 2. JEP として機能提案 (JEP1参照) •  どうすべきか? – JEP として出すべきかの判断は コミュニティに任せる。先ずは ML にパッチを投稿してみよう Copyright©2016 NTT corp. All Rights Reserved. 13
  14. 14. 誰でも出せるの? •  Oracle Contributor Agreement に サインすれば誰でも OK – 締結していないと受理されない – PDF を印刷・サイン → メール → 2 週間後ぐらいに返事 – 個人でも可能、企業の場合は雇用 者のサインが必要 – パッチ書いた後でも一応 OK (マージはされない) Copyright©2016 NTT corp. All Rights Reserved. 14
  15. 15. どこからコードを入手するの? •  基本的には最新版の JDK に対し てパッチを書く(今ならJDK9) – 取り込まれたら過去バージョンに バックポートされる •  コード管理リポジトリは以下 – http://hg.openjdk.java.net – OpenJDK は mercurial (hg) 管理 Copyright©2016 NTT corp. All Rights Reserved. 15
  16. 16. 寄り道: OpenJDK のリポジトリ http://hg.openjdk.java.net/プロジェク ト名/リポジトリ名/サブリポジトリ名 – プロジェクト名: OpenJDK コミュ ニティトップページの左側にある Projects 欄から詳細が読める – (サブ)リポジトリ名: プロジェクト 毎に異なるが、構造は大体一緒 Copyright©2016 NTT corp. All Rights Reserved. 16※正確には nested mercurial repository (※)
  17. 17. 寄り道: OpenJDK のリポジトリ http://hg.openjdk.java.net/プロジェク ト名/リポジトリ名/サブリポジトリ名 – プロジェクト名: OpenJDK コミュ ニティトップページの左側にある Projects 欄から詳細が読める – (サブ)リポジトリ名: プロジェクト 毎に異なるが、構造は大体一緒 Copyright©2016 NTT corp. All Rights Reserved. 17 (※) ※正確には nested mercurial repository
  18. 18. どのプロジェクトを選ぶべきか? •  51 プロジェクト – 基本は jdkX (今は jdk9) • jdkX = GA リリース前の 開発リポジトリ • jdkXu = Updates – それ以外はopenjdk.java.net の Projects を眺めよう Copyright©2016 NTT corp. All Rights Reserved. 18
  19. 19. どのリポジトリを選ぶべきか? •  hg clone http://hg.openjdk.java.net/jdk9/XXX/ XXX は以下から選ぶ – dev: 基本はこれ (開発用リポジトリ) – jdk9: Master. コードを読むだけならこれ – hs: GC や Runtime (HotSpotVM) の修正 – hs-comp: JIT compiler 等の修正 – client: AWT, Swing等のクライアントの修正 •  get_source.sh を実行してサブリポジトリ取得 – corba, hotspot, jaxp, jaws, jdk, langtools, nashorn Copyright©2016 NTT corp. All Rights Reserved. 19※正確には nested mercurial repository と言う
  20. 20. どこにどんなコードがあるの? •  サブリポジトリごとにコンポーネント分けしている –  リポジトリ(jdk9)には主にビルドスクリプトが格納 •  common, make ディレクトリに入っている –  各サブリポジトリには以下のようなコードが格納されている •  hotspot: GC, Runtime, JIT Compiler 等の JVM 主要機能 •  jdk: JDK API や JDK 付属ツール ( jcmd 等) •  corba: Common Object Request Broker Architecture •  jaxp: Java API for XML Processing •  jaxws: Java API for XML Web Services •  langtools: javac や jshell といった言語関係ツール •  nashorn: JavaScript Engine (jdk8から登場) –  パッチを書いたら作業したリポジトリで diff を取る •  hg diff -g または hg diff -u または hg export を実行する •  注:テスト(再現コード)の準備や動作確認も! Copyright©2016 NTT corp. All Rights Reserved. 20
  21. 21. どこにパッチ投稿すべきか? •  ML を選んで登録し、投稿する – http://mail.openjdk.java.net/mailman/listinfo – プロジェクトやコンポーネントごとにある Copyright©2016 NTT corp. All Rights Reserved. 21 151個もあった…
  22. 22. どこにパッチ投稿すべきか? •  ML を選んで登録し、投稿する – http://mail.openjdk.java.net/mailman/listinfo – プロジェクトやコンポーネントごとにある 主な例 – core-libs-dev: 基本的なライブラリ – hotspot-dev: HotSpot VM、Runtime周り – hotspot-gc-dev: GC周り – serviceability-dev: jmap や jcmd などのツール – jdk9-dev: JDK 全体に渡る周知や議論・コミッタ 投票等の場で、個別機能の議論の場ではない Copyright©2016 NTT corp. All Rights Reserved. 22
  23. 23. メール投稿で注意すべきことは? Copyright©2016 NTT corp. All Rights Reserved. 23 •  パッチはメール本文に貼り付ける – 添付ファイルや外部サービスは基本NG •  パッチが採用されるには以下が必要 1.  JIRA (バグトラッカー)への登録 2.  レビュー(パッチの規模で人数が変動) 3.  リポジトリへのコミット – これらを手伝ってくれるスポンサーが 必要(対象プロジェクトのコミッタ以上)
  24. 24. メール投稿で注意すべきことは? Copyright©2016 NTT corp. All Rights Reserved. 24 • 反応がないことはザラ – 休みだったり見てなかったり – 1週間も反応がなかったら PING する • 件名に PING: とか付けて送るだけ • Could someone review this patch? • 敬意を忘れない – Thank you for very much!
  25. 25. 役割ってあるの? •  Author 2件の貢献(Contributed-byに名前が付いたコミット) JIRA 書き込み権限、コードレビューサーバへのアク セス権限 •  Committer 8件の貢献 + 投票 Author権限+コミット権限+スポンサー権限 •  Reviewer 32件(推奨40件)の貢献 + 投票 Committer権限+レビュー権限 Copyright©2016 NTT corp. All Rights Reserved. 25
  26. 26. 役割ってあるの? •  Author 2件の貢献(Contributed-byに名前が付いたコミット) JIRA 書き込み権限、コードレビューサーバへのアク セス権限 •  Committer 8件の貢献 + 投票 Author+コミット権限+スポンサー権限 •  Reviewer 32件(推奨40件)の貢献 + 投票 Committer権限+レビュー権限 Copyright©2016 NTT corp. All Rights Reserved. 26
  27. 27. 役割ってあるの? •  Author 2件の貢献(Contributed-byに名前が付いたコミット) JIRA 書き込み権限、コードレビューサーバへのアク セス権限 •  Committer 8件の貢献 + 投票(MLで推薦→投票→承認) Author権限+コミット権限+スポンサー権限 •  Reviewer 32件(推奨40件)の貢献 + 投票 Committer権限+レビュー権限 Copyright©2016 NTT corp. All Rights Reserved. 27
  28. 28. ぜひ一緒に やってみよう! Copyright©2016 NTT corp. All Rights Reserved. 28
  29. 29. KUBOTA Yuji @sugarlife • OpenJDK テクニカルサポート – コア解析からGCチューニング, etc… – OpenJDK Author (jdk9) • 解析支援ツール HeapStats 開発 – 多数の商用で元気に稼働中 :) Copyright©2016 NTT corp. All Rights Reserved. 29
  30. 30. NTT OSSセンタ •  NTT グループの OSS 活用を支える部隊 *)OSSVERT®:OSs Suites VERified Technically(技術検証済みOSS組合せ) 事業会社 SI会社  問合せ対応、導 入支援、保守等 技術検証、 導入推進 プロダクト/ ツール類開発 技術者育成、 人材交流 各種 OSS コ ミュニ ティ 設計, 開 発, 運用 グループ各社 サポー トベン ダ、 NTT 研究所 等お 客 様 サポー ト連携 開発 連携 ①OSSトータル  サポート NTT OSSセンタ ②OSS適用推進   (OSSVERT®*検証) ③技術開発  (DBMS,高可用ミドル等) ④ソフトウェア  基盤技術力向上 Copyright©2016 NTT corp. All Rights Reserved. 30
  31. 31. Q Copyright©2016 NTT corp. All Rights Reserved. 31

×