最終的にやったことをまとめた記事を投稿しました。
wrongwrong163377.hatenablog.com
やったこと
JetBrains/kotlinにGitHubでPRを出し、マージしてもらいました。
当該PRは以下です。
github.com
このPRの内容
このPRに関しては全てテストです(変更行数は2,500行超、結構巨大です)。
このPRは、足りていなかったテストコードの補完兼後続の修正を分かりやすくするためのfailing testであり、本題となる修正は別途PRを発行しています。
内容は、kotlin-reflectでnullableなvalue classを引数に含む関数を呼び出した際にエラーになるバグの緩和です。
github.com
感想
大まかな感想は以下の3つです。
- 深掘りを続けてきた
Kotlinに貢献できたことが嬉しい Kotlinのような巨大プロジェクトでテストパターンが全く足りていない部分が有るとは思わなかった- 上手く行けば
kotlin-reflectに依存するライブラリ全体のvalue classサポートを進められそうなのでやりがいが有る
深掘りを続けてきたKotlinに貢献できたことが嬉しい
Kotlinに触れたのは、2018年のエウレカでのインターンシップがきっかけでした。
wrongwrong163377.hatenablog.com
そこから利用を続け、バックエンドはJavaだった職場にKotlinを持ち込んだり、Kotlin製の自作OSSを公開したり、moshiやjackson-module-kotlinのような有名リポジトリにコントリビュートしたり、そしてついにKotlinそのものにコントリビュートすることができました。
ずっと好んで取り組んできたものにコントリビュートできたというのは非常に嬉しかったです。
(どうでもいいことですが、今思い返すと、初めて外部リポジトリにコントリビュートしたのが丁度1年位前でした。) wrongwrong163377.hatenablog.com
Kotlinのような巨大プロジェクトでテストパターンが全く足りていない部分が有るとは思わなかった
前述の通り、テストだけで2,000行超という非常に大きなPRを発行した訳ですが、その原因はそもそも当該箇所に関してテストパターンが全く足りていない状況だったことです。
value classは既にstableとされている機能ですが、実際の所関連するkotlin-reflectの機能には多くの重大なバグが残されています。
今回自分はテストパターンの追加を行いましたが、テストパターンは恐らくまだまだ不足しています。
見たのがkotlin-reflect単体とは言え、Kotlinという大きなプロジェクトにこのような状況が有るというのは自分にとって大きな驚きでした。
上手く行けばkotlin-reflectに依存するライブラリ全体のvalue classサポートを進められそうなのでやりがいが有る
自分は現在KT-31141(本題となるPRで対応している問題)と、KT-27598の緩和に取り組んでいます。
これらの問題は長らくkotlin-reflectに依存するライブラリ全体のvalue classサポートを阻んできたものです。
つまり、自分の修正によって、kotlin-reflectに依存するライブラリ全体のvalue classサポートが進むということになります(あくまで上手く行けばですが)。
少なくともjackson-module-kotlinについては自分の方で進めようと思っています。
自分が書いたコードによってそのような大きな変化が起きるというのは、大規模OSSに貢献する大きなやりがいですね。
これからもぼちぼちやっていこうと思います。