ごまだれ日記

プログラミングの技術メモとか

OSS Gate東京ワークショップ2019-12-14に参加してJenkinsにコントリビュートした話

タイトルは嘘ではないですが若干釣りです。

掲題の通りOSS Gateのワークショップに参加してきたのですが、とても良かったので参加報告です。
oss-gate.doorkeeper.jp

詳細は公式サイトを見ていただくほうがいいですが、簡単に言えばOSSへのコントリビュートを体験できるという魅力的なイベントです。
疑似体験ではなく、なんと実在するOSSに対して実際にコントリビュートします。
oss-gate.github.io

OSSに何らかの形でコントリビュートしたいとは常々思っていたのですが、なんとなく敷居が高いと感じてなかなか行動に移せずにいました。
そう思っていたところでこのイベントを見つけて、恐る恐る参加してみました。

ポジションについて

大雑把に分けるとビギナー、サポーターというポジションがあります。
ビギナーはOSSのコントリビュートの経験がないか、もしくは自信がない人で、イベントの中でコントリビュートを体験するのはビギナーです。私はビギナーとして参加しました。
サポーターはその名の通り、ビギナーを補佐する役です。今回はビギナー1人に対して(ほぼ)サポーター1人でした。(その回によって違うようですが)

大雑把な作業の流れ

作業時は、できるだけ細かくメモすることを求められました。あとで振り返りを行うためです。
作業メモは、GitHubのワークショップ用のリポジトリにIssueを立ててそのコメントとして書きました。
私の作業メモを晒してみます。
github.com

対象のOSSを決める

普段使っているOSSを洗い出し、その中から一番興味のあるものを選ぶという形でした。私はJenkinsにしました。
また、重要なこととして、それが本当にOSSなのか調べる必要があります。
ライセンスを調べて、そのライセンスが下記の一覧の中にあればOSSであると言えるそうです。
opensource.org

ライセンスは公式サイトか、GiHubのLISENCE.txtから調べます。Wikipediaにも書いてあったりはしますが、原典で調べる必要があります。

Jenkinsを動かす

これも、あくまでも公式サイトを見ながら作業する必要があります。公式サイトのドキュメントに何か問題があれば、それがコントリビュートチャンスになるからです。結果的には、私はそこでコントリビュートしました。
対象のドキュメントですが、作業していた時点では、Jenkinsの動作要件として「Java 8」と書いてありました。(今は修正済みなので下記はInternet Archiveです)
web.archive.org

私のマシンにはJava 13しか入ってなかったので、それで動くかどうかとりあえず試してみました。
結果としてはダメで、下記のようなエラーメッセージが出ました。

Jenkins requires Java versions [8, 11] but you are running with Java 13 from

Java 8かJava 11 で動くというように読めます。なので、Java 11で試したところ、今度はエラーが出ずに動作しました。

フィードバック

ドキュメントには動作要件としてJava 8としか書かれていませんでしたが、Java 11でも動作すると読めるエラーメッセージが出力されており、実際Java 11でも動いたので、ドキュメントに不備があると言えます。なので、そこを修正してコントリビュートしようということになりました。

まず、どうすればコントリビュートできるのかを公式サイトで調べます。
詳細な手順は下記に書いてありました。
github.com

私の拙い英語力でも、とりあえずフォークしてローカルにクローンして修正、コミット、プッシュ、プルリクでよさそうだなということはわかりました。
Issue Trackerもあったのですが、軽微な修正なのでいきなりプルリク投げても大丈夫だろうとサポーターの方にアドバイスをもらいました。

本当は修正後にビルドできるか確認してからコミットすべきなのですが、今回の修正は既存のセクションに何文字か足すだけの軽微な修正であり、ビルドが壊れるとはあまり考えられないので、ビルド確認はスキップしました。
また、ビルドにDockerが必要で、お恥ずかしながら(?)私のマシンにはDockerが入ってないので、ビルドしてたら時間がなくなりそうだったというのもありますが…

そんな感じで投げたプルリクはこれです。
github.com

説明はプルリクのメッセージに書けばいいので、コミットメッセージやプルリクのタイトルは簡素でよいとアドバイスを受けて、そのようにしました。
プルリクのメッセージは当然英語で書かなければなりません。これまた私の拙い英語力で(Google翻訳の力を借りながら)絞り出した英文を書きました。たぶん怪しい英語になっていると思いますが、一応伝わったようで、マージしてもらえました。本番サイトにも反映されました。やったね!
jenkins.io

感想

軽微な修正とはいえ、普段使っているJenkinsにコントリビュートできて本当にうれしいです。
ビルド部分をスキップしたとはいえ、OSSを決めてからプルリクを投げるまでの一連の流れを体験できて、意外とハードルは高くないんだなと感じました。1回やったので2回目もできるかな、と少し自信がつきました。
あと、コントリビュートしたくてもネタがないと思っていたのですが、Jenkinsのように多くの人に使われているOSSでもコントリビュートチャンスはあったわけなので、探せばネタはいくらでも見つかりそうだなとも思いました。今回私も含めてビギナーは4人いて、全員何らかのフィードバックできたとのことだったので、なおさらですね。

そうなると、あとはやるだけです。「楽しかった」だけで終わらせてしまうと参加した意味があまりないので、今後も何かしらコントリビュートを続けていきたいと思います。積極的にネタを探すか、そこまではせずに問題を見つけたらフィードバックに努めるというスタンスにするか、次回のワークショップではサポーターとして参加してみるか、どうするかは考え中ですが。

とりあえず、とてもいいイベントなので皆さんも参加してみませんか?次回は一月です。
oss-gate.doorkeeper.jp

最後に、お世話になった運営者の方や進行役の方、サポーターの方々にお礼を言いたいです。ありがとうございました。