Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What are the problem?
@hourglasshoro

OSSに貢献したくてOSSを自作した

はじめに

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貢献は楽しめそうな気がします。
すごいコントリビュータになるまでの道は厳しそうですが、スター数の多いライブラリのバグ修正だったりも挑戦してみようと思っています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?