はじめに
少し前の話ですが、会社が「スポンサーやるので誰かチケットあげるよー」ということだったのでbuilderscon tokyo 2017に参加させていただきました。
なかでも@hsbtさんが発表されていた「How to take over OSS project」はとても印象深くて、帰りの電車のなかでいくつかの言葉が頭のなかをぐるぐる回っていたのを覚えています。
その後いろいろあって本当にOSSをtake overすることになったので経緯を残しておきます。
ひょんなことからCrystalをやってみることに
ビルダーズコン開催と同じ月である2017年8月に入社していた@maihaさんの布教によってCrystalを触りはじめました。
「型があるRuby」みたいな書き心地がなんとも良いです。
放置されているプロジェクトを発見
練習も兼ねてRubyで書いた簡単なCLIをいくつかCrystalでリプレイスして遊んでいました。
そんななかオレオレTwitterクライアントをCrystalで書き直そうとしていたとき、twitter-crystalという使えそうなライブラリを発見。
RubyではtwitterというGemを使っていたんですが、作者が同じだということに気づいて期待に胸踊りました。
さっそくソースコードを読んでみるとどうやらエンドポイントとオプションを引数で渡して使ってくれ、ということらしい。
こんなイメージですね
client.post("/1.1/statuses/update.json", {"status" => "こんにちは世界"})
Ruby版のように
client.update("こんにちは世界")
みたいに、URLを意識せずに使えることを期待してた僕としてはちょっと残念。。。
他に良いライブラリがないか探してみたものの、めぼしいものは見つからず。
残念ながら開発は止まっているようだったので「フォークしてつかうかー、、、」なんて思いましたが、
もしかして、こういうときのための「How to take over OSS project」なんじゃあないか?
と思い立って、ダメもとで連絡してみることにしました。
オーナーにメール
僕
「はじめまして、 @kenta-s といいます。このプロジェクト、メンテしたいのでよかったら権限もらえませんか?」
〜 数分後 〜
sferikさん
「done. ありがとう!」
まじすか、こんなにあっさり...?
https://speakerdeck.com/hsbt/how-to-take-over-oss-project
の
2. Request to take over via E-Mail/DM/Slack...
のパターンですね。
そういえば、@hsbtさんは「世界的には連絡手段としてemailを利用している人が多い」といったこともおっしゃっていました。
というわけで
欲しかった機能をバンバン付けてバンバン使ってます。
インターフェースはRuby版のそれを意識して実装していったので、sferikさんの意志に大きく反するような形にはなっていない、、、と思いたい。
これまではOSSについては「使う」「Issueを立てる」「PRを出す」くらいの選択肢しか持っていなかったんですが、ここに「引き継ぐ」が追加された瞬間でした。
メンテナになると責任を伴ってしまうので、引き継ぎは最終手段にしておきたいというのが正直なところ(実際精神的に少しキツい瞬間ありました)ですが、
それでも可能性が広がったのは間違いなくて、@hsbtさんと、良い機会をくれた会社には感謝です。
タイミングよくCrystalを紹介してくれた@maihaさんにも圧倒的感謝です