約2時間でPR作成までできた
取り組むissueを決定してからPRを作成するまで2時間ぐらいでできました。最初にこれを書いたのは「俺すごいだろ!」的な意味で書いたのではなく(OSSコントリビュートしたことありますって言えるのは嬉しい)同年代の人やまだOSSをやったことがない人のハードルを下げたかったからです。僕がまさにそうだったんですが、OSSなんてベテランのつよつよエンジニアがやるイメージだったので、OSSといっても難易度にはとても幅があり、簡単なものであれば結構すぐにできるよ!ってことを伝えたかったです。
背景
僕はkyoheiさんという自分で作ったOSSを実際に運用されている方のyoutubeをよく見るのですが、そこでOSSというものを知りました。なんとなく言葉では聞いたことがあるけど実際にコントリビュートしたことはなかったのですが、以下の記事を見つけたことをきっかけにやってみようと思い、始めました。就活の真っ只中で急にこういうのを思い立って始める自分はいいのやら悪いのやら、、、
https://qiita.com/Naughty1029/items/cf8750f375fa99bce9bb
コントリビュート先の探し方
先ほどの記事にも記載されている「good first issue」というOSS初心者向けのissueがまとめられたサイトから探してもいいのですが、僕がここから調べたときはほとんどのissueがすでに別の人がアサインされていて取り組めるissueを見つけられませんでした。有名になりすぎたことで競争率が高いのかも(?)
僕はシンプルにgithubの検索欄で以下のような条件で初心者用のissueを探しました。
is:issue is:open label:"good first issue" language:Go
これで「good first issue」と似たような検索ができます。
自分が見つけたコントリビュート先
自分は今インターンでConnectRPCを使用したAPI実装をgolangで行っているのでgolangで最初のissueとして良さそうなリポジトリを探していました。そこで見つけたのが今回コントリビュートした「opkssh」です。
https://github.com/openpubkey/opkssh
これはOIDCを使ったSSH認証を提供するサービスで、OpenPubkeyというorganizationによって管理されています。
このissueを見つけたとき、僕は「ビビッ!」ときました。ちょうど認証周りを勉強していて、昨日cognitoの勉強をしたばかりだったからです。そこでOIDCの理解が必要で下の記事を読みながら「この記事書いてる人の説明わかりやすすぎ、、」って思ってました。
https://qiita.com/TakahikoKawasaki/items/498ca08bbfcc341691fe
せっかくの初OSSコントリビュートなので何か繋がりがあるリポジトリがいいと思っていたのでとても良かったです。issueの内容もロジックを修正するようなものでなく、コマンドの表示結果の軽微な修正だったのでこれに取り組むことを決めました。
コントリビュートしたいOSSを見つけたあとは
@OSSの管理者 Hi! I’d like to work on this issue. Could you please assign it to me?
という感じでアサインしてもらえるようお願いしましょう。アサインされたことを確認してから作業に移った方がいいです。
取り組んだissue
提出したPR
手順
以下の手順にしたがって貰えばできると思います。
リポジトリをフォーク
forkとは他者のリモートリポジトリを自分のリモートリポジトリに持ってくることです。今回であればopksshを自分のリモートリポジトリに持ってきました。
クローンしてブランチを切る
自分のアカウントに持ってきたリポジトリをcloneし、ブランチを切ります。僕は他のブランチ名を見てその方針に従ってブランチを切りました。
README.mdとCONTRIBUTING.mdを読む
OSSとして公開されているソフトウェアの多くはCONTRIBUTING.mdというファイルを持っており、OSSにコントリビュートする際の注意点やルールが記載されています。今回であれば
・コミットをする際は-sオプションをつけ、サインオフを有効にすること(サインオフとは誰がそのコミットをしたのかを証明する署名のようなもの)
・push前にローカルでテストを実行すること
・必ずmainブランチに対してPRを投げること
などが記載されていました。これに加えてREADME.mdを読めば全体像とコントリビュートの仕方が理解できます。
PRを提出
git push origin HEADで変更を自分のアカウントのリポジトリのリモートブランチに反映させ、そのブランチの変更をOSSのソフトウェアのmainブランチに対して送ります。あとはPRを提出し、github actionsのワークフローが全て成功していることを確認したら、完了した旨を一言管理者に送ってあげましょう。レビューされ、マージされれば完了です、お疲れ様でした!!
感想
OIDCのような各所で使われている技術に関するリポジトリでもコントリビューターは少なく、5コミットでもすればtop10のコントリビューター、10コミットすればtop5ぐらいのコントリビューターになれるようです。OSSはほぼボランティアのような活動なので目的を明確にした上で今後は取り組まないとなーと感じますが、今回僕が達成したかった「OSSにコントリビュートしたことありますよドヤァ」ができるようになったので満足です。普通に最近触っている技術やライブラリもopkssh内に結構あってそれも楽しかったです。今後も気が向けばやってみたいです、ここまで読んでいただき、ありがとうございました!