Node.js と io.js の統合は最終局面へ

いくつかこの何日間でニュースが出ているので紹介します。

ちなみに、 io.js と Node.js のニュースに関してはこれまで2つ書いたので、まだ良く知らない人はそれをまずはご一読ください。

yosuke-furukawa.hatenablog.com

yosuke-furukawa.hatenablog.com

さて、次の展開へ、という事でいくつか話があります。

「Join the Node Foundation?」 というissueが mikeal から提案される

github.com

issue 本文を翻訳したものを貼っておきます。

Node Foundationのためのすべての文書が揃った。

gistの内容はつまり、「Node Foundationのガバナンス構造は io.js のガバナンスとほぼ一致している」という事を示している。実際、全ての文書を記述している最中に我々のポリシーを盛り込むために文書を改善させたし、より良い文章が作られていった。新しく "統合された" node プロジェクトは初期リリースターゲットとして、io.js master に入っているものをベースに、node.js からの変更はポーティングされてリリースされることになるだろう。


我々にはfoundationが必要であると私は思っているし、Linux Foundation は Node Foundation を基準とした構造として理想だ思っている。その理由はここに書いた。

medium.com

io.js を node.js と統合して、Node Foundation へ移行するかどうかを実際に決めるのは しかない。


以前我々が約束した事は以下のとおり:

  • GitHub organization は "node" もしくは "node-foundation" などに変更する事
  • 統合作業が起きている間は io.js はリリースし続ける事
  • TC は TSC (技術方針委員会) にそっくりそのまま移動 (人数が多いのでGoToMeetingにswitchするしかないかもしれない。)
  • node-convergence リポジトリを 新しい organization の "node" として移動する事


明らかに多くの技術的なタスクがあるので、 新しく統合されたnodeのリリースができるようになるまで、io.js のリリースを継続的にし続ける事になるだろう。新しいリポジトリへの追加は継続して行われる事になるが、上記にアウトラインとして書いたことはすぐに実行されるだろう。


ワーキンググループでは、node.jsの資産へ適切にアクセスできて、ワーキンググループへ資産が移るように決まるまでの間はio.js としての活動は継続して行う事になるだろう(organizationの名前は変更されるが)。


P.S. プロセスにおいてはワーキンググループは自律している。もし TSC が io.js を Node Foundation に移動したという決定したとして、移動した後、 foundation の外にWGを移動させられるような事は断る事ができる。これは単に organization を移動することへの決定への制限になる。


とまぁこんな感じです。つまり、統合された際に io.js の開発はこれまで通りコミュニティドリブンで行われ、ワーキンググループもこのままで変更されません。

基本的にはio.js側の運営をほとんどそのまま引き継いだ形になります。

ちょっとこのissueの中であった反対意見を上げると:

  1. オープンガバナンスモデルのLive Stream配信がされなくなるのは困る(GoToMeetingはアーカイブ配信しかしない)
  2. 先に参加を表明して、後からコードをマージするのは問題が起きる可能性がある。変更がfixされてから(node.jsチームが変更をもう追加しないという状態になってから)参加するようにしないと後から彼らにとって都合の良い変更が勝手に加わる可能性がある。
  3. Node Foundation が割りとガバナンス志向なところが気になり、プログラマフレンドリーなのか気になる

というものです。僕の中ではどの意見も杞憂、もしくはそこまで強い意見じゃないかなと捉えていて、後は比較的好意的な意見が多いです。

今も議論は継続中ですが、反対意見/疑問があるならこの段階でしたほうが良いです。風向きは統合に対して吹いているように見えます。
おそらくこの issue で疑問や反対意見が出なくなったら本格的に統合が始まると思います。

どうやって統合するつもりなの?

統合に関しては、既に統合プランが出ています。

統合方針
リポジトリの統合プラン


ほとんど上に書いてありますが、 まず人で言うと、nodeのコアチーム(Julien Gilli や jasnellら)とio.jsのチーム(Rod Vaggやmikealら)は統合されることになります。両方に属している人もいるので2倍とかにはなりませんが、一つの大きなチームに変わります。

リポジトリは一旦 io.js も 新しいnodeも同じorganizationの下(node もしくは node-foundation)に置かれる事になります。統合は時間がかかる可能性があるので、 新Nodeへの統合を行いながら並行して io.js がリリースされ続ける事になるでしょう。

新nodeのバージョン番号はどうなるの?

恐らくですが、 v3.0.0 になると思います。これには バージョン番号の重複問題が懸念として上がっています。
io.js は2015年の5月11日、現時点で v2.0.1 です。リリースされているバージョンと重複した場合、npm の engines の指定やnvmやnodebrewのようなバージョンマネージャが壊れてしまう懸念があるので、バージョンを重複させるような事はしません。新nodeは現行の v2.0と被るような事はしないので、おそらく v3.0になると思います。 もしも io.js がさらに先に進んで v3.0 が統合前にリリースされてしまった場合は v4.0 になる可能性もあります。

とりあえず認識しておいてもらいたいのは、現行のリリースバージョンとは被ることが無いということです。

この図が分かりやすいです。 (統合したものはNode v3.0 に読み替えておいてください。)

f:id:yosuke_furukawa:20150512040315p:plain

次の新しいnodeの名前はどうなるの?

元のNode.jsに戻ると思います。ただそうなると、Twitter IDとかlogoとかwebsiteのドメインとか作り直しに近いので、まぁそうなったらそうなったでしょうがない感じはしますね。今丁度 Website WGでは new.nodejs.org みたいな話でドメイン名の検討も含めて議論中です。

今のコアメンバーの思いは?

そこまで意思を全員が表明しているわけじゃないですが、基本的には統合に向いています。ちょうどこの調整に対しての一番の功労者である、 mikeal はブログの中で以下のように述べています。

medium.com

僕達には foundation が必要だ。 彼らは準備をしているし、僕らに参加して欲しいと思っている。僕はこの foundation が io.js にとって理想の構造になっていると思う。さらにボーナスとして、僕らには io.js と node.js のコミュニティの分断と混乱を終わらせることができる。僕らは理想的な環境、分断と混乱の終了を得た上にさらに僕らのガバナンス、リリースプロセス、ワーキンググループを継続させることができる。あとは僕らが選択するだけだ。

まとめ

  • Node.js と io.js の統合は最終局面へ
  • 方針はio.js のガバナンス方針は踏襲される形で提案
  • あとは僕らがどうあるべきかを選択するだけ

感想

元々 node-forward として始まった活動は、 Node.js を fork し、 io.js として進めた後にまた再び Node として戻ることになりました。
これこそが、 mikeal, Indutny を初めとして node-forward のメンバーがやりたかった事なので、僕としては反論は全くありません。

これまでの Node.js サイドから見れば、 Joyent だけの企業からのバックアップ体制だったのが、 IBMMicrosoftといった企業からも支援を受けて運用される形になります。コミュニティドリブンの体制なのは変更されません。

また、時を同じくして、 2014年からリーダーを務めていた TJ Fontaine がNodeのリーダーとJoyent社そのものから退くことになりました
この話はまた次回のブログで。