Apache Arrowの開発に参加している須藤です。現時点でapache/arrowのコミット数は1位です。私はRubyでデータ処理できるようになるといいなぁと思ってApache Arrowの開発に参加し始めました。同じような人が増えるといいなぁと思ってなにか試したりしましたが、あいかわらず、今でも実質1人でApache ArrowのRuby対応をしています。何度目かの「もっと仲間を増やさないと!」という気持ちになったので、最近の活動を紹介して仲間を増やそうと試みます。
今、Apache Arrow 18.0.0がリリースされかけているんですが、リリースもがんばっていることを思い出したので紹介します。なお、18.0.0もDependabotくんほどではないですが結構がんばりました。
https://arrow.apache.org/release/18.0.0.html
$ git shortlog -sn apache-arrow-17.0.0..apache-arrow-18.0.0 113 dependabot[bot] 65 Sutou Kouhei ...
$ git shortlog -sn --group=trailer:signed-off-by apache-arrow-17.0.0..apache-arrow-18.0.0 137 Sutou Kouhei ...
Apache Arrowとリリース
Apache Arrowはタイムボックスベースのリリースサイクルを採用しています。どういうことかというと、なにかの機能が完成したらリリースではなく、定期的にリリースするということです。肉の日リリースと同じ考え方ですね。
Apache Arrowはだいたい3ヶ月ごとにリリースしています。各リリースではリリースマネージャーという役割の人がいろいろ調整します。たとえば次のようなことをします。
- フィーチャーフリーズの時期をリマインダー
- フィーチャーフリーズの時期になったらリリース用ブランチを作成
- 次のリリースのブロッカーになるissueを調整
- 次のリリースに間に合わなそうなissueを次のリリースに移動
- リリース用ブランチを安定化
- RCを作成
- リリース用の投票を開始
- 可決されたRCを正式リリースとして公開
- リリースアナウンスブログの作成
- ...
たくさんあって大変ですよね。大変なので、全部が全部リリースマネージャーがやるわけではありません。たとえば、「リリース用ブランチを安定化」は他の人も問題を直しますし、「リリースアナウンスブログの作成」もみんなで作ります。
私も昔は何度かリリースマネージャーをしていましたが、最近はリリースマネージャーのお手伝いとしてリリースに関わっています。残念ながらリリースを手伝う人はあまり多くありません。そのため、わりと固定化された限られた人たちだけが主体となってリリースしている状態が続いています。これは継続性という観点であまり好ましくないので、これを読んでいるみなさんが参加してくれることを期待しています。どうして好ましくないかというと、限られた人がリリースできなくなったら立ちゆかなくなる可能性が高いからです。
リリース関係で必要なこと
継続的にリリースすることはプロジェクトの存続にとって重要です。リリースされていないとメンテナンスされていない感がでてユーザーが離れていきやすいからです。あとは新しい環境に対応できないからです。たとえば、新しいPython用のwheelがない、とかです。
継続的にリリースするために重要なことは、リリースコストを下げることと、できるだけ多くの人がリリースできるようにすることです。1回のリリースが大変だと継続するのがしんどくなります。特定の人だけしかリリースできないとその人になにかあったときに継続するのがしんどくなります。
リリースコストを下げるためには、やることを自動化したり、そもそもやらなくてよくしたりします。
Apache Arrowはdev/release/
以下にリリース用のスクリプトを置いてあります。ここを見ると.rb
ファイルが転がっているのがわかります。こういうちょっとしたスクリプトは最初に書いた人が好きな言語で書くことが多いです。ちょっとしたスクリプトなので。
私は、いろんな人が使いそうなスクリプトは追加インストールが不要なシェルスクリプトを使うことが多いですが、シェルスクリプトでは実装・メンテナンスするのがしんどいやつ(たとえばテストとか)はRubyで書いています。ビルドしたバイナリーをアップロードする処理はもりっとRubyで書いています。いろんな環境で動かしやすくするためにDockerfileを用意するという配慮はしています。
という感じで、Rubyを書けるとリリースのお手伝いがはかどります。シェルスクリプトやPythonなど他の言語を使うこともありますが、そういうときは他の言語ではこうやるのかーと学ぶ機会になります。
あなたもリリースのお手伝いからApache Arrowの開発に参加し始めませんか?リリースに関わる人が増えるとだれかが都合が悪くなっても他の人たちでカバーしやすくなります。
いろいろ多岐にわたってやることがあるので、興味のある人はRed Data Toolsのチャットに来てください。その人に合わせてどのあたりからやるとよさそうかを提案します。
まとめ
最近リリース作業をしていてリリースはずっとがんばっているなということを思い出したので、Apache Arrow開発者を増やすネタとして紹介しました。仲間が増えるといいな。
Apache ArrowのRuby対応を一緒にやりたい人も、Ruby以外のApache Arrow関連のこと(リリースまわりとか)をやりたい人もRed Data Toolsのチャットでサポートします。その気になった人は来てください!
それはそうとして、apache/arrowコミット数1位の私にApache Arrow関連のサポートを頼みたいという場合はクリアコードのApache Arrowサービスをどうぞ。