BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース NPMが2.5時間に渡って停止

NPMが2.5時間に渡って停止

原文(投稿日:2016/03/24)へのリンク

npmの創設者であるIsaac Z. Schlueter氏によると,2日前,npmレジストリに毎分数百件というビルドエラーが出力されるようになり,世界中のユーザが,特定のNode.jsパッケージをインストールないしビルドすることができなくなった。これによってBabelやAtom, Ember, React Nativeなど,line-numbersに依存する数千件のパッケージが影響を受けた。一体何が起きたのだろうか?

Azer Koçulu氏はソフトウェア開発者で,273個のNode.jsパッケージの作者でもある。 その中にはkikleft-padなどもある。後者は文字列の左を埋める(右詰めする),11行の関数だ。氏は数週間前,Kikという企業から連絡を受けた。同社は27,000万のユーザを持つメッセージングアプリケーションを開発しており,その名称を多数の国で商標登録しようとしていた。彼らはそのパッケージをnpm上で,その名称でリリースしようとした。しかし,すでに同じ名称が存在していたため,氏に連絡を取り,問題を穏便に解決する方法を探したのだった。しかし両者は,合意に至ることができなかった。そこでKikは,この問題を紛争解決(Dispute Resolution)を通じて解決すべく,npmjsに連絡を取った。そのnpmjsが,ユーザ数の多さを理由にKik側を支持したのだ。

ポリシの重要な目標はこれです — npmユーザが期待するパッケージを提供すること。これにはスパム,タイプミス攻撃(typo-squatting),誤解を招くパッケージ名,さらには今回のように,より複雑なケースも含まれています。この基準に従って私たちは,“kik”というパッケージ名はKikが維持すべきであるという結論に達し,その旨を両者に通知しました。…

kikという名称を巡って張り合う2つのパッケージがあると,npm install kikと入力したユーザの多くが,2億人のユーザを持つメッセージングアプリとは無関係のコードを受け取って困惑を覚えることになるでしょう。

従ってnpmjsは,パッケージ名の所有権をKikに譲渡することを決定した。Koçulu氏はこの結論に納得せず,次のように書いている。

この状況から,NPMが特定の個人の所有物であって,そこでは一般人よりも企業が力を持っているということを思い知らされました。ですから私は,人々にもっと力を与えてくれるオープンソースを実践することにしたのです。

そこで氏は,kikやleft-padを含む,自身のすべてのモジュールを非公開にすることにした。この行動は完全に想定外なもので,npmjsにはその準備ができていなかった。多数の重要なパッケージがline-numbers経由でleft-padに依存していたため,ビルドが失敗するようになったのだ。npmjsが期待していたのは,Koçulu氏が自身のパッケージをバージョン0.0.3としてレジストリに残し,Kikが自分たちの同名のパッケージをより新しいバージョン,おそらくは1.0.0として追加することだった。そうすれば0.0.3を使用するパッケージは,これまで通りの動作をすることができる。

可能な限り早く問題を解決するために,npmjsは,left-padを再度公開する決定をした。“left-padはオープンソースなので,同じバージョン番号を使用しない限り,放棄されたパッケージ名を使用することができる”からだ。その後間もなくして,npmのエコシステムは正常に復帰した。将来的にこのような状況を避けるため,npmjsは今後,パッケージの非公開化あるいは悪意を持った廃止パッケージ名の再利用をこれまでより難しくことを決定した。しかしながら,いくつかの問題が残っている。

Koçulu氏はnpjmsでの自身の作品公開を止めると決心し,“オープンソースコミュニティが将来的に,NPMに対する真に無償の代替サイトを立ち上げることを願って”いる。同時に氏は,自身の行動によって影響を受けた人たちに謝罪している。氏の立場には,TwitterHacker NewsRedditなど,さまざまなWebサイトで賛意が表されている。氏が行なったように,いつの日か“インターネットを打ち壊す”ことを切望する人がいる一方で,氏の行動を無責任だと考える人もいる。JavaSciptエコシステムは脆弱なのだろうか?そう考える人もいれば,対照的に,発生した問題が素早く修正されたことを評価する考えもある。誰でも数分で書けるような11行のコードにそこまで依存するというのは,皆がプログラミングを忘れてしまったのではないか,と疑問を持つ人もいる。

それにしても,ただひとつのリポジトリに集中して依存するのは安全なのだろうか?分散型のモジュール配信システムの提案も一部にはある。今回の出来事は,この件についてコミュニティが行動を起こすべきだというメッセージになるだろう。

 
 

この記事を評価

関連性
形式
 
 

この記事に星をつける

おすすめ度
スタイル

BT