good first issueからOSS(Renovate)へコントリビュートした話
対象読者
OSSへのコントリビュートに興味がある方
はじめに
good first issueから、OSSのRenovateへのコントリビュートするまでの手順についてまとめてみました。これからOSSへ貢献してみたいという方の参考になれば幸いです。
good first issueとは
good first issueは、初めての貢献者でも取り組みやすいとされる問題に付与されるラベルです。具体的には、小さなバグの修正やドキュメンテーションの更新などが該当します。
Renovateとは
Renovateは、JavaScriptやPython, Javaなど多くのプログラミング言語を対象とした依存関係の更新ツールです。開発に用いるライブラリのバージョンをそれぞれ追跡するのは困難ですが、Renovateを利用することで自動的に新しいバージョンのライブラリに更新するプルリクエストを作成してくれます。
以下に今回作成したプルリクエストのリンクを貼りますので興味ある方はご覧ください。
コントリビュートの流れ
- good first issueから取り組めそうなissueを探す
- コントリビュートガイドラインを読む
- リポジトリをフォークする
- コードを編集する
- プルリクエストを作成する
- レビューコメントに対応する
続いて、これらの手順について詳細に解説していきます。
1. good first issueから取り組めそうなissueを探す
まずは、取り組めそうなissueを探すところからはじめました。
good first issueのラベルが付いたissueを上から5つほど中身を確認し、修正難易度が低そうなものを選びました。
具体的には、 any-version
とno-version
という2つのskipReasonsをunspecified-version
に統合するという内容でした。skipReasonsとは、Renovateが特定のパッケージ更新をスキップする理由を表示するためのものです。
こちらのissueに対する作業は主に文言の置き換えとなるため、取り組みやすそうだと判断しました。
2. コントリビュートガイドラインを読む
著名なOSSプロジェクトにはコントリビュートガイドラインというものが存在します。
これは、新規のコントリビューターがプロジェクトに参加する際のルールや手順を明示した文書で、コードのスタイルガイドやプルリクエストの提出方法などが記述されています。
適切な形式でプルリクエストを作成しないとマージされない可能性があるため、まずはガイドラインを読みました。Renovateの場合は、コントリビュートするためにCLA(Contributor License Agreement)という契約書にサインする必要があります。CLAとは、コントリビューターが提供したコードについての権利を明確にするためのものです。これらの点も含めて、ガイドラインを確認することは大切だなと思いました。
3. リポジトリをforkする
次に、GitHub上のRenovateリポジトリをforkしました。これは、自分のアカウント上でプロジェクトをコピーし、元のプロジェクトに影響を与えずに自由に変更を加えることを可能にするための手順です。
4. コードを編集する
forkしたリポジトリ上で、issueの内容に基づいてコードを編集しました。
文言を置き換えるだけとはいえ、変更箇所の周辺コードも確認しながら作業を行いました。
コミットメッセージに関しては、Renovateの場合、後で一つまとめられるため、そこまで気を使う必要はありませんでした。ただし、これはプロジェクトによるため、ガイドラインや過去のPRを参考にすると良いと思います。
5. プルリクエストを作成する
コードの編集が完了したら、次にプルリクエストを作成します。
英語が得意ではないため、直近でマージされているものを参考にしつつ、文言を整えました。
6. レビューコメントに対応する
プルリクエストに対して、コメントがある場合はそちらの対応をします。
今回は、以下の2点の対応を行いました
- 文言を置き換えた結果、アルファベット順が崩れてしまった箇所の修正
-
unknown-version
というメッセージも置き換えていいのではないかという提案への対応
それらのコメントに対応後、メンテナーから承認され無事にマージされました。
感想
大きな変更はありませんでしたが、普段から利用しているOSSに対して貢献できたことに達成感を感じました。自分のGitHubのプロフィールページにもコントリビュートしたプロジェクトが表示されるので嬉しかったです。
OSSへのコントリビュートに興味がある方の参考になれば幸いです。
Discussion