Richard Imaoka's Blog

2017年より職業Scalaプログラマになった、リチャード・伊真岡のブログです。

OSSコントリビューション イシューの見つけ方 その1

こんばんは。リチャードです。

皆様OSS(Open Source Software)に貢献したいとおもっているけど、どこから初めていいかわからない人はいますか?OSS貢献している人ってかっこよく見えますよね。でも、カッコいい人、技術力が高い人ばかりがOSS貢献しているわけではありません。

わたしは技術的に全然大したことないですが、2年ほどakkaに貢献しています。 むしろ、私のように技術的に大したことないエンジニアでもOSS貢献を通して技術力を磨くことが出来ると思っています。

さて、今日はそんなOSS貢献をしたいと考えている皆さんに向けて、はじめの一歩の踏み出しかたを紹介したいと思います。

方法の紹介です

あ、ちょっと待ってください。話がそれますが、この記事で紹介する方法よりも効果的にOSS貢献したいひとには、OSSハッカソンという最強のファストトラックがありますよ。わたしもスタッフとしてお手伝いしているイベントです。ぜひぜひご応募を。

jsa.connpass.com

今度こそ方法の紹介です

TL;DR

  • help wantedタグで検索しましょう
  • すべての簡単なイシューにhelp wantedタグがついてるわけではないので、タグがついてないものもしらみつぶしにさがします
  • 見つけた後にすることはまた別の記事で書く予定です

help wantedタグで検索しましょう

私も貢献しているakkaを例にお話ししますが、akkaのように現在多くのOSSGitHubで管理されています。そしてGitHubには、akkaもそうですがIssuesというページがあります。

f:id:richard-imaoka:20180212195106p:plain

そこを開くとhelp wantedというタグが付いたイシューがあるので、そのhelp wantedというタグをクリックすると、help wantedタグがついたイシューのみが表示されるページに飛びます

プロジェクトごとのメンテナ陣が「これはコミュニティ(コアなメンテナ陣以外)の人たちに手伝ってもらいたい」と思ったイシューにはhelp wantedタグ(もしくはそれに類するタグ)が付けられます。簡単なイシューであることが多く、OSS貢献を始めるには手頃なイシューが比較的見つかりやすいかと思います。 あとはひたすらイシューを一件一件ひらいて、中身を見て、すこしでも自分が手を出せそうなイシューを探し出します

頑張って、頑張って探してください。これだけです、ほんとにこれだけです。ものすごく効果的なコツはないのですが、地道なイシュー探しが1コミット、そしてまた1コミットとあなたのコミット履歴を伸ばしてくれます。(GitHubはプロジェクトごとのコミット数ランキングを出してくれるので、励みになりますね。)

しかしhelp wantedを見ても手を出せそうなイシューがなかった見つかりそうもない場合はどうしましょう?正直な話をすると、わたしは2年もakkaにコミットし続けているのにhelp wantedがついているイシューの多くについて、どこから手を付けていいのかわからないものがたくさんあります笑

初めての人ならなおさら、help wantedの中から手頃なイシューが見つからないこともあるでしょう。そんなときは次の方法を試してみましょう。

全ての簡単なイシューにhelp wantedタグがついてるわけではないので、タグがついてないものもさがします

基本どのプロジェクトでもhelp wanted(もしくはそれに類似するタグ)は手作業でつけられています。ある程度規模の大きなOSSになると、イシューの管理が追いつきません。超人気OSSだと、tensorflowはイシュー1,000以上、Kubernetesは4,000以上のイシューがあります。各プロジェクト数人しかいないコアなメンテナ陣では全てに目を通すことが出来ません。

なので、本来ならばhelp wantedがつけられるような簡単なイシューでも、ついてないままになっていることはよくあります。基本的にOSSは一般の人々からの貢献は大歓迎なので、遠慮せず手頃なイシューを見つけたら取り掛かりましょう。

これも先程と同じで、…いうよりも先程よりも更にイシューの数が多いので大変なのですが、一件一件詳細を開いて手を出せそうなイシューを探してください。わたしもこれをよくやっています。電車に乗っている時間などを活用して頑張って探してますが、だいたい飽きて5分でガールズちゃんねるに飛んでゴシップネタを見はじめています。

だんだん雰囲気がわかってきましたか…?そうです、多くの場合OSS貢献は「超絶技術力のあるスーパーエンジニアが、さくっと現れてクールな機能を実装してヒャッホー!x100コミット完了」ではなく、地道に地道にイシューを眺めて、眺めて、探して直すという地味さ極まる作業なのです。その反面、その地味な作業に耐え続ける根性があればだんだんOSS界隈で実績を積んでいくことが出来ます。

見つけた後にすることはまた別の記事で書く予定です

いったん「手を出せそうだな」と思っても、実際に手を出そうとすると思いの外苦戦することもOSS貢献では多いと思います。わたしがakkaに初めて貢献したときは、ほとんどドキュメンテーションを直すだけのとても簡単なイシューでしたが、取り掛かり始めてからイシューをちゃんと理解してコードサンプルの動作確認も含めて一ヶ月近くかかったと思います。

simplifyTestKit doc async sample #18804 by richardimaoka · Pull Request #19906 · akka/akka · GitHub

このイシューですね。Pull Request上がってすぐマージ(コミットの取り込み)が行われているように見えますが、Pull Request上げるまでが長かったんです。

イシューを見つけてからPull Requestをあげるまでもコツのようなものはあります。そのことはまた別の記事で書いていこうと思います。

その他の探し方

これもまた別の機会で記事にしようかと思いますが、他にもイシューの探し方のコツがあります。初心者に特にオススメなのはドキュメンテーション系のイシューを探すことですね。私も貢献の大部分はドキュメンテーションの修正や、単なる誤字脱字の訂正を含みます。取り掛かりたいOSSプロジェクトが本体レポジトリの中にドキュメンテーションを含んでいる場合特に、積極的にドキュメンテーションの修正イシューに手を出しましょう(ドキュメンテーションOSSプロダクトの本体と別レポジトリになっている場合やる気が若干削がれますね…でもやらないよりましだと思います。)

いつでも私リチャードに聞いてくださいね

特にakkaを中心に、Scala OSSに貢献したいけど、どうしていいかわからないときはぜひ私にtwitterで聞いてみてください。

twitter.com

出来る限りのことはサポートしますよ。わかんないときはわかんないっていいますし、出来ないことは出来ないですけど、だからこそ気軽に聞いてもらって、私が助けられることがあればラッキーみたいに思ってください。

なんでお金にもならないのにこんなことするかって?

建前論を言えば私は日本のOSSコミュニティがもっと盛り上がって欲しいと思っています…というのはもちろんウソではないのですが、私のように無名なエンジニアにとっては名前を覚えてもらう良い機会だと思っているからです。皆さんへのお手伝いを通して、その中から一人でも私の名前をちょっとの間だけでも覚えてもらえると、私にとってもすごく嬉しいことです。急には有名にはなれないので、地道な積み重ねをしようということですね。

最後にもう一度宣伝、やっぱりOSS貢献するんならエキスパートに指導受けるのが最大の近道です、こちらへの応募どうぞ!! jsa.connpass.com