npmの開発者とコンテンツのコミュニティのマネージャーであるAshley Williams(別名
@ag_dubs )が
Node.js Interactiveカンファレンスで
オープニングスピーチを行いました。 彼女は会社の現状について話し、会社がどのようにお金を稼ぐかを話しました。 実際、npmは
企業サービスの提供から利益を得る営利
企業です。 この収入は、通常の企業としての活動をサポートし、スタッフに給与を支払うのに十分です(現在は23人の従業員がいます)が、無料のnpmパッケージリポジトリをサポートするために残っています。
いくつかの統計。 過去28日間で、npmユーザーは180億のパッケージをインストールしました。 これらのパッケージをインストールするには、リポジトリから60億個のパッケージをダウンロードする必要がありました。 インストールの約3分の2はパッケージをダウンロードせずに実行されましたが、キャッシュから作成されました。 以下は、2013年以降の28日間のダウンロード数のグラフです。

npmの急速な成長は、1週間にリポジトリで公開されるパッケージの数によっても示されます。 グラフには、過去2年間の統計が表示されます。 2015年の初めに1週間に12,500個未満のパッケージがリポジトリに公開された場合、2017年1月の最新の統計は39,692個のパッケージでした。

わずか1週間で約40,000パッケージ。
さらに-2年間の新しいパッケージの統計(毎週)。 古いパッケージの更新は除外されます。

グラフでは、2016年前半に見事な4つのピークと2015年12月に1つの失敗が目立ちました。 アシュリー・ウィリアムズは、これらの異常を説明するものを説明するために途方に暮れました:「おそらく、多くの開発者はその時に興奮していました」と彼女は笑顔で提案しました。
先週だけで、4,685個の新しいパッケージがリポジトリにアップロードされました。
パッケージ統計に加えて、npmリポジトリのプリズムを通じてオープンソースコミュニティがどのように成長するかを見るのは興味深いです。 毎週、約160人がnpmで最初のパッケージを公開します-パッケージの新しいバージョン、つまり最初のパッケージを考慮に入れません。 そのため、オープンソースコミュニティは成長しています。なぜなら、高い確率でこれらは人生で最初のパッケージだからです。
合計で、npmリポジトリには現在102,460のアクティブな「パブリッシャー」(パッケージ作成者)がいます。 これもかなりの量です。
以下は、新規ユーザーの登録数に関する統計です。

現在までに、314,582人のユーザーがnpmに登録されています。 前の図から明らかなように、登録ユーザーの約3人に1人はアクティブな発行者であり、1つまたは複数のパッケージの作成者です。
npmの従業員は、
left-pad
パッケージのスキャンダラスなストーリーを無視しませんでした-11行のコードで、「
インターネットを破壊しました」。
Node.js用の250以上のモジュールの作成者であるWeb開発者のAzerKoçuluは、2016年3月に不快な状況に陥ったことを思い出してください。 彼は、Kik弁護士(メッセンジャー)から、npmから同じ名前kikのモジュールを撤回するようにという要求の手紙を受け取りました。 プログラマーは拒否し、弁護士はnpmに直接連絡し、著者の許可なしにkikの所有者を変更しました。 開発者は怒って、自分のすべてのモジュール(250個以上)を撤回することにしました。 残念ながら、それらの中には
左パッドがありました-11行のJavaScriptコードの小さなモジュールです。 モジュールの単純さにもかかわらず、数千のアプリケーションで、npmマネージャーはパッケージ間の依存関係を確立できなくなりました。
Ashley Williams氏によると、同社はこの問題の深刻さを認識し、深く謝罪し、その話の1週間後、リポジトリからパッケージを削除するための新しいルールを準備しました。
新しい規則の下では、24時間以内にパッケージを撤回する権利があります。 この時間の後、リコールは管理者の許可がある場合にのみ許可されます。 サポートチームは、このモジュールが他のパッケージの依存関係を破壊するかどうかを確認します。 破損した場合、リコールは禁止されます。 この場合、管理は別の開発者に与えられるか、追加の依存関係があるパッケージの作成者に連絡しようとします。
新しいnpmポリシーと
left-pad
ストーリーは、コミュニティからの活発な反応を引き起こしました-Githubで、何千人もの著者がこれについての意見を述べました。 多くの著者は、パッケージを削除したいと考えていました。
これに応じて、会社は新しい分離および非推奨ポリシーを導入し、作成者は、サポートしたくないパッケージのレジストリから名前を削除するだけでパッケージを残すことができます。
したがって、npmエコシステム全体で数千のパッケージ間の依存関係を壊す問題は、1つのモジュールを削除した場合に解決されました。 「レジストリは今では無敵です」とアシュリーウィリアムズは要約しました。
left-pad
ような災害はもはや起こりません。 同社はまた、レジストリのアップタイム(
ping.npmjs.comにリアルタイム統計が表示さ
れる )の割合が高いことと、gitなどのパフォーマンスの数倍の高いnpmパフォーマンスを強調しています。

キャッシュが空の場合、npmはgitより約75%高速です。
JavaScriptの人気は、npmレジストリの急速な成長と、2014年にnpmが世界で最も人気のあるパッケージマネージャーになったという事実によって説明されています。 現在、パッケージの数によって、最も近いパッケージマネージャーであるMaven Central(Java)の2倍以上になっています。

世界最大のパッケージマネージャーであるにもかかわらず、npmはまだ成長の見通しを見ています。 結局のところ、世界には約1800万人のプログラマーがいて、その85%がJavaScriptを使用しています(ある意味、少なくとも部分的に)。 つまり、世界には約1500万人のJavaScript開発者がいます。 現在、それらの50%以下がnpm(約570万人のユーザー)を使用しているため、成長の見通しがあります。
この調査では、npmユーザーの80%がフロントエンド開発に従事しており、60%がバックエンド開発に従事していることが示されました。 また、この問題を調査したところ、npmは、それが設計されておらず、サービスの作成者には発生しなかった、信じられないほどすばらしいものに使用されていることがわかりました。