はじめに
2020年も終わりに近づいてますが皆さんはアドベントカレンダー書きましたか?僕はまだ枠を2つ埋めてないのでこのポエムを書いています。12月の最初にアドベントカレンダーのネタを作ろうと思い、これを期にOSSに貢献しようと思い立ちましたが、なんだかんだあってOSS(といっても簡単なCLIですが)を作ることになりました。
TL;DR
OSS貢献しようとするアクションは勉強になります。特に普段使っているライブラリやツールに対して機能を追加しようと考えた時に既存の機能でできないかちゃんと調べてみたり、実装を理解しようとするからです。しかし、使っているライブラリやツールは比較的スター数が多いものを使うと思うので、その点で言えば簡単に貢献できるかと言うとタイミングによる部分が多いなと感じました。
なので、ネットで見かけるOSS貢献簡単だよ系の記事はスター数が少ないものに貢献するという内容が多い気がします。自分が使わないスター数の少ないものに貢献してもあまり意味がないと思った結果、自作OSSを作ることにしました。
宣伝ですが、作ったのはKustomizeのsourcesの依存関係を可視化するGraphmizeというコマンドラインツールを作りました。良かったら使ってみてください。コントリビュートもお待ちしてます。
OSSに貢献したくて…
最初は何もわからない
最初は何もわからないのでネットの記事を頼りにやり方を勉強しました。やり方はこの辺りが参考になりそうです。
意外ととっつきやすいOSS開発参加方法まとめ
しかし、TL;DRでも書いた通り普段使っているライブラリは有名どころが多く、最初に手を出すにはキツそうな雰囲気を感じました。思った通りで、この資料にある通り、初心者はプロジェクトと取り組む課題を選ぶところが難しいです。
https://speakerdeck.com/ohbarye/how-to-find-good-first-issues-final?slide=17
ドキュメントで貢献してみる
とりあえずドキュメントなら貢献できるだろうと思い、業務で使っていたKubernetes Cloudflare SyncのREADMEにちょっと追加して、コントリビュートした気分になってみました。しかし、次につなげようとした時にドキュメントを整備するだけでは実装の理解には繋がらないなと感じてしまいました。
自分が使ってないツールを開拓する
GtiHubのタグにはgood first issueという親切なものがあり、それがついているissueを眺めることにしました。調べ方ですが、Github Help Wanted というサイトが言語とタグで絞り込むことができ、探しやすかったのでオススメです。ですが、知らないプロジェクトが多いので興味が引かれるものがあればいいですが、使ってみようかなとなるところにハードルを感じました。
無理やりOSSに貢献する(?)
Github Help Wantedで探すのも疲れてきてモチベが下がってきてしまったので、自分が普段課題に感じていることを解決するようなアプローチにした方がいいなと思いました。課題を解決できそうなOSSがないか調べているとそれっぽいのがあったのですが、更新が2年前で止まっていたので以下のリポジトリをベースに新しいものを作ろうと考えました。
jpreese/kustomize-graph
実際は欲しい機能と少し違っていたので、このリポジトリを参考にして自分のツールを作ったのですが、やっていることはある意味、機能追加なので得られる経験としては実質貢献(?)だと思います。
まとめ
アドベントカレンダー用のネタとしてOSSに貢献しました!と高らかに言うことはできませんでしたが、OSSの楽しさを少し感じることができました。モチベを持って地道に続けることができる人ならOSS貢献は楽しめそうな気がします。
すごいコントリビュータになるまでの道は厳しそうですが、スター数の多いライブラリのバグ修正だったりも挑戦してみようと思っています。