🚀

初めてOSSのコントリビュートをした話

2024/06/02に公開

はじめに

ここ最近、はじめてOSSのコントリビュートをしたので、その際に私が参考にしたサイトや実施したことをまとめたものを記載します。

OSSのコントリビュートを考えている方のご参考になれば幸いです。

今回貢献したプルリクエストは下記になります。
https://github.com/lukasoppermann/html5sortable/pull/956

OSSに興味を持ったきっかけ

OSSに興味を持ったきっかけは、「OSSのコントリビュートってなんか難しそう」というイメージが私はありました。その考えを打ち破るべく、今回貢献しました。

コントリビュートになるまでの流れ

  1. OSSを探す
  2. コントリビュート内容の確認
  3. OSSのリポジトリをフォークして対応する。
  4. 対応内容をOSSのリポジトリにPRを出す。
  5. RV対応をしつつマージを実施

1. OSSの探し方

自分が普段使っている言語、ライブラリやフレームワークを対象に絞って探しました。
初めは、「good first issue」と呼ばれる初心者向けのタグがついているissue対応をする方針にしました。

今回選択したissueは下記になります。
https://github.com/lukasoppermann/html5sortable/issues/271

探す際に用いたサイトは下記の2点です。
どちらも「good first issue」を対象にまとめられていて使いやすかったです。
https://goofi.vercel.app/
https://goodfirstissue.dev/
https://goodfirstissues.com/

2. コントリビュート方法の確認

基本的にCONTRIBUTING.mdがリポジトリのルートにありますので、そちらを読んで確認します。
今回対応したリポジトリでは下記のガイドラインが記載されておりましたので、これを念頭に入れてissueに着手していきます。

  • PRを出す際に気をつけてほしいこと
  • コードの書き方
  • コミット対象にしないもの
  • テストの作成と実行方法
  • upstreamの設定方法

https://github.com/lukasoppermann/html5sortable/blob/master/CONTRIBUTING.md

3. リポジトリのフォーク

OSSの対応を行う環境を作成します。
フォークの方法は、OSSのリポジトリ内で写真の矢印が指しているボタンから可能です。
フォークの写真

フォークをすることで、OSSリポジトリをローカルリポジトリとしてコピーされます。

OSS対応を行う作業環境は、コピーされたローカルポジトリを使用します。

upstreamの登録

upstreamとは、フォーク元のリポジトリとローカルリポジトリを同期させることができます。そうすることで、最新の変更を取り込みつつ、作業することができます。

今回は、CONTRIBUTING.mdに記載されていましたが、基本的にこの作業はしたほうが良いと思います。

  1. 登録
git remote add upstream フォーク元リポジトリのURL
  1. 更新
# 最新のupstreamの情報を取得
git fetch upstream
# 更新したい作業ブランチにチェックアウト
git checkout your-branch
# 更新ブランチにmainの情報を反映
git rebase upstream/main

4. 対応内容をOSSのリポジトリにPRを出す

  1. 自身のリポジトリから、PR作成ボタンを押します。
    PR1

  2. フォーク元へのリポジトリにブランチ指定でPRを作成することができます。
    PR2

  3. PRの内容については、CONTRIBUTING.mdに記載されていたり、過去のPRを参考にすると良いです。

  4. メンテナからreviewが来ると思いますので、対応していきます。無事マージされると、コントリビュート成功になります。

PRの参考

厳格にルール化されていなければ、記載されていることに加えてわかりやすいPRを作成するように工夫を加えると良いかと思います。
今回は下記の内容を記載しました。

  • 変更の内容の概要
  • 確認したチェックリスト
  • 関連のissueを提示
  • 実装動画を乗せる

githubは.gif拡張子は簡易的な動画として貼ることができます。
.mov等の動画を.gifに変換する際に私は下記のツールを使用しています。
https://github.com/lukasoppermann/html5sortable/blob/master/CONTRIBUTING.md

5. 後始末

  • ローカルブランチを最新化しておきましょう。
  • 対応したissueをクローズ、もしくは完了の知らせを入れておきましょう
    issue完了

学んだ教訓と今後の展望

この経験を通じて、冒頭で感じていた「OSSのコントリビュートが難しそう」という漠然とした不安が払拭され、使用するツールのリポジトリのissueやPRを積極的に見るようになりました。

OSSによりますが、他人のコードから学びを得たり、人柄を知らない方からレビューをいただく機会は楽しかったです。
海外のエンジニアと英語でやりとりした経験は自信にもなりました。

マイナーリポジトリだと既にサポートが切れやレスポンスが遅かったりするので、変更履歴が直近にあったかどうか確認するようにした方が良いと思いました。

将来的にはより大きなプロジェクトに貢献し、プロジェクトのメンテナとしても活動できるようになることを目指したいと思います。

Discussion