Pocket

プログラム言語やプラットフォームを作り上げるにあたって挑戦は付き物だ。

Node.jsプラットフォームを取り巻く経緯はまさにその典型である。
Node.jsではJavaScriptおよび中核となる機能を使うためのモジュールを使ってバックエンドサービスをつくり上げることが出来る。
Node.jsのモジュールはサーバアプリの開発を簡略化するためのAPIをつかう。
Node.jsのパッケージエコシステムであるnpmは世界最大のオープンソースライブラリだ。

現在、50億のコネクテッドデバイスが存在しており、向こう数年でこの数は飛躍的に増加する。これらのデバイスを接続するというニーズはとても重要なもので、IBMやSAMSUNG、Intel、マイクロソフトといった企業はAPIがこれらのデバイスを接続するための重要な要素であり、Node.jsはその接続を実際に担うものであると考えている。

Linux財団コラボレーションサミットで、Node.jsのメンバーにコミュニティで経験したことについて話を聞くことが出来た。

Node.jsが抱えていた問題:開発者の流出、イノベーション減少、やがてプロジェクトへの興味喪失・・・

2009年5月に登場したNode.jsは、git/GitHubの時代に産み落とされた。始まって以来長くは経ってないが、その歴史は教訓だけでなく開発が新しい時代を迎えた今、オープンソースコミュニティが内部衝突とどの様に向き合うのかという回答も示している。数年前、Node.jsには僅かなコミッター(レポジトリに書き込み権限を持ち、コードのマージやバグ対応を行う貢献者)しかおらず、管理体制や人選について疑問が投げかけられた。数少ないコミッターによるNode.js Coreのメンテナンス労力の不足は如何ともしがたく、コミッター、外部の貢献者プロジェクト共にプロジェクトは勢いを失っていき、リリースの頻度も下がっていった。

今やIBMにおけるNode.jsの専門家であり、Node.js core Technical Steering CommitteeのメンバーでもあるJames Snellなど、Node.jsプロジェクトに投資した人たちは次のように語る。「開発者たちは何か変化を起こす事を促されていると感じる事が出来ず、彼らの流出を招いてしまった。イノベーションが減少し、やがてプロジェクトに投資する興味も失っていった」

貢献するためのプロセスを自由主義化することで、プラットフォームをより安定的なものへ

これらの問題を抱えていたことから、2014年12月、Fedor IndutnyはNode.jsの分岐プロジェクトであるio.jsを開始した。Node.jsと異なり、彼らはio.jsをGoogle V8 JavaScriptエンジンの最新リリースに対応させ続けるプランを持っていた。io.jsが異なる点は、運営がDo-ocracy運動に基づいていたところだ。これは個人が自分で役割やタスクを決めて事を進め、その責任は公式の代表などではなく作業を行うものが負うという組織構造のことを言う。

Snellは次のように言っている。「貢献するためのプロセスを自由主義化することで、プラットフォームをより安定的なものにした。」 更にコミュニティーメンバーのコードやドキュメント、コミュニティー自体への貢献する人たちは、意思決定において全員が平等の立場にあると彼は説明する。

最初の数カ月間でio.jsはNode.jsプロジェクトがこれまで集めたよりも多くのアクティブな開発者を集めることに成功した。2015年2月には、中立的立場を取るNode.js財団の設立が発表された。また2015年6月までにNode.jsとio.jsはNode.js財団の下共に歩んでいく方針が定まった。Node.js v0.12とio.js v3.3はマージされ Node v4.0となった。これによりV8機能と長期間サポート(LTS)がNode.jsにもたらされた。

Node.jsの新たな進路とは

Node.js財団のガバナンスは台頭な立場の2者に分割された。ビジネス、マーケティング、法的対応を担うBusiness Boardと、開発、テスト、構築、ワークグループなどを担うTechnical Steering Committeeだ。Snellは次のように説明する。「この様なガバナンス体系を持つことで意思決定がはっきりとし、人間関係から来る問題が解決された」

またこの事により開発者たちがイノベーションを起こすための余地も生まれた。「開発者や貢献者たちがやりたい事こそが我々のロードマップであり、その事はコミット履歴にあらわれている」

今日ではNode.jsプロジェクトは様々なコンポーネントに分かれており、メンバーは400名をゆうに超える。Node.js Coreでは50名のコミッター、毎月100名の貢献者を抱えている。Node.js財団のコミュニティマネージャ Mikeal Rogersはイノベーションは財団の様々な部分に及んでいると説明する。

「どういった人たちが今の我々にとっての開発者となるのかについて、分析をちょうど始めたところです。カジュアルユーザーのために最善を尽くし、これらユーザがコミュニティの参加者になるにはどうすればいいかを模索しています。彼らがただの受け身な消費者に留まらないよう、参画のためのハードルをなくそうとしているところです」

財団のTechnical Steering Committeeは包括的なワーキンググループを含む様々な委員会の監督を行っている。彼らは委員会を誰でも参加出来るものにする為の様々な方法を導入している。例えば「異なるタイムゾーンに住んでる人達がレビューする為の時間を確保するために、プルリクエストは少なくとも36時間継続すること」という取り決めなどだ。

「プロジェクトが成熟するにつれ、品質管理はトップヘビーかつ過剰にヒエラルキー化したものになっていきます。そこでプロセスに透明性を持たせ、他の人の参加を促す事によりコードレビューの平均を上げ、より良い品質管理を実現するのです。より多くの人が参加するということはレビューの数も増えることを意味し、それはすなわちより良いチェック機構の実現も意味します。またグループを幾つかのワーキンググループに分割することでトップヘビー化を回避するようにしています」

Node.jsが示す自由解放主義的な貢献と、一般参加型のガバナンスはオープンソース開発の未来の姿であり、コミュニティが成長を続ける限り、それは他のコミュニティが模範とする姿を提示することにもつながる。

Pocket