YAPC::ASIA 2015で「どうしてこうなった? Node.jsとio.jsの分裂と統合の行方。これからどう進化していくのか?」というタイトルで発表してきた。

YAPC::ASIA 2015 でスピーカーとして参加してきました。

2014年に一度スポンサーセッションでトークしましたが、2015年はCFPを出しつつスピーカーとして参加してきました。自分がNode学園のオーガナイザーになってみてわかりますが、YAPCの規模で毎年カンファレンスを続けるのは本当にすごい。スタッフ含めておもてなしと手際の良さが表れていて、素晴らしかった。

あと発表者としては、今回のYAPCの参加者はかなり積極的に質問してきていて、いつもよりも参加してる人達の"質問してやろう"っていう意向が強くて活発な議論ができたかと思います。すごく良かったです。

発表内容

発表の内容は Node.js の歴史と今のNode.jsの開発体制の話、さらに今後のNode v4.0 の話を中心的に話してきました。

Node.js は Ryan Dahl によるBDFL(優しい終身の独裁者)の開発体制で始まり、 io.js になってTC(技術委員会)による合議制モデルの開発体制にシフトしました。往々にして OSS の開発体制はBDFLによる統治制が多いのですが、Apache を初めとして TC による体制もあります。

本質的で良い質問だなと思ったんですが、うまく回答できなかった質問に

BDFLモデルとTCモデルのどっちがいいんですか?

っていう質問がありました。聞かれた時はうまく答えられなかったので、ここで補足しておきます。


どっちがいいかは正直わかりません。ただ国家の統治制もそうだと思うんですが、独裁体制の方が合議制より効率が良いし、その人の哲学に沿うようになるので、コードとして見た時には「哲学に沿わないようなコードは入らないだろうな」とか、「この機能は入れるけどこの機能は入れない」みたいな機能の決定がすっきりするだろうなと思います。

ただある程度成熟してくると、独裁による決定よりもコミュニティ全体の決定の方が優先するべき時もあります。コミュニティの意見を聞かなくなってしまうとコミュニティが離れてしまい、OSSとして良い方向にならないからです。そういう意味では一人の人が決めるよりも効率を犠牲にした上で色んな意見を聞いて合議制で決める方が良い時もあります。

最終的にどっちがいいのかはよく分かりません。ただNode.jsは既にサーバーサイドのJavaScriptでも無ければビルドツールでもなくて、クライアントアプリケーションだったり、AWS Lambdaにも使われてたり、IoTとしても使われています。さらに言えば企業からも利用されているので蓋を開けてみればものすごくたくさんの人達から使われていて、このコミュニティ、エコシステムこそがNode.jsと言えるものになっています。

その人達が選択したのが今のTCモデルです。io.js発起人のMikeal Rogersは何度も意見を聞いて、何度もコミュニティにどちらがいいかのvoteをお願いしてきました。
僕としてもコミュニティを主軸とした今回のTCモデルには賛成です。

今後のNode.jsでは、コアはシンプルでExtensibleなすっきりしたものになるでしょう。その代わりnpmモジュールを起点としてユーザーランドの自由を増やしています。逆に言えばnpmやコミュニティの支援がないとコアのNode.js単体ではアプリを書くのが難しくなると思います。Node.jsはそういう方向を選びました。

和田さんと話した時

ちょうど僕の発表の後で和田さんがブログに起こしたエントリが素晴らしくて、これもOSSを育てるためにはどうしたらいいかっていう話だと思います。

t-wada.hatenablog.jp


YAPCのあとで和田さんと飲んだ時に「どうやって盛り上がってる感を出しつつ、コアのコードの洗練された形を保つか」っていう議論がありました。

盛り上がっている感を出す方法はいくつもあって、ひとつはプラグインみたいな形でextensibleな余地を残しておくこと、もうひとつは今のNode.jsがやってるみたいにEvangelismやlocalizationも含めて一つのコントリビューションとみなしてそれぞれに役割と責任を与えてあげることかなと思います。(ちょうど僕がEvangelistというラベルを与えられたことで他のカンファレンス (YAPC) でも話すようになったように。)

extensibleな余地があるとコアを直接いじる以外にも参加する人達が増えてきて、結果的にロックスターが出てきたりして、さらに盛り上がるかと思います。(ただまぁ、そういうextensibleな設計が難しいというのは同意です。)

YAPCお疲れ様でした。

スタッフ、参加者、登壇者の皆さん本当にお疲れ様でした。まさに10年間の集大成という感じでした。
参考にできそうな話は山ほどあったし、カンファレンスの運営スタイルも参考にします。