@kyanny's blog

To be a cross-functional developer

Homebrew に (ささやかながら) 貢献するには

Homebrew は GitHub 上で開発が進められているので、新しい Formula を追加するとか既存の Formula を改良するとかして upstream に取り込んでもらいたい場合も当然 GitHub を使います。 Formula Cookbook というページに詳しく作法が書いてあるのだけど長い*1ので、手元で Formula を編集し終えていざ Pull Request を送る際に気をつけるべき点だけピックアップしてみました*2

  • 一行目には50文字以内で要約を書く。空行を挟んでコミット内容の説明を書く。
  • https://github.com/mxcl/homebrew を fork する
  • fork した自分のリポジトリに対して変更を push する
  • Pull Request を送る
    • 一つのコミットで一つの Formula だけを変更すること
    • マージコミットを作ること
    • 細々した修正のコミットなどは (独立している意味が薄いので) squash すること
  • 一つのコミットで複数のファイルを変更していたり、逆に一つのファイルに対して何度もコミットがあったり、一つのコミットで変更している内容がはっきりしないときは rebase をお願いするかもしれないので、 Pull Request を送るごとに新しいリモートブランチを作るべき。あなたのリポジトリの master から Pull Request しないでね

ということでそのガイドラインに従って送った Pull Request がこちら。 WeeChat という端末上で動作する IRC クライアントのインストール時にビルドオプションを渡すフラグを追加しました。

Pull Request #10582: weechat: add options to enable script language plugins by kyanny · mxcl/homebrew · GitHub

わけありっぽい感じだったので採用してもらえるか自信なかったけど、事前にちゃんと作法を調べておいたおかげか無事に取り込まれてほっと一息。

そもそもなんで WeeChat の Formula をいじったのかというと、 @glidenote さん主催の社内勉強会で WeeChat を紹介されたので Homebrew でインストールしてみたらプラグインで拡張する機能が無効化されていて、 @tnmt さんに Formula を直接書き換える方法を教えてもらい、自分もやろうとしてみたら # Compiling langauge module doesn't work. Feel free to add options to enable these. というコメントが目に入ったのでじゃあオプション足してみようと思ってやってみた、という経緯で、まったく偶然の産物でした。

こういうラッキー?なケースはあんまりないのかもしれないけど*3、大きなプロジェクトだと人知れずささやかな変更を待っているソースコードはそこらじゅうに埋まっているかもしれないので、ソーシャルコーディングしてみたい!という人は Homebrew で自分が使ってるソフトウェアや知ってるソフトウェアの Formula を覗いてみるといいかもしれませんよ。ほんのささいなコミットでも、+1 とか thanks とか言ってもらえるとテンションあがります。

*1:あと Formula 自体のテストの話が多い

*2:ページ中頃の Commit と Push に書いてある内容

*3:ご丁寧に、どのように変更して欲しいかがコメントで書いてあった