はじめに
先日 (超軽微ですが、、)初めてOSSコントリビュートしました
意外とgemにPRを送るまでの詳細な手順をまとめている記事が見つけられなかったのでまとめたいと思います。
きっかけ
gem recapthcaの挙動を確認するためにコードを見ていると叩いているAPIのバージョンが古いことに気づきました。
OSSコントリビュートに興味があったのでこれならすぐ修正できる!と思いPRを送ることに。
PRを送るまでの流れ
ドキュメントを読んで、コントリビュート時の注意点を確認
Contributingについて記載がないか確認します。
例:Ruby
See "Contributing to Ruby", which includes setup and build instructions.
既にある issues, PRを確認する
クローズされたものも含め関連するキーワードで検索をかけてissues, PRに目を通し、議論中であったり既にPRが作成されていないか確認します。
解決できないエラーの報告、新しい機能やアイデアの提案であればまずはissueをオープン、明らかなバグなどで自分で解決できる場合はPRを送るために次に進みます。
リポジトリのフォーク、クローン
Forkボタンからリポジトリをフォーク(GitHub内でのリポジトリのコピー)
次にフォークしたリポジトリをローカルにクローンします
$ git clone {{git@github.com:yuh-pen/recaptcha.git}}
リモートリポジトリとして、オリジナルのリポジトリを upstream
という名前で設定
$ git remote add upstream {{git@github.com:ambethia/recaptcha.git}}
Rubyのバージョンを合わせる
gemspec の required_ruby_version
を確認してrubyのバージョンを合わせます。
s.required_ruby_version = '>= 2.7.0'
$ rbenv local 3.0.1
$ bundle install
bundle の --path について
最近はずっとdockerを使っていたのでローカルでrubyを動かすのが久しぶりだったのですが、そのまま bundle install
したら vendor/bundle にインストールされ gitignore されていなかったため差分ファイルがすごいことになりました
pathの設定は必要ないと思ったので以下で削除しました
$ bundle config --delete path
bundle install時に--path vendor/bundleを付ける必要性は本当にあるのか、もう一度よく考えてみよう
修正(テスト追加)
ブランチを切って修正し、必要があればテストも追加します。
テストを実行して全て通ればOK
$ ruby test/*
PR作成
変更をpush
$ git push origin HEAD
以下のようにオリジナルのリポジトリに表示されているのでCompare & Pull reauestからPRを作成します
表示されていない場合は New pull request
から以下の compare across forks
をクリックするとフォークしたリポジトリも選択できるようになります
PRには関連するissueや関連するドキュメントのリンクを入れてできるだけわかりやすくします
(Closes #37.
なども使う)
翻訳はDeepLが神!!これさえあれば怖くない!
同じリポジトリの他のPRなども参考にしてよしなにやりましょう
果報を待つ
そのままマージされる場合もあれば、コメントで変更のリクエストをされる場合もあります。
必要であれば他の人に助けを求めるのもOKですが何かしらのリアクションはしましょう。
PRがマージされればあなたもOSSコントリビューターです
おわりに
こちらが私の初OSSコントリビュートです。軽微な修正だったこともあり翌朝にはマージされていてとてもうれしかったです!
あまり堅苦しいこと抜きに、個人的にはマージされるとテンション上がるのでOSSコントリビュートおすすめです
この記事がOSSコントリビュートの手助けになれれば幸いです!