たごもりすメモ

コードとかその他の話とか。

node.js用のThriftライブラリにパッチを書いた

先日の node.jsからThrift経由でHiveServerに通信しようとして力尽きた - tagomorisのメモ置き場 の記事に書いた件、しばらくThriftの BufferedTransport の他言語実装を眺めていたらなんとなく作れそうな気がした*1ので、transport層を置き換え可能にするためのリファクタリングに半日、BufferedTransportの実装に半日をそれぞれかけてパッチを書いた
github上でmasterを公開してる人にpullreqを送ってみたら取り込んでくれるようだ。その上 upstream(Apache Thriftプロジェクト本家)への取り込みへの提案もやってくれたRejectされることがなければ、待ってるとそのうちThriftを使う全プロジェクトで node.js でも実装できるようになる。自分が書いたパッチを当てたものを使うように意識しなくて済むようになるのは、仕事の上でもたいへん嬉しい。

パッチが取り込まれて npm install thrift だけでBufferedTransportが使用可能になるのを心待ちにしてるところ。
他人のコードに対してAPI互換性を崩さないようにパッチを書くというのはあんまり数をこなしておらず、また node.js の特性を考えながらのコード書きだったので実に楽しかった。最終的に大きいパッチになったのをキモの変更点をすぱっと見抜いてコメントを返してくれるメンテナの wade の返答が嬉しい。コードが公開されて、修正に対してオープンな態度というのはすばらしいし、自分もそうありたい。

*1:後でnode.jsならではの難しさがあって実装がまだ無かったんだと思い知った……。後述。