なになれ

IT系のことを記録していきます

OSSにPull Requestをマージしてもらえた話

つい1ヶ月弱前に世の中で結構使われているであろうOSSにPull Requestを出してマージしてもらえました。
日常的にOSSにContributeしているようなエンジニアであれば、なんだそんなことかという感じかもしれません。
ただ自分としては初の体験であったため、その経緯について所感とともに記したいと思います。

Pull Requestを出したOSSは、Argo RolloutsというKubernetesでの利用を前提としたツールです。

argoproj.github.io

仕事で使っているツールだったので、このOSSにContributeしてみようと思い立ちました。
それなりにツールの内容を把握していたというのも大きかったと思います。

Issueの探し方

まずは、Contributeするために取り組めそうなIssueを探すことからはじめました。
GitHubのドキュメントにおいて、OSSにContributeする方法が紹介されています。

docs.github.com

この内容に従って、good first issueを探すようにしました。
Argo Rolloutsの場合、担当者が決まっていないgood first issueがいくつかありました。
その中で、自分のスキルで取り組めそうなIssueに取り組むことにしました。
該当のIssueの内容が過去に自分もそう思ったことあるなーと感じたこともそのIssueに取り組むことを後押ししました。
Issueの選定にあたって、自分にとってもメリットがあるようなIssueに取り組むのがモチベーションを保つのに良いと思います。

Contribute

Issueに対してのアクションは特になさそうな雰囲気だったので、Issueにコメントなどをせずにリポジトリをフォークして、いきなりPull Requestを作るための開発をしはじめました。
Argo RolloutsではContributeのためのドキュメントがあり、その内容を読んで環境構築をしたり、どのようにビルドやテストを実行するのかを把握しました。
また、Pull Requestを作るにあたってはテンプレートが用意されていて、チェックリストでチェックする仕掛けになっていました。
テストを書くというチェックがあったので、一通りテストを書いてPull Requestを作りました。

Pull Requestには特にメンションはつけませんでしたが、1日ほどでオーナーの方からコメントが来てました。
こういう風にしたいと思っているので、ちょっと直して欲しいという旨の依頼で、なるほどと思って、とりあえずそれっぽく思いつくままに修正しました。
この時点で本当に大丈夫かなという懸念があったのですが、このやりとりのあとであっさりPull Requestがマージされました。

最終的にできたPull Requestが下記です。

github.com

これがOSSにContributeすることかという実感もあまりなく、あっさりと終了しました。

今回のContributeにあたってはContributor License Agreementというものがあったり、GitのコミットにSigned-off-byをつけることであったり、馴染みがないプラクティスがありました。
また、コミットメッセージの仕様がまとめられていることもこの機会に知ることができました。

www.conventionalcommits.org

おわりに

広く世の中で使われているOSSにContributeするというのは予想以上に学びが多い経験でした。
このような機会を作るとOSSのソースをじっくり見ることになり、テストの書き方などで自分では思いつかないようなアプローチをとっていて勉強になりました。