概要
今年初めてOSSにコントリビュートをしました。
OSSコントリビュートする前まで、コントリビュートは難しいものという印象がありました。しかし、実際にしてみると思っていたほど難しいものではなく、非常に多くのものを得られたと感じています。
そこで、OSSにコントリビュートする経緯やコントリビュートして良かったことについて振り返りたいと思います。
経緯
DigdagというOSSのワークフローエンジンに対してコントリビュートを4つしました。バックエンドはJava、フロントエンドはReactで書かれています。
コントリビュートの内訳としては、バックエンドとフロントエンドの修正がそれぞれ2つずつです。
Digdagは、私が所属している会社でも利用しているOSSです。
コントリビュートのきっかけはこの中で使われているライブラリが古く、アップデート後に利用できる機能が使えないことでした。なので、記念すべき1つ目のコントリビュートはこのアップデートでした。
https://github.com/treasure-data/digdag/pull/1722
メジャーアップデートだったため、破壊的な修正が含まれており、ビルドの設定ファイルに含まれているバージョン定義を書き換えるだけではだめで、ライブラリ利用箇所にも手を加えなければいけませんでした。
PR作成後に、テストを追加してほしいということと、コードの書き方について指摘があったものの、無事にマージされました。
2つ目も業務がきっかけで修正したものになります。
https://github.com/treasure-data/digdag/pull/1753
外部からあるデータを取得する処理において、対象のデータがあるにも関わらずnullを返してしまう部分があったため、リトライを入れました。このPRは1回目にテストを入れ忘れていたことにでレビューが入ったので、ちゃんとテストも追加した上でPRを作成し、特に指摘がなくマージされました
3つ目と4つ目はフロントエンドの機能追加です。
https://github.com/treasure-data/digdag/pull/1719
https://github.com/treasure-data/digdag/pull/1760
ここまでで述べた2つのバックエンドの修正以外に何かコントリビュートできるものはないかなと考えていました。
そこで私は以下の観点でコントリビュートするものを探しました。
- ゼロベースではなくissueから探す
- OSSのニッチな修正/機能追加をする
ゼロベースではなくissueから探す
業務きっかけのコントリビュートは、偶然発見した問題を改善するというものです。しかし、コントリビュートを目的にゼロから能動的に問題点や機能追加を探すのは大変です。そこで、先人たちがすでにissueとしてあげている中から探すことにしました。こうすることで効率的にコントリビュートのチャンスを見つけることができます。
OSSのニッチな修正/機能追加をする
Digdagはワークフローエンジンであるため、コアの実装はバックエンド部分です。フロントエンドも重要ではあるものの、バックエンドの修正と比べると優先度は低く、また比較的簡単なものがあるのではないかと考えました。実際、フロントエンドの機能追加はissueは古いものがあったり、バックエンドの修正に比べて比較的簡単なものが多かったです。
なので、issueの中からニッチなものを選択しこのフロントエンドの修正2つをコントリビュートしました。
良かったこと
コントリビュートの経緯と問題の探し方を紹介しました。実際にコントリビュートして良かったことを述べます。
スキルアップにつながる
最初のコントリビュートではいくつかのコードの書き方やテストについてレビューを頂きました。僕自身あまりJavaの実務経験はなく、コードやテストの書き方については調べながらPRを作成しました。
その過程で未経験の技術についての知識を得て、また有識者にそれをレビューしてもらえることはとても学びにつながったと思います。
また、コードリーディングも必然とする必要があるため、ライブラリへの知識が深まり業務への還元につながったと思います。
コーディングのエビデンスになる
これが最も良かったことだと思っています。Github等でのコミット履歴は他者からも見やすく評価されやすいと感じています。SNS経由でいくつかのメッセージをいただくことがあるのですが、その中にOSSへのコントリビュートについてを触れてくださる方もいらっしゃいました。
OSSへのコントリビュートは思った以上にコーディング活動のエビデンスになると感じました。
まとめ
OSSにコントリビュートする経緯やコントリビュートして良かったことについて振り返りました。やってみると、始める前に思っていたほどの敷居の高さはまったくなく、かなり多くのものを得られたと思います。
みなさんも小さな修正でよいので気軽にOSSへのコントリビュート挑戦してみてはいかがでしょうか。