
オープンソースプロジェクトが「死ぬ」25以上の失敗パターンを分類
Andrew Nesbittが2026年5月19日、オープンソースプロジェクトが放棄・実質廃止に至る失敗パターンを体系的に整理した記事を公開した。「Weekend at Bernie's」分析を起点に、メンテナー離脱からサプライチェーン攻撃、ライセンス変更まで25件超の具体的事例を列挙している。
「Weekend at Bernie's」プロジェクトは、最も多くのパッケージから依存されているオープンソースパッケージの多くがすでに死んでいることを示した。
リポジトリ消失と幽霊メンテナー
「About 1.7% of npm and 4% of Packagist point at a repo that isn't there, and a fair number of those are still being installed.」
npmパッケージの約1.7%、Packagistパッケージの約4%が存在しないリポジトリを指しており、そのうち相当数は今もインストールされ続けている。パッケージ自体はレジストリに残っているため、ロックファイルが参照し続ける構造的問題がある。
サボタージュとサプライチェーン攻撃
実際に発生したサプライチェーン侵害の事例は複数記録されている。
- xz(2年間の標的型攻撃): 過負荷状態のソロメンテナーに対して2年間にわたるソーシャルエンジニアリングキャンペーンを実施し、共同メンテナーとして追加されたのちにバックドア入りリリースを出荷した。
- event-stream(2018年): オリジナル作者が申し出てきたボランティアにパッケージを譲渡し、そのボランティアが下流の依存関係にウォレット窃取コードを追加した。
- colors・faker・node-ipc(2022年):
colorsとfakerは作者自身によってサボタージュされ、node-ipcはロシアおよびベラルーシのIPレンジを標的としたペイロードを同年出荷した。 - left-pad(2016年): npmとの紛争を理由に作者がパッケージを完全に非公開化した。
- youtube-dl(2020年): レジストリおよびホストから削除されたが、のちに復元された。
外部プラットフォーム変更とフォーク
TwitterのAPIを2023年に変更したことに続くRedditの同様の変更が、クライアントライブラリの一世代を事実上消滅させた。また、一部のnpmおよびGitHubアカウントが輸出規制・制裁の適用を受けてサスペンドされた事例も存在する。
ライセンス変更によるフォークも相次いでいる。Terraformはオープンソースでないライセンスに移行し、コミュニティフォークのOpenTofuが生まれた。RedisとValkey、ElasticsearchもそれぞれOSSライセンスから離脱する同様の経緯をたどっている。一方、io.jsとNodeは最終的に統合され、libavもFFmpegに合流した事例のように、フォークが解消される場合もある。PEP 541プロセスやnpmの紛争ポリシーは、メンテナー継承の膠着状態に対応するための制度として存在する。
筆者の見立て
- 依存関係として解決可能な状態にあるパッケージを削除することは誰の優先事項でもなく、廃止済みパッケージがロックファイル内に無期限に残存すると示唆している。
- パッケージがいずれの失敗パターンに該当する場合でも同様に解決されるため、ロックファイルは誰も確認しない限りそのパッケージを「サングラスをかけたまま」運び続けると解釈している。
- 推移的な依存関係の死という再帰的ケースとして、リスト上のすべての項目は依存するパッケージをも死なせる手段になり得ると示唆している。
- 有害なゲートキーピングはコミットや課題クローズを集計するあらゆる指標において健全に見えると述べており、そうした指標がプロジェクト健全性の評価に不十分であると解釈している。
- 「ベネボレントゾンビ」的な活動は直近性に基づくすべてのヘルススコアでプロジェクトを問題なしと評価させるとし、これが直近性に基づくヘルススコアのほぼすべての問題であると解釈している。
- 本記事のタイトルが由来するメルボルン・メトロの安全啓発キャンペーンが「列車の周辺では安全に」で締めくくる点について、自分が提示できるものより実行可能だと論じている。
この記事は元記事の事実のみに基づいて自動生成されました。
出典
Andrew Nesbitt, "Dumb Ways for an Open Source Project to Die", https://nesbitt.io/2026/05/19/dumb-ways-for-an-open-source-project-to-die.html (Melbourne Metro safety campaign の報道による)