技術探し

JavaScriptを中心に記事を書いていきます :;(∩´﹏`∩);:

OSSの現状と今後

Gatsbyが面白い仕組みを導入していて、驚いたので書くことにしました。

Gatsby

React.jsの静的サイトジェネレーター

github.com

最近、海外ではとても流行っています。

コミュニティ

最近、gatsbyのメンテナチームに所属しました。

f:id:about_hiroppy:20190228075105p:plain

人数が異常ですよね、このチームに所属しているとgatsbyjs/gatsbyのwrite権限を持ちます。

そう、個人的に画期的だと思った仕組みは、メンバーの招待です。
1つPRを出し、マージされるとwrite権限がもらえます。

f:id:about_hiroppy:20190228075357p:plain

githubは、adminとwriteとreadがあり、pushができるのはwrite以上です。
なので、issueのcloseやlabel, prのreview、merge等が行えるようになります。

このように多くの参加者に権限を与えることにより継続的にメンテさせるのは賢いと自分は感動しました。

危険?

最初、自分は人を信用しすぎじゃない?って思いました。

しかし、githubにはcode ownerという仕組みがあり、必ず登録された人を通さないとマージしないようにする仕組みがあります。

f:id:about_hiroppy:20190228074751p:plain

github.blog

なので、ある程度安全が担保できるとは思いますし、そもそも変な人はPRを出す可能性が低いので少しは安心できるかなと思います。

どれだけアクティブか?

大体メールが120通ぐらい1日に来ます。NodeのCoreで70通ぐらいです。
毎日、大量のPRが来て議論をし、マージをしていくため自然と多くなります。

insightsの結果は以下の通り。

f:id:about_hiroppy:20190228080749p:plainf:id:about_hiroppy:20190228080801p:plain

Node Coreがこれぐらい

f:id:about_hiroppy:20190228080910p:plain

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がいて、来年は更に伸びることが容易に想像できます。

f:id:about_hiroppy:20190228081400p:plain

octoverse.github.com

ここまで人気でアクティブな理由としての1つの要因がこの仕組みじゃないかなと思っています。

現状

さて、自分が所属するOSSの多くはメンテナ不足が問題視されます。(自分の中では)

例えば、webpackを例にとってみます。
現状、webpackであればauthorであるsokra氏が中心で動いており、webpack-dev-server等は自分とevilebottnawi氏で管理しています。(もちろんwebpackの手伝いはするが...)
loader系のメンテナは0のところがありました。

Mark mocha@6 compatibility and upgrade all dependencies by AviVahl · Pull Request #76 · webpack-contrib/mocha-loader · GitHub

上がってくるissueやprの量が多く一日に捌ききれる数は限られます。
大体、webpack以外のを含め自分宛にくるのが1日20件ぐらいで、1日3時間近くを費やしていますが、修正のコードを書いたりするので全部を見ることが難しいです。
また、毎日活動できるわけではないためマージすることができない日もあります。
自分はOSSを義務にしたくないと思っていますが、最近、義務感がありどうにかしたいなと思っています。

どれだけ規模が大きいOSSでも、アクティブメンテナは基本的に不足しています。
なぜこれでも成り立つかというと、成熟したコミュニティがあり、その人達にissueの回答やPRの作成を助けてもらっているからだと思っています。

しかし、結局レビューしてマージできる人間はごく少量に限られるためその人はほぼ毎日活動しなくてはなりません。

これは、webpackだけの話ではなく他の大規模なOSSでも起こっています。
当たり前ですが、自分がずっとアクティブとは限らないため、常に我々も次のメンテナを探さなければいけませんが、会社の採用よりも難しいと思っています。
リクルートみたいなシステムが無いですし、PRを出すこと自体が難易度高いと思うし、そもそも仕事ではないので継続や教育がないことが多いです。

なので、今回のgatsbyの仕組みには驚きましたし、これぐらい潔くwriteを渡したほうが冗長的でいいんじゃないかなって思います。

まとめ

OSSでは、コミュニティやエコシステムや翻訳等もですが、メンテナのアクティブさも重要視されることかと思います。

大切なことは継続的なメンテナの確保であり、それが難しいのは事実です。

いつの日もOSSというのは、メンテナ不足であり、そこからどう活発にし、生かしていくかの戦略としてgatsbyの仕組みはアクティブになる人を生みやすく正しい戦略だと感じ自分は感動したので記事にしました。