OSSの現状と今後
Gatsbyが面白い仕組みを導入していて、驚いたので書くことにしました。
Gatsby
React.jsの静的サイトジェネレーター
最近、海外ではとても流行っています。
コミュニティ
Gatsbyのメンテナになった pic.twitter.com/uastKHfAf2
— hiroppy 🇳🇱 (@about_hiroppy) 2019年2月25日
最近、gatsbyのメンテナチームに所属しました。
人数が異常ですよね、このチームに所属しているとgatsbyjs/gatsbyのwrite権限を持ちます。
そう、個人的に画期的だと思った仕組みは、メンバーの招待です。
1つPRを出し、マージされるとwrite権限がもらえます。
githubは、adminとwriteとreadがあり、pushができるのはwrite以上です。
なので、issueのcloseやlabel, prのreview、merge等が行えるようになります。
このように多くの参加者に権限を与えることにより継続的にメンテさせるのは賢いと自分は感動しました。
危険?
最初、自分は人を信用しすぎじゃない?って思いました。
しかし、githubにはcode ownerという仕組みがあり、必ず登録された人を通さないとマージしないようにする仕組みがあります。
なので、ある程度安全が担保できるとは思いますし、そもそも変な人はPRを出す可能性が低いので少しは安心できるかなと思います。
どれだけアクティブか?
大体メールが120通ぐらい1日に来ます。NodeのCoreで70通ぐらいです。
毎日、大量のPRが来て議論をし、マージをしていくため自然と多くなります。
insightsの結果は以下の通り。
Node Coreがこれぐらい
GitHubが一年に一回公開しているThe State of the Octoverseでも以下のように言われています。
React-based web development tools like Gatsby are both among the fastest growing topics this year.
2018年では急成長するトピックの5位にgatsbyがいて、来年は更に伸びることが容易に想像できます。
ここまで人気でアクティブな理由としての1つの要因がこの仕組みじゃないかなと思っています。
現状
さて、自分が所属するOSSの多くはメンテナ不足が問題視されます。(自分の中では)
例えば、webpackを例にとってみます。
現状、webpackであればauthorであるsokra氏が中心で動いており、webpack-dev-server等は自分とevilebottnawi氏で管理しています。(もちろんwebpackの手伝いはするが...)
loader系のメンテナは0のところがありました。
上がってくるissueやprの量が多く一日に捌ききれる数は限られます。
大体、webpack以外のを含め自分宛にくるのが1日20件ぐらいで、1日3時間近くを費やしていますが、修正のコードを書いたりするので全部を見ることが難しいです。
また、毎日活動できるわけではないためマージすることができない日もあります。
自分はOSSを義務にしたくないと思っていますが、最近、義務感がありどうにかしたいなと思っています。
どれだけ規模が大きいOSSでも、アクティブメンテナは基本的に不足しています。
なぜこれでも成り立つかというと、成熟したコミュニティがあり、その人達にissueの回答やPRの作成を助けてもらっているからだと思っています。
しかし、結局レビューしてマージできる人間はごく少量に限られるためその人はほぼ毎日活動しなくてはなりません。
これは、webpackだけの話ではなく他の大規模なOSSでも起こっています。
当たり前ですが、自分がずっとアクティブとは限らないため、常に我々も次のメンテナを探さなければいけませんが、会社の採用よりも難しいと思っています。
リクルートみたいなシステムが無いですし、PRを出すこと自体が難易度高いと思うし、そもそも仕事ではないので継続や教育がないことが多いです。
なので、今回のgatsbyの仕組みには驚きましたし、これぐらい潔くwriteを渡したほうが冗長的でいいんじゃないかなって思います。
まとめ
OSSでは、コミュニティやエコシステムや翻訳等もですが、メンテナのアクティブさも重要視されることかと思います。
大切なことは継続的なメンテナの確保であり、それが難しいのは事実です。
いつの日もOSSというのは、メンテナ不足であり、そこからどう活発にし、生かしていくかの戦略としてgatsbyの仕組みはアクティブになる人を生みやすく正しい戦略だと感じ自分は感動したので記事にしました。