OSSの敵に
なっちゃうのもいいじゃない
y8spring: May 27, 2017
Daisuke Maki (@lestrrat)
• @lestrrat
• Perl/Go hacker, author, father
• Author of github.com/peco/peco
• Organizer for builderscon
応募してくれ!
https://builderscon.io/tokyo/2017/cfp
ピンチヒッターなのでお手柔らかに…
(最近まわりの若手プログラマを
見てて思った、ふわっとした話です)
最近のGithubでの活動
(全部Goです)
github.com/lestrrat/go-slack
fork of github.com/nlopes/slack
github.com/lestrrat/go-fluent-client
rewrite of github.com/fluent/fluent-logger-golang
github.com/lestrrat/go-msgpack
fork of gopkg.in/vmihailenco/msgpack.v2
github.com/lestrrat/go-gettext
fork of github.com/leonelquinteros/gotext
github.com/lestrrat/go-packasset
rewrite of github.com/jteeuwen/go-bindata
Q: PR送らないの?
A: 送らない
A: 送らない
もちつけ
共通する理由
APIが気に入らねぇ
Q: だから〜、PR送らないの?
A: 送らない
OSSに変更提案を送る際の
最初のルール
「APIを変えたい」は
ほぼ100%却下される
APIを変える=影響範囲が
デカい
APIさえ変えないで
すぐ済むならPRする
→ 既存のAPIの中身を変える
→ 新規APIを追加する
エンドユーザー全員に影響:
かなりの強い理由が必要
理由を説明する努力が必要
説明するには現在の
実装への理解が必要
「あれ、一旦自分で書いたほうが
(説明するためにも)早くね?」
そうだ、forkしよう
fluent.Shutdown(context.Context)
が欲しかった
最近の具体例(1)
(アプリがexitした時点でバッファが空かどうかの保証されてないのが気持ち悪かった)
→ 「あれ、バッファのフラッシュを明示的に待てないぞ」
→ 「PR書こう」
→ 「あれ、これいれると他のAPIも変わるな…」
→ 「あれ、これ、もう違うライブラリだよね…」
→ 「forkしよ」
最近の具体例(1)
エラーを握りつぶしてるのを
どうにかしたかった
最近の具体例(2)
(“func hoge()”を”func hoge() error”にしたかった)
→ 「あれ、このライブラリ、エラーがあっても全部無視してる…」
→ 「あとで泣くの、おれだぞ。エラー返すPR書こう」
→ 「あれ、そもそも戻り値に一切”error”が定義されてないからAPIが変
わっちゃう…」
→ 「書き直ししよ」
最近の具体例(2)
最近の具体例(2)
なんかもっと調整したいんだけど、
そもそもmsgpackの仕様がわからん…
最近の具体例(3)
→ 「なんか、これもっとencoding/jsonみたいにしたほうがいいのでは…」
→ 「PR書こう」
→ 「む、すぱげt… 難しいコードだな」
→ 「ひょっとして実装した人じゃないとわからない深淵なる理由あるのか
な?」
→ 「プロトコルを知らないのにAPIについていちゃもんつけられない」
→ 「forkしてプロトコルから実装しなおしてみよ」
最近の具体例(3)
微妙
気に入らない事はたくさんあるけど、
相当作り込まれてるので
もっと強烈な理由がないと変更提案は
難しそうなのはわかった
やってみて感想
自分で書いた事により
実装の仕組みやプロトコルを
理解した
一度書いたコード
が存在している
元のプロダクトにコメント・PRを送る
にも、机上の空論ではない、触れるモ
ノが存在する
→ 議論もそれをベースに行える
変更提案が拒否されても、
手元にはそれを実装した
実績・経験・自信が残る
注意事項
* 戦略を考えてからforkしよう
* 最終的にfork元に還元したいのか?
* 自分が最後まで看取るつもりで別の道を歩むのか?
* 勉強のためにやっていて、終わったら消すつもりなのか?
* それforkする必要ある?
* API 変わらないならPRを作る苦労をしたほうがいいよ!
それでも、
forkを恐れるべきではない!
自分で書いてみるのを
恐れて欲しくない
(特に経験の浅い人達)
ソースコード読むのもいいけど、APIデザインは
実装しないとわからない事の方が多い
※ 個人の感想です
自分で入れた変更がたいした効果を生めなかったら
そこから何かを学ぼう
この職業は(天才以外)は
1行でも多く書いた人の勝ち
※ 個人の感想です
OSSの敵に
なっちゃうのもいいじゃない
そんなことより
たくさん
コード書け!
END
応募してくれ!
https://builderscon.io/tokyo/2017/cfp

OSSの敵になるのもいいじゃない