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

ラグプル、フォーク、オープンソースの封建制

2025年9月6日原文(lwn.net)

概要

  • オープンソース開発における パワーダイナミクス の実態
  • リライセンスフォーク による力関係の変化
  • 主要事例(Elasticsearch, Terraform, Redis等)の分析
  • プロジェクト選定ガバナンス の注意点
  • コミュニティ主導の持続可能な開発の重要性

オープンソース開発におけるパワーダイナミクス

  • オープンソース開発では 企業・開発者・ユーザー 間で影響力争いが発生
  • 大手クラウドプロバイダーが 最も強い力 を持つ傾向
  • 貢献者やメンテナーは 小規模企業やユーザーよりも弱い立場
  • クラウドサービス利用の容易さが、 プロジェクトへの還元不足 を招く
  • 小規模企業には リライセンス という対抗手段が存在

リライセンスとラグプル(Rug Pull)

  • リライセンス により利用者・貢献者に不利益が発生
  • 「ラグプル」とは、 企業が突然ライセンスを変更し利用者の立場を不利にする行為
  • 単一企業主導のプロジェクトは ラグプルリスクが高い
  • 企業の経営方針変更や買収で 信頼性が揺らぐ 事例
  • 投資家への説明責任が 収益化圧力・リライセンス につながる

フォークによるパワーバランスの逆転

  • フォーク はコミュニティが力を取り戻すための手段
  • フォークには 人材・リソース が不可欠
  • 大企業やクラウドプロバイダーが フォークを支援 するケースも
  • すべてのリライセンスが 人気フォーク につながるわけではない(例:MongoDB, Sentry)

主要事例分析

  • Elasticsearch :Elastic社がSSPLにリライセンス、AWSがOpenSearchをフォーク
    • フォーク後もElastic社員中心の貢献体制、OpenSearchはAmazon主導
    • Linux Foundation参加後も外部貢献者の増加は限定的
  • Terraform :HashicorpがBusiness Source Licenseに変更、OpenTofuがLinux Foundation傘下で誕生
    • OpenTofuは複数企業から新規貢献者を獲得
  • Redis :SSPLへのリライセンス後、ValkeyがLinux Foundation下でフォーク
    • 外部貢献者がValkeyへ移動し、強力なコミュニティ形成

フォーク・リライセンス後の影響

  • リライセンス直後に GitHubフォーク数が急増 する傾向
  • フォーク側の利用は 本家より少ない が、両者とも開発継続
  • リライセンスされたプロジェクトは 利用者減少傾向
  • 中立的な財団下でのフォークは コミュニティ活性化 につながる場合も

リスク回避とプロジェクト選定のポイント

  • 貢献者ライセンス契約(CLA) は企業側にリライセンス権限を与えるため、注意が必要
  • 開発者証明書(DCO) 利用プロジェクトはラグプルリスクが低い
  • 財団傘下でも 単一企業支配 の場合はリスクあり(例:Cortex→Mimir)
  • 中立的ガバナンス ・複数組織のリーダーシップが望ましい
  • 貢献者層の厚さも 持続性の指標
  • 企業は依存プロジェクトへの 社員貢献 で影響力強化と持続可能性向上

コミュニティ主導の持続性と今後

  • CHAOSSプロジェクト によるプロジェクト評価指標・ガイドラインの活用
  • クラウドプロバイダーの台頭で 封建的構造 が強まる傾向
  • リライセンスでクラウド側の力を抑制できるが、 貢献者の力も奪う 側面
  • 貢献者は フォークで主導権を取り戻す ことが可能
  • フォークの成功事例が企業のリライセンス判断に 影響を与える ケースも
  • 中立ガバナンス と外部貢献者拡大が最良の対策

まとめと推奨アクション

  • プロジェクト選定時は ガバナンス・貢献者構成・ライセンス契約 を確認
  • 中立的な運営体制 ・多様な貢献者が持続性の鍵
  • 企業・個人ともに 積極的な貢献 がプロジェクトの健全性を支える
  • 受け身ではなく、主体的な関与 がリスク低減と影響力強化に直結

Hackerたちの意見

ソースからデフォルトでソフトウェアをビルドするのは、こういう出来事の影響を減らして、力のバランスを変える一つの方法だよね。もしベンダーからバイナリやイメージをインストールしてるなら、フォークに移行するのは大変かもしれないし、リスク評価も必要だしね。でも、既存のビルド環境を新しいリモートからソースを同期させるように切り替えるのは簡単だと思うよ。それに、メンテイナーにリリースを急かしたり、無視されてるバグ修正や機能追加をお願いする必要もないし、必要なものをそのまま選んで持ってくればいいんだ。

なんでこれがダウンボートされてるのか分からないけど、同意だわ。ソースからビルドするのもそんなに難しくないしね(sqliteを見てみて)。

実際のソフトウェアライセンスによるけど、多くの商業ベンダーはソースコードを提供してるよ。ただ、そのライセンスではコードを好き勝手に使うことはできないんだ。技術的には可能でもね。商業製品では、スクリプト言語が使われることが多いから、そういうことがよくあるんだよね。例えば、エンタープライズコンサルティングでは、コードがプロジェクトの一部として提供されるけど、コンパイルのためにはエージェンシーに縛られることが多い。顧客がその権利のために追加料金を払わない限りね。

これが私がGuixを好きな理由の一つなんだ: そのパッケージシステムは、ソースビルドを通常のケースとして扱っていて、バイナリパッケージはキャッシュを通じて利用可能なんだ。だから、パッケージをインストールしようとしてキャッシュされたバイナリがない場合、Guixはその場で喜んでビルドしてくれるよ。ビット単位で再現性があれば、なおさらね。事前にビルドされたパッケージの利点は得られるけど、常に逃げ道があるんだ。これにより、他のすべてのパッケージマネージャーと同じように、パッチを当てたバージョンのパッケージを簡単にインストールできる。専用のビルドインフラは必要ない(もちろん、大規模なフリートにデプロイする場合は、ほとんどのマシンで再ビルドの必要を避けるためにビルドサーバーを設定した方がいいかもしれないけど)。

リライセンスイベントの後には、こういったクローンが増えることが多い。つまり、人々がプロジェクトのハードフォークを考えているってことだね。それか、念のために「スナップショット」を作ってるのかも。多くの人が真剣にフォークのメンテナンスを引き受けようとは思ってないと思うけど…。

CLAがあるプロジェクトは、よりラグプルのリスクが高い。開発者証明書を使っているプロジェクトは、同じ力の不均衡がなく、ラグプルされる可能性も低い。理由を説明する価値があると思う。私の理解では、CLAにサインすると、通常はCLAの受益者に再ライセンスの権利を与えることになる。つまり、「これはGPLプロジェクトで、私の貢献もGPLだけど、あなたが好きなように私の貢献を再ライセンスすることを許可する」ってこと。もしプロジェクトがすでに許可的なライセンスを使っているなら、正直、CLAにサインしても大きな影響はないと思う。誰でもそのコードベースを取って、プロプライエタリにすることができるからね。でも、もしコピーレフトライセンスなら、CLAにサインすることで受益者が同じルールで動かないし、貢献をプロプライエタリにできちゃう!ラグプルを避けたいなら、コピーレフトライセンスを使ってCLAにはサインしない方がいいよ。多くの人が著作権を共有してるから、Linuxをプロプライエタリにすることはできないんだ。許可的なライセンスを使うなら、ラグプルはその一部だよ。

許可的なライセンスを使うなら、ラグプルはその一部だよ。確かに。でも、CLAは必ずしもすべての権利を放棄するわけじゃないよ。

オープンソースに関しては、ラグプルなんて存在しないよ。GPLのコピーは永遠に残るからね。

私の理解では、CLAにサインすると、通常はCLAの受益者に再ライセンスする権利を与えることになる。これを明確にするために言うと、これはサインするCLAの内容による。例えば、CanonicalのCLA(CCLA)には、セクション2.3のアウトバウンドライセンスにこの条項がある。> 私たちは、コピーレフト、許可、商業的、または独自のライセンスを含む、いかなるライセンスの下でも貢献をライセンスすることができます。この権利を行使する条件として、私たちは提出日現在で使用している素材のライセンスの条件の下でも貢献をライセンスすることに同意します。つまり、彼らはあなたの貢献を元のライセンスの下でリリースすることを約束しているということ。言い換えれば、古い貢献を遡って再ライセンスしないってことだね。他のCLAではこの約束がない場合もあるから、何にサインしているのかを理解するのは一般的に良いアイデアだよ。(これはCLAだけでなく、すべての契約に当てはまるからね。)ほとんどのCLAは、貢献者が著作権を保持できるようにしている。(私の理解が正しければ、著作権の移転はCAAにのみ関係している。)だから、あなたが貢献に対して好きなようにできるオプションもあるよ。いずれにせよ、実際の問題は、プロジェクトのオーナーに対する暗黙の信頼を裏切られることだよ。あなたが彼らや他の人たちに自分の作品を寛大に提供したから、将来他の人たちの貢献に対しても同じように返してもらえると思うよね。でもCLAはそれをオープンにして、プロジェクトのオーナーの単独の管理下に置くから、ラグプルの危険があるんだ。ラグプルの後にその貢献の恩恵を受ける唯一の方法は、他の貢献者と直接協力することだね。要するにフォークすることだ。> ラグプルを避けたいなら、コピーレフトライセンスを使ってCLAにはサインしない方がいいよ。これら二つの奇妙で特にひどい組み合わせがある - AGPL + CLA。私は一般的にAGPLの支持者だけど、この組み合わせは許可ライセンス + CLAよりも悪いと思う。コピーレフトライセンスは、アプリケーションを配布した相手に対して、ソースコード(カスタム修正を含む)を要求されたら提供する必要があるんだ。AGPLでは、オンラインサービスの使用も「アプリケーションの配布」の定義に含まれるから、あなたのサービスを使う誰にでもサーバーサイドコードの修正を配布しなきゃいけない。これは良いことだと思う - なぜなら、リソースが豊富な他の誰かがあなたのサービスを改善してホストして、あなたがその改善の恩恵を受けられないってことがないからね。でもCLAがあると、プロジェクトのオーナー(おそらく会社)が未公開の改善を加えた再ライセンス版をホストできる一方で、あなたは同じことをしようとすると自分の改善を公開しなきゃいけない(AGPLのコードを使っているから)。許可ライセンス + CLAの下では同じ問題は起こらないけど、ここで特にひどいことが起こる。上記の問題は、許可ライセンスだけでCLAがないソフトウェアにも影響を及ぼす可能性がある。これがIncusとLXDに起こったことだ。LXDは当初Apacheライセンスの下で、Canonicalと協力してLinuxコンテナコミュニティのもとにあった。ある朝、Canonicalがプロジェクトの管理を決定し、LinuxコンテナコミュニティがそれをフォークしてIncusを作ることになった。その後しばらくの間、両プロジェクトは同じライセンスの下でお互いからコードを借りていた。でもその後、CanonicalがLXDをAGPLv3 + CLAの下で再ライセンスすることに決めた。これにより、ライセンスの不整合のためにIncusがLXDからコードを借りることができなくなり、Canonicalは少し変わった取り決めの下でそれを続けた。詳しくはここで読めるよ: [2] [1] https://canonical.com/legal/contributors/agreement?type=indi... [2] https://stgraber.org/2023/12/12/lxd-now-re-licensed-and-unde...

一般的にラグプルの対象になる このオープンソースの純粋主義は有害だよ。プロジェクトは持続可能でなきゃいけない。ハイパースケーラーたちはインターネット全体を吸い上げて、モバイルデバイスのカテゴリを完全に支配してる。私たちはここで小さな開発者がソースが利用可能なOSSやCLA付きのOSSについて言い争ってる。コミュニティがそんなに気にするなら、最後のオープンバージョンを取って自分たちでメンテナンスすればいいじゃん。このネガティブなエネルギーを全部持っていって、大手テック企業の分裂のために戦ってほしい。

でもGNUはどうなの?彼らのプロジェクトはCLAにサインする必要があるし、ラグプルはしないと思うけど。

これが今の会社の経営陣をちょっと混乱させてるんだよね。会社はシステムのサポート契約にかなりこだわってて、いくつかのこういうトラブルに遭遇してる。昔のOpscodeのChefとか、CentOSの撤退、VMWare、BroadcomのTanzuにあるもっと厄介なこととか。私たちはこれらの会社にお金を払ってた(VMWareを見てると)、または見積もりを探してて、これらの会社にお金を払うつもりだった。でも突然、あなたの構成管理が年間ほぼ6桁のコストになるってどういうこと?基本的なサービスが、基本的なサポート契約で年間中程度の6桁の範囲になるなんて。ちょっと待って、何なの?それに、またVMWareを見てると、結局それに頼れないってこと?私は代わりに財団を支援したり、普段使ってるOSSのメンテイナーや開発者に直接お金を払うことを勧めてるんだ。そう提案すると、みんなの反応が少し静かになってきたけど。次のVMWareにお金を払うよりは、Proxmoxやqemuの開発者を雇いたいな。

Hacker Newsで議論の続きを見る