JS修正してGoにコントリビュートした
Treasure Advent Calendar 2019 の22日目の記事です。
先日、Treasureでもお世話になったGoへコントリビュートしました!
Goへのコントリビュート成功しました
— ramenjuniti (@ramenjuniti) 2019年11月19日
わーい🎉https://t.co/V7VGUJDBNW
この記事では、初のOSSへコントリビュート成功ということで、その経緯を書いていこうと思います
ある日
Go Conference 2019 Autumnに参加した影響か、Goへの思いが高まりGoへコントリビュートしたいなーと思いながらGithubでGoのコードを覗いてました
気になるものを見つける
こんなのあったんかhttps://t.co/I1ebjwI5M7
— ramenjuniti (@ramenjuniti) 2019年11月17日
どうやらGoにはgophertoolというChrome拡張機能があるらしい
粗探しをする
中身を覗いてみると5~9年前で更新が止まってるっぽい
なんか怪しそう!
過去にChrome拡張を作ったことがあり雰囲気でコードは読むことができたので、何かミスってるとこないかなーと粗探しをしてみることに
お!?
Chrome拡張のAPIドキュメントを見ながら、gophertool/background.js
を粗探ししてると
chrome.omnibox.onInputEntered.addListener(function(t) { var url = urlForInput(t); if (url) { chrome.tabs.getSelected(null, function(tab) { // <-- お? if (!tab) return; chrome.tabs.update(tab.id, { "url": url, "selected": true }); }); } });
「chrome.tabs.getSelected
を使ってるんか、ドキュメント見てみるか」
「ん?」
「うおー!Deprecatedやんけー!」
興奮しました
「修正も難しくなさそうだし、プルリク作ったらマージしてもらえそう!」
興奮しました
プルリクを投げる
修正できそうなコードを見つけることができたので、実際にプルリクを投げてみることに
Goにはコントリビュートの手順に関するドキュメントが用意されています golang.org
ドキュメントに従い、issueを作り github.com
GoではレビューシステムにGerritというシステムを利用しているので、Gerrit上でコードを以下のように修正してプルリクを投げました
chrome.omnibox.onInputEntered.addListener(function(t) { var url = urlForInput(t); if (url) { chrome.tabs.query({ "active": true, "currentWindow": true }, function(tab) { // <- 修正箇所 if (!tab) return; chrome.tabs.update(tab.id, { "url": url, "selected": true }); }); } });
色々と面倒くさいのかなと思ってましたが、ドキュメントに書かれた手順に従っていくだけなので、プルリク自体はすぐ作ることができました
あとはレビューを待つだけ!
そしてマージへ
マージされた!
わーい!🎉
golangのバッチみたいなの増えてる
— ramenjuniti (@ramenjuniti) 2019年11月19日
うれしい pic.twitter.com/jNHZlV88E0
プルリクを作って約4時間後にレビューされ、特に問題がなかったようでそのままマージされました
このコードはGo1.13.5から反映されてるようです
おわりに
以上のような経緯でコントリビュートしました
正直今回修正した箇所は小さく(しかもJS)、ラッキーコントリビューションではあるんですが、普段お世話になっているGoへコントリビューションだったので、純粋に嬉しいです
今回が初のOSS貢献で、修正できそうなコードを見つけた時やプルリクがマージされた時、脳汁ドバドバサイコー!を体験して味を占めたので、これからも継続してやっていきたいです笑 OSS楽しい!