まあよくあるオープンソースソフトウェアと同じです。
0. 心構え
1. 怪しいな?と思ったら
有償ライセンスを持ってる人は以下略。持っていない人は、 GitHub Issuesを覗いてみよう。既知バグかもしれない。既知バグだったら "2. バグを直す" へどうぞ。実はRiak自体は多くのサブモジュールを持っていて、そのサブモジュールのどれかのバグかもしれないが、多すぎるので丹念に見る時間がねーよ、という人や、バグっぽいんだけどよくわからない…となったら メーリングリストで問い合わせてみよう。英語に自信のない人は、まだ人が少ないけど日本語MLへどうぞ。小さな話だったらIRC( #riak , #riakjp )にも人がいる。
どこかにBugzillaも生存しているらしいのだが、基本的には使われていない。
1. 現象を文章にして書く
このあたりは一般的な話だし、日本語でも英語でも同じなのでリンクだけ。
無事にかけたら、IssuesなりMLなりに投稿しよう。メールなら最初の挨拶は Hi folks! とかだし、Issuesなら余計な挨拶は省いておこう。
2. バグを直す
バグを投稿したら、小さなやつならPull Request出してしまおう。向こうではよく "PR" とか略すので、メールで "I've just sent a PR, please check it out!" などとURLを貼っておくとレビューしてもらいやすい。Issuesに登録して放置っていうのだと割と流れていってしまってたまりにたまっていたりする…
原因が分かってて直し方も予想がついている場合は、MLに投稿して「ちょっと…という直し方でパッチ書こうと思ってるんだけど、方針合ってる?」とか聞いてからやると、PRをレビューしてもらう時点になってから大幅に書き直す羽目になるとかがなくなると思う。
パッチ投稿のルールはどこにも明文化されていないので分かりにくいと思うが、だいたいを説明しておくと
- MLにパッチを 1/7 ... とかいって投稿する必要はない
- masterか、1.2ブランチに対してPRを出すと吉
- いきなり送って待っていると流れるかもしれないのでMLで軽く説明&宣伝
- 特にスタイルや、ASFのような厳格なルールはない
- バグに対してテストを追加してもらえるとみんながとても喜ぶ
- ./rebar eunitが通るとみんな喜ぶ
- travis-ciのテストが通るとみんな喜ぶ
- 誰かがレビューするとマージしてくれる
- 2つ前のバージョンまで、後方互換性が必要
- データ構造や通信プロトコルは変更できない(前のバージョンからデータをそのまま読みだすため。Rolling upgrade参照)
- コーディング規約は特にない(erlang-mode.elが規約というか何というか)
3. 開発スタイル
BashoのエンジニアはUK, US(とあとJPも少し^^)に分散していて生活リズムもバラバラで、24/7のサポートも行なっているので基本的に24時間の間、誰かがどこかで何かしている。ので、気軽にいつでも質問すればよいですよ!!!11
スケジュールやロードマップも厳密なものはないし、OpenStackのようにアルファベット順に名前をつけて定期的にリリースとか、Debianのようにtestingとかstableとかそういうバージョンもない。あるのはリリースされた版(今は1.2.1, もうすぐ1.3が出る…のかな?)だけだ。いつから不安定版などがあると錯覚していた…?!
ASFのプロジェクトのようにJIRA起こさないとパッチ送れないとか、JIRAで延々と議論するとかもないし、WebKitやChromiumのようにツールに埋もれる*1こともない。まあつまりベンチャーなので悪くいうといろいろと適当で個人の良心に任されているのだけど、それで全て上手く行っている*2のだからすごいなあと思う。やはり、ベンチャーとはいえひとつの企業がスポンサーしたOSSだと、政治的な要素が少なくていろいろと楽だ。前職時代はCloudStackなんかCitrixに完全に囲われてるじゃねーかOpenStackだろJKと思っていたものだが、OpenStackのような類のOSSだとどうしてもリーナス・トーバルズが必要になってしまう。リーナス・トーバルズは一人しかいないので、自然と企業がスポンサーしている方がいろいろよいだろうなあと思う。
特に手が回っていないところ
appendix. 練習問題
昨日・今日あたりのRiakのmasterブランチだとriak_controlにcompiled CSSが同梱されていなくてriak_controlの画面がものすごく間抜けになってしまう現象が観測されているので誰か試しにやってみてほしい。わりと切実…