Contribute Anniversary

Publish date: Nov 25, 2021
Tags: Tech

Contribute Anniversary

先日、初めて OSS に PR を出して merge され、晴れて contributor になれたため経緯を書いていきたいと思います。
該当 PR:
https://github.com/kubernetes-sigs/kubespray/pull/8224

経緯

ansible-playbook を実行したら「設定値が適切でないよ」と Error が出たので、Github で PR や issue を眺めて原因を探していました。見慣れたアイコンがあるなぁと思ったら、なんと職場の上司がそのソースコードに対して PR を出していて、わたしの Error 箇所である「適切ではない設定値」が merge されていました。

何よりもまず「わたしの上司コントリビューターなの?!」ということに驚きました。「Error 箇所を特定していたら上司を見つけたよ!すごい!」と、上司へ報告をしに行ったところ、上司は
「この設定で Error したの?もしバグだったら自分の修正が世界中のユーザーに迷惑をかけることになる・・どうしよう」
と落ち込んで(?)いて、確かにそうだな・・大変そう・・と思いながらも
「じゃあこの Error の原因調べるのお願いしますね」
と、丸投げして一週間くらい放置していました。

もし仮に修正が必要なバグがあったとしても、わたしじゃ恐らく原因を突き止められないしなぁという気持ちもありました。

何の音沙汰もなく一週間経ち
(世界中の人が使っているツールのはずなのに、わたし以外誰も何も文句を言ってこない。おかしい)
と、流石に上司のせいではなく、自分の環境が悪いのだろうなと思い調査してみることにしました。

該当箇所についてドキュメント内を調べたところ「設定値が適切でないよ」と警告が出ていた箇所とは、また別の設定値が出てきました。具体的には、上司が indentfirst=None と設定してたところは first=False と設定するように書かれていました。あれ?やっぱり上司は世界中の人に迷惑をかけているのかな?と不安になりながらも、それらパッケージのおおもとのソースコードを見てみることにしました。

すると、以下のことが分かりました。

  1. 現行バージョンでは indentfirst=None、新しいバージョンでは first=False と指定されている
  2. indentfirst=None は次期バージョンで Error になるため Warning である
  3. 現行バージョンでも first=False の設定を使うことができる

つまり、わたしの環境のパッケージのバージョンが一つ飛び抜けて高くなっていて(requirement.txt で様々なパッケージの推奨バージョンは指定されていたのに、どんな構築をすればそうなるんだ?)それが原因で今回の Error が引き起こされていました。上司は世界中の人に迷惑をかけておらず、わたしが自分で掘った穴に勝手に落ちている状態でした。

パッケージのダウングレードをすれば大丈夫そうということが分かったので、これで調査を切り上げようかと思いましたが、上司の出した PR を参考にして少し頑張ればわたしも今回の内容で PR を出せるのでは?と気づきました。

ただ、PR を出すにはテストケースを作成しなければいけません。とりあえず休日に、最小構成で構築して Error が発生する状況をつくる → 修正して実際に Error が出ないことを確認する。という試験の手順をまとめて、実施してみることにしました。

意気揚々と取り掛かったものの、依存関係や必須パラメーターなど手探り状態で期待値である Error が発生せず一日が終わってしまいました。仕方なく、PR だけ作成して修正の根拠となる URL や手順などをまとめ「この修正はテストを通ってません。できれば、テスト方法についてアドバイスを頂けますか?」とコメントを残すことにしました。

その日はなかなか眠れず、夜中に3回ほど起きては「試験が通ってから PR をだしてください」と怒られたらどうしよう・・と考えていました。

翌朝、早速レビュワーからコメントが付き

Thank you, kudos for the PR description, clear and complete!

と、PR の内容を褒めて頂いて、(おそらく軽微な修正であったために)試験については特に何も言われることなく approve されました。 その後、CLA に署名をしました。(Kubernetes は CLA 署名者からのみソースコードを受け入れているとのことで、どの OSS もそうなのかな?と思っていたらそういうわけでも無いみたいです)

最後に

わたしがめちゃくちゃな構築をしたがために ansible-playbook を実行して「設定値が適切でないよ」という Error が出ていたので
もしわたしがキチンと設定手順を踏んでいたら・・
その Error 内容を検索しているなかで上司を見つけて「身近な場所にコントリビューターがいた!」という驚きがなければ・・
自分で原因究明して「上司の出した PR を参考にすればわたしにも出来るかな」「テストケース作成ならできるかな」と挑戦しなければ・・
今回の PR は無かったなぁと思います。いろいろな偶然やラッキーが重なって、こうやって contribute 貢献することができたのだなぁと思うと感慨深いです。

これからも何か Error が起きたときは Github の PR, issue を見に行く習慣はそのままに、自分にもできることは無いか探していけたら良いなと思います。