世界を動かす技術を、日本語で。

オープンソースプロジェクトが消えてしまう愚かな方法

2026年5月20日原文(nesbitt.io)

概要

  • オープンソースプロジェクトの多くがメンテナンスされなくなり「死んだ」状態に陥る現実
  • プロジェクト停止の背景には多様なパターンが存在
  • メンテナー不在や企業の放置、資金切れなどが主な要因
  • 外見上は健全に見えても実態は停止しているケースも多い
  • 依存関係や外部要因による間接的な「死」も頻発

オープンソースプロジェクトが「死ぬ」多様なパターン

  • 人間のメンテナー不在

    • メンテナー離脱。最後のコミットから数年経過し、issueが蓄積するも放置状態
    • 企業による孤児化。チーム解散や事業転換で管理者不在となり、READMEも更新されず
    • 学術プロジェクト孤児。学生の卒業や研究室の人員交代で誰も引き継がず
    • 資金切れ。助成金やスポンサー終了で開発停止、READMEのロゴだけが残る
    • メンテナーの転職。新しい職場の規約や業務多忙で活動停止
    • 継承の行き詰まり。引き継ぎ希望者はいるが権限移譲できず、公式手続きも長期化
  • メンテナーはいるが実質停止

    • バーンアウト停滞。小規模な修正は続くが、本質的な対応は行われない
    • ベネボレントゾンビ。Botによる自動コミットだけが続き、実質的な開発者不在
    • 管理権争い。共同メンテナー間の対立でプロジェクトが凍結
    • 部族知識消失。主要開発者の離脱で誰もコア部分を触れず事実上の凍結
    • 有害なゲートキーピング。排他的なメンテナーの態度で後継者が育たず
  • 悪意や事故による乗っ取り・破壊

    • 乗っ取り。悪意ある人物が権限を獲得し不正コードを混入
    • プロテストウェア。正当なメンテナー自身が意図的にパッケージを破壊
    • リリース不能。権限やリリース環境の喪失で新バージョン公開不可
    • 再現不能なビルド。過去のビルド環境消失で再リリース不可
    • シャドウメンテナンス。実際の開発はクローズドで行われ、公開リポジトリは形骸化
  • バージョン・依存関係・レジストリ問題

    • メジャーバージョン孤立。古いバージョンが主流のまま新バージョンが普及せず
    • レジストリ孤児。レジストリ上のURLが消失し、ソース確認やフォークが不可能
  • 外的要因による強制停止

    • 制裁による孤立。地政学的要因でアカウント凍結、公開不可
    • Takedown(削除)。法的要請や商標問題でレジストリやホストから削除
  • プラットフォームや依存の変化による陳腐化

    • プラットフォーム孤立。EOLランタイムや消失した依存環境に縛られる
    • 依存の「死」。下位依存の停止が連鎖的に影響
    • APIの消失。外部APIやサービスの終了で機能消失
    • 役割の消滅。標準化や言語機能拡張で不要化
  • プロジェクトの分裂・分岐

    • フォークの膠着。意見対立や離脱で複数分岐し、どれも主流にならず停滞

オープンソースの「死」のサインとその見分け方

  • 表面的な活動指標だけでは実態を把握できない

    • Botによる自動化や小規模な修正が続いていても、実際には開発停止
    • issueやPRが放置されている場合、内部で既に「死んでいる」可能性
    • レジストリ上で解決できても、ソースや運用体制が消えているケース多数
  • プロジェクトの健全性評価の限界

    • 活動履歴やリリース頻度だけでは、継続的な人的関与や将来性を測れない
    • 継承・権限移譲の仕組みや、ドキュメントの整備が不可欠

まとめ:オープンソース依存のリスクと対策

  • 依存パッケージの「死」に備える重要性

    • 依存先の健全性だけでなく、引き継ぎ体制やドキュメントの有無も確認
    • 可能な限り代替手段やフォークの選択肢を用意
    • オープンソースの「死」は多様な要因が絡むため、単一指標での判断は危険
  • コミュニティの維持と健全なガバナンスの推進

    • 継承・権限移譲の手続き明確化
    • オープンな開発体制と新規参加者への配慮
    • 構造的なリスクを理解し、長期的な運用と保守を意識する姿勢

Hackerたちの意見

リストに載ってないけど、「過信したフォーク」ってのがあるよね。誰かが既存のプロジェクトを怒りや傲慢からフォークするけど、そのフォークは結局重要な支持を得られずに消えていく。逆に、OpenSSHやJenkins、LibreOfficeのように、元のプロジェクト(SSH、Hudson、OpenOffice)が傲慢だったけど、コミュニティが移っていくうちにすぐに忘れられちゃったってのがあるね。

時々、フェードアウトする代わりに、良いことをするレイジフォークが生まれることもある。2014年か2015年のio.jsのノードからのフォークが思い浮かぶ。確か、ノードを前に進めるために必要な変更や改善がたくさんあったけど、Joyentが足を引っ張ってたんだよね(V8のアップグレードがその一つだったかもしれないけど、もう長いこと前のことだから確かには覚えてない)。コアの開発者たちも、全てが進むのが遅いことにうんざりしてた。だから、彼らのグループがノードからio.jsをフォークして、アップグレードや他の改善を行った結果、最終的にはそれがコアノードに戻ってきて、みんなが満足する結果になった。でも、少しでも状況が違っていたら、みんながノードじゃなくてio.jsを使っていたかもしれないと思う。

このリストにはいろんなエッジケースがあるね。使ったプロジェクトの中では、ほとんどがメンテナーが興味を失ったり、姿を消したりすることが多い。フォークはいつも解決策として提案されるけど、いくつかのプロジェクトはフォークを敵対的な試みとして扱うんだ。重要なリクエストをマージしたくないメンテナーがいて、フォークしようとする人に対して非常に敵対的になったこともあったよ。もしメンテナーがプロジェクトとそのユーザーを自分の小さな帝国のように扱ったら、状況は悲惨になるよね。

フォークの「反対側」がそれを少しネガティブに見るのは全く驚きじゃないね。フォークを計画している人も、メインラインのプロジェクトのメンテナーをその瞬間、少しネガティブに見てるだろうし。彼らはどれだけ敵対的になってもいいけど、それはフォークの決定にはほとんど関係ないみたい。もしメインラインがパッチを受け入れないとか、別の方向に行きたいなら、フォークするのは全然妥当だし、彼らの帝国を維持できる。それでいいんじゃない? 東に行きたくないなら、東に行くフォークがあれば、同じく東に行きたいユーザーも満たされるし。

ライセンスがオープンソースなら、メンテナはフォークされると文句を言うことしかできないよ。自分の(比喩的な)耳を塞いで、作業を続けるしかないんだ。

それからJekyllがあるけど、完全に死んでるわけじゃないけど、確実に衰退してるね。GitHubがさらなる開発や4.xリリースへのアップグレードをサポートしないせいで、行き詰まってるみたい。

GitHub Pagesの問題を無視すると、Jekyll 4.xでやってほしいことって何?

昔は「オープンソースプロジェクト」って言うと、「問題があったから、これが解決策だ。同じ問題を抱えてる人は自由に使ってね」って意味だったんだよね。最近はもっと、 - 個人ブランドを築く - スキルをアピールする - 誰かを出し抜こうとする、たいていは自分のPRをマージしてくれなかったから - 時にはただ楽しむため そして大きな組織で働いてると、「これ、うちのエピックのどれかに似てるから使い始めよう、24/7のサポートを要求しよう」ってことも多い。

昔は、ウェブって趣味を匿名のサポートしてくれる人たちと共有する場所だったし、暗号通貨は数字を使って賢いことをすることを意味してた。私の経験上、欲望やお金、サイコパスがダンバー数を超えるものを台無しにするのはほぼ確実だよね。遊び場が麻薬王たちに乗っ取られるのは悲しいことだ(比喩的にね)。それに対する答えは持ってないけど、私の中心的なトラウマだよ。

同じようなスタイルのプロジェクトはたくさんあると思う。ただ、開発者の数は爆発的に増えて、ニッチで解決策のない問題の数は劇的に減ったね。

共有から伝道へと明確にシフトしたよね。例えば、Cは共有され、C++は伝道された。違いは、人々に自分のものを採用させるためにかける努力だよ。Javaなんかは超伝道されたし、サンはそれで運命が逆転するかもって思ってた。Linuxは最初は「どうぞ、うまくいくといいね」って感じだったけど、そこからエコシステムを作る人たちが集まってきた。

依存関係の膨張や依存関係の腐敗が、解決策をあまり永続的でなくし、メンテナンスの負担を増やしてる。依存関係ゼロの古いプロジェクトはまだ残ってるけど、変動する依存関係に基づいて作ったプロジェクトは腐ってきてる。

Hacker Newsで議論の続きを見る