Upload
yuji-kubota
View
4.314
Download
0
Embed Size (px)
Citation preview
OpenJDK コミュニティに参加してみよう
KUBOTA Yuji @sugarlife
NTT OSSセンタ
JJUG CCC 2016 Spring
Copyright©2016 NTT corp. All Rights Reserved.2016/05/21
はじめに• 本セッションでは個人的なコミュニ
ティ活動の経験をベースに「最初の1歩」を紹介します
• コーディング方法やバグの解析方法については今回は話しません
• 質問時間を設ける予定です。気になる点があったらぜひ共有して下さい – セッション後でもいつでもどうぞ!
Copyright©2016 NTT corp. All Rights Reserved. 2
(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 JDK
と完全互換している • http://www.oracle.com/technetwork/jp/java/javase/
community/opensourcejdk-jsp-136417-ja.html
Copyright©2016 NTT corp. All Rights Reserved. 4
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
使い物になるの?
• http://www.slideshare.net/hadoopxnttdata/openjdk-nttdata-oss-day-2015-autumn
Copyright©2016 NTT corp. All Rights Reserved. 6
• バグで困ってるので直したい – Oracle JDK のバグも直る
• 便利な機能を追加したい – Oracle JDK にも入る
• 30 億のデバイスで自分のコードが走るなんて素敵やん?
Copyright©2016 NTT corp. All Rights Reserved. 7
貢献するモチベーション
どうやって?
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 として出すべきかの判断は コミュニティに任せる。先ずは ML にパッチを投稿してみよう
Copyright©2016 NTT corp. All Rights Reserved. 13
誰でも出せるの?• Oracle Contributor Agreement に
サインすれば誰でも OK – 締結していないと受理されない – PDF を印刷・サイン → メール →
2 週間後ぐらいに返事 – 個人でも可能、企業の場合は雇用者のサインが必要
– パッチ書いた後でも一応 OK (マージはされない) Copyright©2016 NTT corp. All Rights Reserved. 14
どこからコードを入手するの?
• 基本的には最新版の JDK に対してパッチを書く(今ならJDK9) – 取り込まれたら過去バージョンにバックポートされる
• コード管理リポジトリは以下 – http://hg.openjdk.java.net – OpenJDK は mercurial (hg) 管理
Copyright©2016 NTT corp. All Rights Reserved. 15
寄り道: OpenJDK のリポジトリ
http://hg.openjdk.java.net/プロジェクト名/リポジトリ名/サブリポジトリ名
– プロジェクト名: OpenJDK コミュニティトップページの左側にある Projects 欄から詳細が読める
– (サブ)リポジトリ名: プロジェクト毎に異なるが、構造は大体一緒
Copyright©2016 NTT corp. All Rights Reserved. 16※正確には nested mercurial repository
(※)
寄り道: OpenJDK のリポジトリ
http://hg.openjdk.java.net/プロジェクト名/リポジトリ名/サブリポジトリ名
– プロジェクト名: OpenJDK コミュニティトップページの左側にある Projects 欄から詳細が読める
– (サブ)リポジトリ名: プロジェクト毎に異なるが、構造は大体一緒
Copyright©2016 NTT corp. All Rights Reserved. 17
(※)
※正確には nested mercurial repository
どのプロジェクトを選ぶべきか?
• 51 プロジェクト – 基本は jdkX (今は jdk9)
• jdkX = GA リリース前の開発リポジトリ
• jdkXu = Updates – それ以外はopenjdk.java.net
の Projects を眺めよう
Copyright©2016 NTT corp. All Rights Reserved. 18
どのリポジトリを選ぶべきか?• 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 と言う
どこにどんなコードがあるの?• サブリポジトリごとにコンポーネント分けしている
– リポジトリ(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
どこにパッチ投稿すべきか?• ML を選んで登録し、投稿する
– http://mail.openjdk.java.net/mailman/listinfo – プロジェクトやコンポーネントごとにある
Copyright©2016 NTT corp. All Rights Reserved. 21
151個もあった…
どこにパッチ投稿すべきか?• 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
メール投稿で注意すべきことは?
Copyright©2016 NTT corp. All Rights Reserved. 23
• パッチはメール本文に貼り付ける – 添付ファイルや外部サービスは基本NG
• パッチが採用されるには以下が必要 1. JIRA (バグトラッカー)への登録 2. レビュー(パッチの規模で人数が変動) 3. リポジトリへのコミット – これらを手伝ってくれるスポンサーが
必要(対象プロジェクトのコミッタ以上)
メール投稿で注意すべきことは?
Copyright©2016 NTT corp. All Rights Reserved. 24
• 反応がないことはザラ – 休みだったり見てなかったり – 1週間も反応がなかったら PING する
• 件名に PING: とか付けて送るだけ • Could someone review this patch?
• 敬意を忘れない – Thank you for very much!
役割ってあるの?• Author
2件の貢献(Contributed-byに名前が付いたコミット) JIRA 書き込み権限、コードレビューサーバへのアクセス権限
• Committer 8件の貢献 + 投票 Author権限+コミット権限+スポンサー権限
• Reviewer 32件(推奨40件)の貢献 + 投票 Committer権限+レビュー権限
Copyright©2016 NTT corp. All Rights Reserved. 25
役割ってあるの?• Author
2件の貢献(Contributed-byに名前が付いたコミット) JIRA 書き込み権限、コードレビューサーバへのアクセス権限
• Committer 8件の貢献 + 投票 Author+コミット権限+スポンサー権限
• Reviewer 32件(推奨40件)の貢献 + 投票 Committer権限+レビュー権限
Copyright©2016 NTT corp. All Rights Reserved. 26
役割ってあるの?• Author
2件の貢献(Contributed-byに名前が付いたコミット) JIRA 書き込み権限、コードレビューサーバへのアクセス権限
• Committer 8件の貢献 + 投票(MLで推薦→投票→承認) Author権限+コミット権限+スポンサー権限
• Reviewer 32件(推奨40件)の貢献 + 投票 Committer権限+レビュー権限
Copyright©2016 NTT corp. All Rights Reserved. 27
ぜひ一緒に やってみよう!
Copyright©2016 NTT corp. All Rights Reserved. 28
KUBOTA Yuji @sugarlife
• OpenJDK テクニカルサポート – コア解析からGCチューニング, etc… – OpenJDK Author (jdk9)
• 解析支援ツール HeapStats 開発 – 多数の商用で元気に稼働中 :)
Copyright©2016 NTT corp. All Rights Reserved. 29
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
Q
Copyright©2016 NTT corp. All Rights Reserved. 31