先日 Phoenix Framework が Hacker News で取り上げられて、GitHub でのスター数も 1750(2014/12/25)と盛り上がりを見せつつある Elixir 界隈。乗るしかない、このビッグウェーブに!と思いつつも、後一歩が踏み出せない。。。そんなあなたに Elixir なプロジェクトへ貢献(pull request)するヒントをいくつか紹介してみます。
前提
- Elixir インストール済み
- pull request の方法は知っている
- pull request したいプロジェクトは決まっている
貢献方法
一般的な pull request と大体一緒です。git リポジトリを fork して、branch 作って、すごい機能を追加して、テストが通ったら pull request です。
ただし、プロジェクトによっては contributing guide などがあるので、まず README は見ましょう。
例えば Phoenix Framework では CONTRIBUTING.md が用意されています。大きなプロジェクトはスムーズに開発するためのルールとして決めているので、従うのはマナーかなと思います。
その他の小さなプロジェクトであればそういったルールはないと思います。大体以下の流れで対応していただければいいかなと思います。
$ git clone awesome_project.git
$ cd awesome_project
$ git checkout -b add_awesome_feature
$ mix deps.get
$ mix test
# add some awesome feature
$ mix test
$ git push origin add_awesome_feature
mix
を使うところが Elixir とその他の言語での違いでしょうか。そう考えるとそこまで敷居の高いものではないように思えてきませんか。
貢献するための3つのヒント
とはいえすごい機能なんて思いつかないし、何から貢献できるのかも分からない。確かにおっしゃる通りです。余程の人でない限り、中々すぐに貢献できなそうですよね。私も少し前までそう思っていたのですが、ここ1ヶ月ほど pull request をする用事ができ、意外と自分でもできることがあると気づいたので紹介します。
1. fix typo
いきなり typo かよと思ったかもしれないですが、始めの一歩としてはいいんじゃないかなと思います。ただあまり小刻みにすると忙しい人に取っては嬉しくないかもしれませんね。そんなときはまとめるなどすればいいかなと思います。
typo さえ見つければ Elixir の contributor にもなれる!ちょろいです(嘘です、すみません。プログラマとして恥にならないようにいつかコードの方でも貢献したい。。)。
https://github.com/elixir-lang/elixir/pull/2854
2. テストカバレッジ改善
test は結構狙い目です。Elixir は最初からテストツールの ExUnit がついているので、テストがついているプロジェクトが大半だとは思います。それでも全部が全部テストを書いているわけではないです。さらに、カバレッジの観点で見てみると、そこまで高くないモジュールも中にはあるでしょう。そこを狙います。
試しに fork したプロジェクトに excoveralls を入れて、カバレッジを出力してみると一目瞭然です。
カバレッジの低い部分を見つけて、それをカバーするテストを書く。これだけでも立派な貢献かなと思います。
直近の私の具体例でいうと phoenix に以下のような pull request を送りました。これは local で excoveralls を入れて試してみたものです。test を書いて、excoveralls でチェックするだけなので分かりやすいです。
https://github.com/phoenixframework/phoenix/pull/565
あまり良い観点ではないかもしれないですが、テストコードなので仮に失敗してもそこまで致命的なことにならないという安心感というメリットもあるかもしれないですね。
3. issue 一覧をみる
issue なんてみても難しいものしかないのでは?と思うかもしれないですが、意外と簡単にできそうなことが issue に転がっていることもあります。例えばたまたまライブラリつくっている人が忙しくて対応できていないとか。後は長らく放置されていて、なかなか手を付けられていないとか。そういうものに対応できると、作っている人も結構喜んでくれて、こちらとしても達成感があってよいです。
例えば https://github.com/parroty/excoveralls/pull/12 は、長く放置されていたものを対応した pull request です。ちょっとリプライコメントが長い、それだけでも嬉しく思えてきます。
最後に
ここひと月くらいでいくつかのプロジェクトへ pull request を送ってみたので、その経験を共有してみました。私のレベルでも貢献できることもあり、それはそれで面白いのですが、もっと技術のある人が Elixir 周りに contribute するようになると益々面白くなってよいだろうなぁというところで書いてみました。
それと Elixir のプロジェクトは親切な人が多くて、そんなところもよいところだなぁと感じてます。
今年の Elixir Advent Calendar はこれでおしまいです。皆様ありがとうございました!
Enjoy!
Resources
追記
keithseahus さんの記事では具体的な貢献プロセスが記載されており、次のステップを踏みたい方は参考にされると良いかと思います。