Rookのメンテナに就任しました: これまでとこれからの取り組み

はじめに

こんにちは、Necoプロジェクトsatです。先週CNCFのgraduatedプロジェクトであるRookのメンテナに就任しました。本記事ではRookがどういうソフトウェアであるかについて軽く触れた後に、何をしてきたことによってメンテナになったのか、今後どうしていくのかについて述べます。

RookはKubernetes上で動作する様々なストレージソフトウェアのオーケストレータです。主なターゲットは分散ストレージCephであり、開発者はCephを使った製品を作っているベンダやサイボウズをはじめとしたCephのユーザが主です。

サイボウズは国内向けクラウドサービスcybozu.comの次期ストレージ基盤としてRook/Cephを使うことを決めています。詳細については以下の記事をごらんください。

blog.cybozu.io

メンテナになるまでの道のり

我々はRook/Cephクラスタの開発中に遭遇した機能不足やバグによる不具合などの課題を、他の開発者たちと協力しながら自分達でPRを出して改善してきました。とくにPVC-basedクラスタという新しいタイプのクラスタをプロダクション環境で使うための諸機能については主要な貢献をしてきたという自負があります。定量的なデータを出すと、ここ半年ほどの期間ではサイボウズのコミット数が会社別で世界二位となっています。

我々が具体的にどういう取り組みをしてきたかについては以下のスライドをごらんください。

speakerdeck.com

ここまでは我々が直接困っている課題の解決でした。これらによって技術者としての能力は示せたわけですが、メンテナになるにはこれだけでは不十分です。

メンテナになるには、コミュニティ全体を俯瞰して、コミュニティ全体の利益になることをしていると示す必要があります。これを示すために、我々が直近では困っていなくても、長期的な品質向上やコミュニティの活性化のために以下のような取り組みをしてきました。

  • テストの改善。カバレッジ向上やCIがランダムに失敗してしまう不具合の修正など
  • issueやSlackにおける他のユーザのサポート。使い方や技術的な質問に対する回答やバグ修正など
  • 自分が詳しい分野についてのコードレビュー

とくにテストの改善については多くの課題があると問題提起して、定例ミーティングの議題として取り上げてもらいました。その後は集中的にCI改善に取り組み、ランダムに発生するテストの失敗確率を数十%減らしました。

これらの活動を一年以上にわたって続けてきたことが総合的に評価されたため、Steering Committee全員の賛成によって今回のメンテナ就任となりました。

今後どうするのか

わたしはメンテナ就任時に、とくに品質管理に興味があると他の開発者たちに申し出ました。その一環として、テストの改善に継続的に取り組む予定です。他にもユーザサポートやレビューなども、これまで以上にやっていきます。

サイボウズの開発者としての活動についても書いておきます。現在のRookは我々に必要な機能がおおよそ実装されたという状態になっています。今後は以下のような機能を評価して、これまでと同じく、遭遇した課題を他のコミュニティメンバと協力しながら自ら解決していくつもりです。

  • メトリクスやログの監視、通知
  • オペレーションの自動化
  • ブロックデバイスやオブジェクトストレージのリモートレプリケーション

OSSのメンテナになることによる影響

Rookに限らず、OSSのメンテナになると開発の全体方針の決定に関われるようになります。その一方で、ユーザサポートやコードレビューなどをは当然するものだと期待されます*1。Rookについては公式ドキュメントに具体的にメンテナに期待されることが書いています。このような理由によって、会社をはじめとする組織の一員がメンテナになると、その人の人的リソースを少なからず割くことになります。メンテナ就任を打診された場合は、組織としてこの点を踏まえた上で受けるかどうかを決めるといいと思います。

私の場合は、我々がRook/Cephをストレージシステムに使うと決めたときから、私をupstream Rook開発の専任技術者にして最初からメンテナになるつもりで活動すると決めていたため、判断には困らなかったです。なぜそこまでコミットする必要があるかというと、サイボウズにとってお客様のデータは何よりも重要であり、他のソフトウェアに比べて事業へのインパクトが非常に大きいからです。このため、データ消失/破壊につながるような問題の予防、発生時の可及的速やかな修正提供には多くのリソースを投入したというわけです*2

メンテナになるならないに限らず、組織としてOSSにコミットすることについて興味のあるかたは、以下の記事をごらんください。

blog.cybozu.io

おわりに

最後になりますが、私のメンテナ就任は私一人ではなく私が所属しているNecoプロジェクトが一丸となって、組織としてRookに貢献してきたことが評価された結果です。この場を借りてチームメンバに深く感謝いたします。

サイボウズはこれからもRookに深くコミットしていきます。

*1:OSSなので法的な意味での責任はありませんが

*2:自分達が使っているあらゆるソフトウェアについて同じ戦略をとるわけではありません