SlideShare a Scribd company logo
1 of 30
© 2020 NTT DATA Corporation
OpenJDKに初めてパッチを出した話
2020年8月26日
株式会社NTTデータ 技術開発本部
阪田 浩一
© 2020 NTT DATA Corporation 2
自己紹介
• 阪田 浩一(さかた -)
• 通称 じゅくちょー
• JVMになりたい人
• NTTデータでJava/OpenJDK + GraalVM
の研究開発とサポート業に従事しています
• Javaチャンピオン
• OpenJDK Author(1週間前に承認)
jyukutyo
© 2020 NTT DATA Corporation 3
劇的に変化した環境(個人的)
• 転職
• 40年住んだ関西から東京へ
• 職種
• Webアプリ開発運用から研究開発へ
© 2020 NTT DATA Corporation 4
「OpenJDKに
パッチをガンガン
書いてください」
© 2020 NTT DATA Corporation 5
もちろん
これをやりたくての
転職でした
© 2020 NTT DATA Corporation 6
レビュワーの同僚から
パッチを書く元ネタを
もらえました
© 2020 NTT DATA Corporation 7
パッチの元ネタ
• GCCのバージョンを最新の10にしてOpenJDKをビルドすると
コンパイルの警告が出る
• 警告の検出内容が改善されている
• パッチを書いて警告が出ないようにしよう!
© 2020 NTT DATA Corporation 8
やることリスト
1. 警告を解消するよう修正する
2. 最新リビジョンで最終確認をする
3. OpenJDKメーリングリストにパッチをメールする
4. パッチのスポンサーを見つけ、リポジトリへプッシュしてもらう
© 2020 NTT DATA Corporation 9
1. 警告を解消するよう修正する
• 警告の内容を確認(抜粋)
/home/jyukutyo/code/jdk/src/hotspot/share/oops/symbol.hpp:130:18: error:
writing 1 byte into a region of size 0 [-Werror=stringop-overflow=]
130 | _body[index] = value;
| ~~~~~~~~~~~~~^~~~~~~
/home/jyukutyo/code/jdk/src/java.base/share/native/libfdlibm/k_standard.c:743:19:
error: 'exc.retval' may be used uninitialized in this function [-Werror=maybe-
uninitialized]
743 | return exc.retval;
| ~~~^~~~~~~
/home/jyukutyo/code/jdk/src/java.base/unix/native/libnet/NetworkInterface.c:974:13:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error:
'__builtin_strncpy' output may be truncated copying 15 bytes from a string of length 15
[-Werror=stringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
© 2020 NTT DATA Corporation 10
1. 警告を解消するよう修正する
• 以下のコードが対象
• symbol.{hpp,cpp}
• k_standard.c
• NetworkInterface.c
© 2020 NTT DATA Corporation 11
四苦八苦しながら
修正する
(各ファイル数行)
理解の記録:https://www.sakatakoichi.com/entry/2020/06/22/HotSpot_VMのシンボル名に関わるコード
© 2020 NTT DATA Corporation 12
2. 最新リビジョンで最終確認をする
• 念のため、複数のGCCバージョンでビルドを実行して確認した
• ビルドなので、確認に時間がかかる
© 2020 NTT DATA Corporation 13
3. メーリングリストにパッチをメールする
どのMLに出す??
© 2020 NTT DATA Corporation 14
3. メーリングリストにパッチをメールする
• hotspot-runtime-devのMLへパッチをメールする
↓
• 一部をJBSにissue登録してもらえた
• パッチに対するコメントももらえた
© 2020 NTT DATA Corporation 15
ただ、ここから反応がなく
数週経ってしまう
© 2020 NTT DATA Corporation 16
3. メーリングリストにパッチをメールする
• 一部をJBSへ登録してもらえた
• パッチに対するコメントももらえた
↓
• 再度メールし、「この課題を進めたいです」と主張してみる
↓
• パッチへのコメントが再開
• 最終的にレビューまで進んだ!
© 2020 NTT DATA Corporation 17
参考: MLへの英語メール
• 文章表現がとても難しく感じた
• ビジネスメールでもない
• プライベートでもない
• メールなのでGitHubでやり取りするときの感じだと簡素すぎ!?
• 数行の英語メールを書くのにものすごく時間がかかる
• Google翻訳で英語を書き、和訳が変でないかを確認する
• (日本語を英語にするのではなく、逆にする)
© 2020 NTT DATA Corporation 18
主要開発者の方
からも長文の
コメントをもらえた
© 2020 NTT DATA Corporation 19
1. スポンサーを見つけ、リポジトリへプッシュしてもらう
• パッチへのコメントから最終的にレビューまで進んだ!
↓
• レビュー者にスポンサーとしてリポジトリにプッシュしてもらえた
© 2020 NTT DATA Corporation 20
ついに僕も
JVMの一部に…!
© 2020 NTT DATA Corporation 21
めでたしめでたし
(ん!?待てよ)
© 2020 NTT DATA Corporation 22
3. メーリングリストにパッチをメールする
• hotspot-runtime-devのMLへパッチをメールする
↓
• 一部をJBSへ登録してもらえた
© 2020 NTT DATA Corporation 23
パッチの残りの部分を
新たに進めなくては!
© 2020 NTT DATA Corporation 24
私のやること
3. メーリングリストにパッチをメールする
• 別のML(core-libs-dev)に
パッチの残りの部分をメールする
4. スポンサーを見つける
5. スポンサーにパッチを適用し、リポジトリへプッシュしてもらう
© 2020 NTT DATA Corporation 25
3. メーリングリストにパッチをメールする
• 別のML(core-libs-dev)にパッチの残りの部分をメールする
↓
• 残りの中のさらに一部をレビューしてもらえた
• 最後の1ファイルは長年更新がなく、レビューできる人が
簡単に見つからない
↓
• コード修正ではない解決方法を模索し、提案をメールする
• ビルドでその警告を無視する設定など
© 2020 NTT DATA Corporation 26
3. メーリングリストにパッチをメールする
• しばらくやり取りしていると、
ここをレビューできる方からメールがあり
(つまりOpenJDK主要開発者からのメール) 、
レビューOKをもらえた!
• 同僚(OpenJDKレビュワー)のレビューも加えて、
そのままスポンサーになってもらう
© 2020 NTT DATA Corporation 27
4. スポンサーを見つける/パッチを適用してプッシュしてもらう
• リポジトリにプッシュしてもらえた
© 2020 NTT DATA Corporation 28
図解
最初に作ったパッチ
パッチ1
HotSpot系
(Symbol)
パッチ2
core-libs系
レビュー1
NetworkInterface
レビュー2
k_standard
© 2020 NTT DATA Corporation 29
まとめ
• OpenJDKへのパッチは、ひるまず自分から動いていこう!
• 規模が大きいだけに、パッチを出して終わりではない
• その分プッシュされたときの喜びもひとしお
• Project SkaraでOpenJDKがGitHubベースになっても、
この作業内容は変わらないはず
© 2020 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です

More Related Content

More from NTT DATA Technology & Innovation

More from NTT DATA Technology & Innovation (20)

速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
 
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Recently uploaded

Recently uploaded (10)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

OpenJDKに初めてパッチを出した話(JJUGナイトセミナー 2020年8月26日 発表資料)

  • 1. © 2020 NTT DATA Corporation OpenJDKに初めてパッチを出した話 2020年8月26日 株式会社NTTデータ 技術開発本部 阪田 浩一
  • 2. © 2020 NTT DATA Corporation 2 自己紹介 • 阪田 浩一(さかた -) • 通称 じゅくちょー • JVMになりたい人 • NTTデータでJava/OpenJDK + GraalVM の研究開発とサポート業に従事しています • Javaチャンピオン • OpenJDK Author(1週間前に承認) jyukutyo
  • 3. © 2020 NTT DATA Corporation 3 劇的に変化した環境(個人的) • 転職 • 40年住んだ関西から東京へ • 職種 • Webアプリ開発運用から研究開発へ
  • 4. © 2020 NTT DATA Corporation 4 「OpenJDKに パッチをガンガン 書いてください」
  • 5. © 2020 NTT DATA Corporation 5 もちろん これをやりたくての 転職でした
  • 6. © 2020 NTT DATA Corporation 6 レビュワーの同僚から パッチを書く元ネタを もらえました
  • 7. © 2020 NTT DATA Corporation 7 パッチの元ネタ • GCCのバージョンを最新の10にしてOpenJDKをビルドすると コンパイルの警告が出る • 警告の検出内容が改善されている • パッチを書いて警告が出ないようにしよう!
  • 8. © 2020 NTT DATA Corporation 8 やることリスト 1. 警告を解消するよう修正する 2. 最新リビジョンで最終確認をする 3. OpenJDKメーリングリストにパッチをメールする 4. パッチのスポンサーを見つけ、リポジトリへプッシュしてもらう
  • 9. © 2020 NTT DATA Corporation 9 1. 警告を解消するよう修正する • 警告の内容を確認(抜粋) /home/jyukutyo/code/jdk/src/hotspot/share/oops/symbol.hpp:130:18: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] 130 | _body[index] = value; | ~~~~~~~~~~~~~^~~~~~~ /home/jyukutyo/code/jdk/src/java.base/share/native/libfdlibm/k_standard.c:743:19: error: 'exc.retval' may be used uninitialized in this function [-Werror=maybe- uninitialized] 743 | return exc.retval; | ~~~^~~~~~~ /home/jyukutyo/code/jdk/src/java.base/unix/native/libnet/NetworkInterface.c:974:13: /usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error: '__builtin_strncpy' output may be truncated copying 15 bytes from a string of length 15 [-Werror=stringop-truncation] 106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • 10. © 2020 NTT DATA Corporation 10 1. 警告を解消するよう修正する • 以下のコードが対象 • symbol.{hpp,cpp} • k_standard.c • NetworkInterface.c
  • 11. © 2020 NTT DATA Corporation 11 四苦八苦しながら 修正する (各ファイル数行) 理解の記録:https://www.sakatakoichi.com/entry/2020/06/22/HotSpot_VMのシンボル名に関わるコード
  • 12. © 2020 NTT DATA Corporation 12 2. 最新リビジョンで最終確認をする • 念のため、複数のGCCバージョンでビルドを実行して確認した • ビルドなので、確認に時間がかかる
  • 13. © 2020 NTT DATA Corporation 13 3. メーリングリストにパッチをメールする どのMLに出す??
  • 14. © 2020 NTT DATA Corporation 14 3. メーリングリストにパッチをメールする • hotspot-runtime-devのMLへパッチをメールする ↓ • 一部をJBSにissue登録してもらえた • パッチに対するコメントももらえた
  • 15. © 2020 NTT DATA Corporation 15 ただ、ここから反応がなく 数週経ってしまう
  • 16. © 2020 NTT DATA Corporation 16 3. メーリングリストにパッチをメールする • 一部をJBSへ登録してもらえた • パッチに対するコメントももらえた ↓ • 再度メールし、「この課題を進めたいです」と主張してみる ↓ • パッチへのコメントが再開 • 最終的にレビューまで進んだ!
  • 17. © 2020 NTT DATA Corporation 17 参考: MLへの英語メール • 文章表現がとても難しく感じた • ビジネスメールでもない • プライベートでもない • メールなのでGitHubでやり取りするときの感じだと簡素すぎ!? • 数行の英語メールを書くのにものすごく時間がかかる • Google翻訳で英語を書き、和訳が変でないかを確認する • (日本語を英語にするのではなく、逆にする)
  • 18. © 2020 NTT DATA Corporation 18 主要開発者の方 からも長文の コメントをもらえた
  • 19. © 2020 NTT DATA Corporation 19 1. スポンサーを見つけ、リポジトリへプッシュしてもらう • パッチへのコメントから最終的にレビューまで進んだ! ↓ • レビュー者にスポンサーとしてリポジトリにプッシュしてもらえた
  • 20. © 2020 NTT DATA Corporation 20 ついに僕も JVMの一部に…!
  • 21. © 2020 NTT DATA Corporation 21 めでたしめでたし (ん!?待てよ)
  • 22. © 2020 NTT DATA Corporation 22 3. メーリングリストにパッチをメールする • hotspot-runtime-devのMLへパッチをメールする ↓ • 一部をJBSへ登録してもらえた
  • 23. © 2020 NTT DATA Corporation 23 パッチの残りの部分を 新たに進めなくては!
  • 24. © 2020 NTT DATA Corporation 24 私のやること 3. メーリングリストにパッチをメールする • 別のML(core-libs-dev)に パッチの残りの部分をメールする 4. スポンサーを見つける 5. スポンサーにパッチを適用し、リポジトリへプッシュしてもらう
  • 25. © 2020 NTT DATA Corporation 25 3. メーリングリストにパッチをメールする • 別のML(core-libs-dev)にパッチの残りの部分をメールする ↓ • 残りの中のさらに一部をレビューしてもらえた • 最後の1ファイルは長年更新がなく、レビューできる人が 簡単に見つからない ↓ • コード修正ではない解決方法を模索し、提案をメールする • ビルドでその警告を無視する設定など
  • 26. © 2020 NTT DATA Corporation 26 3. メーリングリストにパッチをメールする • しばらくやり取りしていると、 ここをレビューできる方からメールがあり (つまりOpenJDK主要開発者からのメール) 、 レビューOKをもらえた! • 同僚(OpenJDKレビュワー)のレビューも加えて、 そのままスポンサーになってもらう
  • 27. © 2020 NTT DATA Corporation 27 4. スポンサーを見つける/パッチを適用してプッシュしてもらう • リポジトリにプッシュしてもらえた
  • 28. © 2020 NTT DATA Corporation 28 図解 最初に作ったパッチ パッチ1 HotSpot系 (Symbol) パッチ2 core-libs系 レビュー1 NetworkInterface レビュー2 k_standard
  • 29. © 2020 NTT DATA Corporation 29 まとめ • OpenJDKへのパッチは、ひるまず自分から動いていこう! • 規模が大きいだけに、パッチを出して終わりではない • その分プッシュされたときの喜びもひとしお • Project SkaraでOpenJDKがGitHubベースになっても、 この作業内容は変わらないはず
  • 30. © 2020 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です