🐰

世界一優しいはじめてのOSSコントリビュートのやり方

2023/12/22に公開

👋 はじめに

この記事は、「OSSコントリビュート?何それ美味しいの?」状態だった私が
たった1時間でPRを出しコントリビュートすることができた
初心者向けのOSSコントリビュートへの取り組み方について解説します!

エピソード付きなので、それも楽しみながら読んでください!

📖 それではさっそく手順を紹介

1️⃣ コントリビュートするOSSを探す

まず、有名なOSSだから激ムズissueに対処しなければならない…
なんてことはないです!!!(そんなこともあるけれども!!)

自分でも取り組めそうなissueを後で選べばいいだけなので、
まずは、以下のことだけぱっと見でクリアしていたら良さそうです!

  • ちゃんとメンテナーの方が動いていそうなコミュニティ
  • issuesにgood first issueのやつがある程度ありそう

探す場所については、GitHub でオープンソースにコントリビュートする方法を見つける が基本のきなので、これみて探すといいですね!

以降は、実際に私が初めてコントリビュートしたPandasを例に説明していきます!

2️⃣ 取り組むissueを決定する

では、実際にコントリビュートするリポジトリに行って、label:"good first issue"で絞り込んでみましょう!

そこそこありますね!!!

ここから取り組むissueを選ぶわけですが、初心者の人は、ドキュメント(DOC:)が王道です!
コントリビュートするOSSを普段使っていたりして、ある程度関数や使い方に理解がある場合は型(TYP:)とかも難易度低めです!

まあ、こんな感覚ですかね🤔

  • DOC系:初心者おすすめ!
  • TYP系:おすすめだけど、技術への理解があるほうがよい!
  • BUG系:初心者がやるには重め。。開いてみてすぐなおせそうならいいけど、泥沼な可能性が高いです。。。

もうほんまに、自信ないよ〜〜って人は、とりあえずドキュメントやっときゃOKです!👌

で。ここで注意すべきは、他の人がすでに取り組んでいないかどうかをみておく必要があるってことです!

確認方法としては、以下のような判断基準です!

  • 🙆‍♀️ OK
    • PRを出してない
    • 実際にissueのコメントを読んでみた感じ、取り組んでる人がいない
    • Asigneesがいない(いてもコメントを読んでみて大丈夫そうならOK)
  • 🙅‍♀️ NG
    • PR出してるマークがすでについている
    • コメントで、実装方法の相談をしている

Pandasでは、途中で取り組むのをやめたようなissueもいくつかあったので、もしそれをやるなら直接メンテナーの方にコメントで聞いてみるのが良いです!
今すでに開いてるissueでも、もう対応する必要がなくなったものや、他ライブラリーに依存したバグ修正のものもあるので、その辺りはコメントから読み取るしかないです!(英語つら)

ちなみに、そんなこんなでわたしがはじめて取り組むissueに選んだのはこれです👍
https://github.com/pandas-dev/pandas/issues/47042

3️⃣ 取り組みますよーの合図を出す

次に、取り組むissueを他のエンジニアに取られないように、マーキングします!!

これは他のOSSでどんな決まりになっているのかわからないので、あくまでもPandasの例ですが、
takeとコメントすればbotくんが自動でAsigneesにいれてくれました!ありがとう!

これで、他の人に横取りされず、issueに取り組むことができます!

4️⃣ 環境構築する

OSSにはContributing Guideがあります!

ここに、環境構築やブランチ名の付け方、3️⃣にあったtakeなどのコミュニティ独自のルールなども書いてあります!
ルール違反にならないように、ちゃんと読みながら進めていくことをお勧めします!

では、Contributing Guideをみながら、環境構築しちゃいましょう!

私はPandasなので、これみて環境構築しました!(実際の変更よりも環境構築の方が時間かかりました)
https://pandas.pydata.org/docs/dev/development/contributing.html

5️⃣ 開発する

ようやく開発です!開発ルールに関してもやっぱり、Contributing Guideはしっかりみましょう!

この部分はそれぞれ異なってくる部分ですが、参考までに、実際に私がドキュメント修正した際の開発の手順を書いておきます!

  1. ブランチ切る(忘れないで)
  1. 該当する変更箇所を探す
  2. 変更する内容を決める
  1. 変更する
  2. add→commit→push

6️⃣ PRだす

おつかれです!pushできたんですね!後もう少しです!
PRについては、すでに出してあるPRを参考にコメントを書くと良いです!
なるべく丁寧な方が良いので、何を変更したかはしっかり伝わるように書きましょう!

実際に私が出したPRです!
https://github.com/pandas-dev/pandas/pull/52137

7️⃣ レビューを待ち、修正を行う

あとは、レビューを待つだけです!
レビューをしてもらって、OKだったらマージです!
ダメだったら修正です!!

参考までに私のPR→マージエピソードも紹介しておきます
(メンテナーさんの優しさが伝わるエピソードなのでぜひ読んで)

🥢 はしやすめエピソード

やっとの思いでドキュメントを修正し、PRを出した私ですが、PRを出した時点でCIが落ちてました。。。

今回、Python環境でしっかりとアプリケーションを触るのは初めてで、CIが落ちた理由を考えるのにも時間がかかりそうだったので、
私は「ええい!聞いてしまえ!!!」の気持ちですぐに質問しました!
(↓初心者アピールもしっかりしています)

すると、とっても優しいメンテナーさん、教えてくれました。

この後色々、直すのですが、なんなのかわからず、こんなことになっちゃいました(直しすぎ)

すると、見兼ねたメンテナーさんが、何も聞いていないのに、

こうしたらええんやで〜〜〜って教えてくれました(優しい)

まあ、オチとしては、ドキュメントがreStructuredTextで書かれていて、その記法に沿って書けていなかったのでCIがおちちゃった、ということでした(もっと早く気づけ)

なんにせよ、こんな簡単な疑問でもこんなにしっかり対応してくれるメンテナーさん、素敵です

8️⃣ マージ!コントリビュートおめでとう!!!!

そして、PRのレビューもクリアしましたら、マージです!!
おめでとうございます!!!!!!これであなたもOSSコントリビューターですね!!!!!!

私もそんなこんなで作業時間を累計すると1時間ほどでマージできました!

メンテナーさんありがとう😭らぶ💕

💗 まとめ

ちょっと長くなりましたが、エピソードも加えながら書いてみました!
初めて記事を書きましたが、普通に大変ですね、みんなすごい。。

最後に、初めてコントリビュートした私がその時感じたコツをまとめておきます!

  • とりあえず初めてならgood first issueから選ぶ!
  • Contributing Guideみて、ルールを確認!
  • 他のPRやissueを参考に「issueを選ぶ→マージ」までの雰囲気を掴む!
  • わからんかったら、丁寧な英語でメンテナーさんに聞く!
  • わからんかったら、丁寧な英語でメンテナーさんに聞く!
  • わからんかったら、丁寧な英語でメンテナーさんに聞く!

って感じです!

今回ドキュメントでも1回コントリビュートしたことによって、OSSコントリビュートへのハードルをかなり下げることができました!
次私もいつOSSコントリビュートするか分かりませんが、またやってみようと思ってます!!

この記事が、あなたの最初のコントリビュートの後押しになることを願っています!!!🐰💓
Bye👋

Discussion