皆さんはじめまして。 FOLIO でエンジニアとしてインターンしているみっちょんです。普段は大学で Tracing JIT Compiler の研究をしています。
本記事はFOLIO Advend Calendar 10日目のものです。 昨日は matsu_chara さんで「Application Crash Consistency and Performance with CCFSを読んだ」でした。
scalaenv という OSS のメンテナになってからやってきたこと、そしてやるべきこと
scalaenv とは
scalaenv とは、Scalaのバージョンマネージャです。
Ruby には rbenv があり Python には pyenv があるように Scala にも同様のツールがあります。
自分がこのプロダクトにいくつか Pull Request を送っていたのと、作者さまと Twitter でつながっていたという縁もあり、2017年の夏くらいにメンテナになりました。
以降では、 scalaenv のメンテナになってからやってきたこと、そしてメンテナとしてやるべきことを書いていこうと思います。
OSSメンテナとは、命をつなぐ者である
メンテナとはOSSの維持・管理を行っていく人間のことで、言ってしまえば OSS の生命維持装置に他なりません。
メンテナがいなければそのプロダクトは緩やかな死を迎えていきます。
人や組織からお金をもらってメンテナになる場合もありますが、世の中にある殆どのOSSは有志によって維持・管理がなされています。 そして、メンテナはOSSに対して責任を持ち、開発・運用していきます。
メンテナとしてやってきたこと、そしてやるべきこと
OSSのメンテナとして最低限すべきであると思った作業は以下の三つです。
- issue の整理
- Pull Request のレビュー
- 定期的なリリース
issueの整理
issue は往々にして溜まっていくものですが、それを放置しておくのはプロダクトにとっての停滞を意味します。
したがって、 OSS メンテナは最初にどんな issue が寄せられているのかチェックし、可能であればその場で対応していくのが望ましいです。
例えば、 scalaenv には
のような重要な要望が寄せられていました。そういった issue を分類し、優先順位を付け、可能であればマイルストーンを付けて対応していくのがメンテナの役割です。
幸い、当時はまだ時間が余っていたのでいずれの issue も解決し closed な状態にできました(めでたい)。
ただ、自分が立てた issue でまだ対応出来ていないものがあるので、それを解消していくのがこれからの目標です。
Pull Request のレビュー
Pull Request が放置されているのは OSS の利用者にとって好ましい状況ではありません。
したがって、 OSS のメンテナになったらPull Request のレビューも issue の整理と同様に重要な作業です。
scalaenv のメンテナになってからはほぼ自分が修正点をコミットしていったので、まだ一つしか Pull Request を受け取っていませんが、溜めている Pull Request は一つもないという状態を維持しています。
定期的なリリース
OSS の利用者にとって、定期的なリリースが行われ、常に改善がなされていることは良いことだと考えます。
なぜなら、アクティブなコミッタがその OSS にいることを意味しますし、仮に自分がバグを見つけたり機能追加のアイディアを思いついた場合、コミッタに報告すればすぐ対応してくれるだろうという見込みが立てやすくなるからです。
アクティブにコミットする
つまり、 OSS メンテナはある程度アクティブに開発しているというアピールをしなければなりません。
私がメンテナになった時、開発はやや停滞気味であったので、まずは目先の問題を解消していこうと考えました。その結果、
- 機能追加 / バグ修正
- 定期的なリリース
を適宜行っていけば利用者はきっと関心をもってくれるだろうというところに落ち着き、 OSS 利用者にとって意味のあるバージョンを提供していくことを念頭に置いて開発に取り組みました。
その結果
自分がメインのコミッタになったのは 0.0.13 以降ですが、リリースノート を見ると、大きな変更があったらその都度リリースを行っていったので、健全なサイクルになっていったと感じます。
homebrew にもリリースのための Pull Request をしたり、
プロダクトの命をつなぐためにやれるべきことをしていきました。
まとめ
OSS のメンテナンスは地道な作業の連続です。しかし、 OSS は誰かが面倒を見ないとそのまま放置され、誰にも看取られずプロダクトとしての死を迎えてしまいます。
だからこそ、 OSS のメンテナンスは重要であり、その OSS に利用者がいる限り責任をもって開発に取り組むべきであると思いました。