社内でラップバトル的な感じで情報共有をする会があるのだが、その場で "ScalaのpartitionMapがKotlinのIterableにはなくて不便だからextension書いた" 的な話をした。
反応も多少あったので調子に乗ってArrow-ktにissue切ってPRだしたら無事に取り込まれた。Arrowの次のバージョンが1.1.6や1.1.7になるか2.0.0になるか微妙なところだが、何れにせよ次期リリースには含まれるはずである。
感想としては、extension作って便利だったら積極的にOSSに対してコントリビュートして取り込んでもらうというのは今後も有効なムーブだなと感じたのが一つ。あとはKotlinというかArrow.ktのコミュニティの温かみを感じたのがもう一つ。このblogでは後者について記録しておく。
実装途中、knitが生成するテストコードのまわりで困ったことがあったので、以下の通り質問をSlackに投げたところ、有識者やArrowのメンテナにレスをもらい、そもそもの実装に対する改善策も提示してもらった。さらに私のブランチに対してこうすれば良いぞ的な例をPRの形で出してくれて、手厚い対応をしてもらっている。
結果、私としてはその意見をもとに修正したコミットを作りArrow.ktに対してPR出すだけのかんたんなお仕事となった。
こういう技術者コミュニティで質問するのとかは個人的には結構勇気がいる活動なのだけど、今回このSlackで相談をするのは初めてだったにもかかわらず心理的ハードルがまったくなく行うことができた。というのも、Kotlin Lang Slackのarrow部屋に関しては常日頃からFPの初学者風のコメントから上級者っぽそうなコメントまでメンテナや有識者が軒並み細かく反応してくれているのを見ていたので、今回も反応くれるだろうというイメージが持てて安心していたからである。
また出したPRに対しても、first contributeに対する感謝のコメントが付いたり、関数名について "ChatGPTはseparateMapが良いって言ってるけど俺はseparateEitherが妥当だとおもうわ" 的なコメントでやんわり直すことを提案してくれた。他のPRでメンテナ同士の会話を見るともっとストレートなのでおそらく初コントリビュートだから優しくしてくれたのだと勝手に思っている。そういうところやslackでのコミュニケーションのとり方から、メンテナのコミュニティ維持・発展に対するスタンスが伝わり感動している。
いくつかのOSSにちょっとしたPRを何度か出したことがある程度なのでサンプルが少ないが、ここまでコントリビュート体験が良かったのは初めてかもしれない。レビューコメントの付け方は自分の仕事上でも活かせそうだし、とても学びのあるOSS活動となった。