大層な話ではないのですが、matplotlibのドキュメントを読んでいたら、たまたまタイプミスを見つけました。
タイプミスくらい、ちょちょっと直してしまえば解決する問題です。ちょうど自分のパッケージのPull Requestガイドラインをどうしようかと悩んでいたところだったので、勉強のためにPull Requestをしてみようと思い立ちました。
MatplotlibはPull Requestのやり方を解説するガイドラインを公開しているので、まずはそれを読みました。
とりあえずmatplotlibのmainブランチを自分のgithubアカウントにフォークし、ローカルにクローンせよとのことで、その通りにします。
次に開発者向けのセットアップガイド通りにvenv環境を作って、開発モードでmatplotlibをインストールしました。
そして、クローンしたブランチからmy-featureというブランチを切りました。これもガイドライン通りですが、別にmy-featureという名前でなくても良いんだと思います。
OK、ではこのブランチで作業をすれば良いわけですね。
Pythonパッケージのdocumentation生成はは大体sphinxを使っており、コード内のDocstringsからドキュメントを自動生成しています。なので対象機能(今回はQuadMesh)のソースコードの場所が分かれば、そこの文章を編集すれば良いということになります。親切にもQuadMeshのドキュメントにGitHubのリンクが貼ってあったため簡単でした。
編集は必ずVimを使用してください(戦争の予感)。
これでタイプミスを修正できました。
いつものコマンドでForkのリモートにpushします。
GitHubのmy-featureのページに行き、Contributeをクリックします。
Matplotlibの場合、mainブランチにプルリクしてくださいとドキュメントに書いてあるので、そうします。
それと同時に、チェックボックス付きの注意書きみたいなのが出てくるので良い感じに埋めます。
こんなもんでいいかな、と思ったらCreate Pull Requestをクリックしましょう。
すると本当にプルリクが立ちます。
下の画像は実際にプルリクしたときの画面です。GitHubアクションでテストやらなんやらが動いていました。初めての体験なのでワクワクです。
朝起きたらマージされてました。なんか嬉しい! というかチョー簡単だった!
人生初の巨大OSSへのプルリクでした。
一番びっくりした点は、mainブランチに直接マージされたという点です。自分のライブラリはmasterを安全に管理したいという考え方からmasterからdevelopを切って、そこからさらにfeature branchesを切る構成にしています。一方matplotlibほどのOSSが、mainからの直切りを採用していることには衝撃を受けました。どうやらpandasも同じ仕組みを採用しているようです。自分も今度からそうしようかと思うくらいには影響を受けています。
しかしその一方で、Pull RequestをトリガーとしたGitHub上でのテスト実行や、そもそものテストの充実度など、mainブランチ直切りを実現するためのハードルは高いようにも感じました。
OSSへのプルリクは学ぶことが多かったですね。皆さんも挑戦してみてはいかがでしょうか? まずは誤字脱字から始めるのが良いと思います、といってもそんなに見つかるものではないか笑