最終的にやったことをまとめた記事を投稿しました。
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
に貢献する大きなやりがいですね。
これからもぼちぼちやっていこうと思います。