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

Ollamaが llama.cpp のライセンスを1年以上侵害している

概要

Ollamaはllama.cppなどのMITライセンスプロジェクトを静的リンクで利用。 MITライセンスは著作権表示の配布を義務付け。 現状、Ollamaのインストールフォルダに著作権表示が存在しない。 これはライセンス違反に該当する可能性。 バイナリアーティファクト内での著作権表示の必要性が指摘されている。

OllamaのMITライセンス遵守問題

  • Ollamaは llama.cpp などの外部プロジェクトを 静的リンク で使用。
  • MITライセンス は、 ソースコードおよびバイナリ配布時 に著作権表示の添付を義務化。
  • LinuxやWindowsのOllamaインストールフォルダで Georgi Gerganov を検索しても著作権表示が見当たらない事象。
  • これにより、 MITライセンス違反 の懸念が発生。
  • 一部コミュニティでは、READMEなどへの記載も推奨意見があるが、MITライセンス自体は明記を必須としていない。

MITライセンスの要件

  • ソースコードまたはバイナリ配布時に 著作権表示とライセンス文 の添付が必須。
  • 静的リンクの場合でも バイナリ配布物内 での表示が必要。
  • 著作権者名(例: Georgi Gerganov)の表示義務。

Ollamaの現状

  • Windows: AppData/Local/Programs/Ollama 配下で著作権表示が未確認。
  • Linux: /usr/local/bin/ollama などでも著作権表示が未確認。
  • grepコマンドによる確認手順で 該当表示なし

期待される対応

  • バイナリアーティファクト内 への著作権表示の追加。
  • READMEやドキュメントでの 依存プロジェクトの明記 (推奨)。
  • 今後のバージョンでの ライセンス順守体制の強化

まとめ

  • Ollamaは MITライセンス遵守 のため、著作権表示の明示が必要。
  • 利用者や開発者は ライセンス違反リスク に注意。
  • 適切な対応による 信頼性向上 が期待される。

Hackerたちの意見

この問題が有効だとは思えないな。 https://github.com/ollama/ollama/blob/main/llama/llama.cpp/L... には「上記の著作権通知とこの許可通知は、ソフトウェアのすべてのコピーまたは重要な部分に含めるものとする。」って書いてある。問題を提出した人は「MITライセンスの条件は、著作権通知をソースとバイナリの両方で配布することを要求している。」って言ってるけど、a) それはライセンスの文言には見当たらないし、b) 上流がバイナリに通知を含めるように手配した証拠も見当たらないから、下流にそれを期待するのは合理的じゃないと思うし、c) ディストリビューションの世界(Debianとか)では、ライセンス遵守に気を使っているけど、著作権通知をバイナリに含めるために上流をパッチするなんてことは普通じゃない。これが我々のエコシステムでは許容されていることなんだ。もしかしたら見落としがあるかもしれないけど、リンクされた問題はここで何か受け入れがたいことが起きているとは言えないよ。

もし有効じゃないなら、なんでこのチケットは異議を唱えられなかったり、閉じられなかったの?

バイナリのコンパイルされたコードのコピーがソフトウェアの重要な部分のコピーじゃないって、裁判で成功裏に主張することはできないよ。修正は非常に簡単だし、これはオープンな問題であるべきじゃない。

残りのことには触れないけど、> b) 上流がバイナリに通知を含めるように手配した証拠も見当たらないから、下流にそれを期待するのは合理的じゃない。 下流は遵守していないよ。上流がその遵守を難しくしているからって、下流が侵害している事実には関係ないからね。

a) 正解。b) 関係ない。ライセンスは、上流が何をするかしないかに関わらず、言ってることはそのままだよ。誰かがそのコードを使いたいなら、ライセンスの要件を守るべきだ。READMEはバイナリに含まれることが多いから、ライセンス情報を含めるのに良い場所だね。

バイナリ配布のためのライセンスと著作権情報を抽出する必要性は、オープンソースライセンスのコンプライアンスを扱う専門家や弁護士の間で普遍的に受け入れられてるよ。それに関連したツールの産業もあって(Fossid、Fossa、BlackDuck、Snyk)、オープンソースプロジェクト(FOSSology、scancode、oss-review-toolkit)もあるんだ。Debianについて言えば、彼らはパッケージ内に著作権ファイルを持ってて、Debian開発者が手動でキュレーションしてるから、すべてのライセンス文や著作権表示が含まれてるはずだよ。

ディストリビューションの世界(Debianなど)では、ライセンスのコンプライアンスに非常に気を使ってるから、バイナリに著作権表示を含めるためにアップストリームをパッチすることはないよ。Debianでは、llama.cppのバイナリパッケージをインストールすると、/usr/share/doc/llama.cpp/copyrightにllama.cppの著作権表示があるよ。

比較のために https://github.com/containers/ramalama/tree/main#credit-wher... を見てみて。Ollamaは本当に感謝の表現を改善して、ライセンスの遵守をもっと徹底的にチェックすべきだよ。

それにしても、ここで名前が挙がっている個人や「ggmlの著者」(llama.cpp/LICENSEで著作権者として記載されている)については言及されていないね。この「ハイタッチ」の感謝はライセンス遵守にはなってないよ。

彼らのアプローチにはずっと疑問を感じてるよ。自己負担のネガティブPRみたいだし。Llamaを基にするのは全く問題ないし、使いやすさに価値を加えてるんだから。Llamaチームの貢献を適切に目立つように、はっきりした言葉で感謝して、これで終わりにすればいいのに。

全然不思議じゃないよ。ウェブサイトは基本的に真っ白なキャンバスだし、連絡先情報もない。問題を無視するのは「捕まえられるもんなら捕まえてみろ」って言ってるようなもんだし、それにオープンソースの訴訟はあまり効果がないから、会社は明らかに何の結果も期待してないんだろうね。

ollamaプロジェクトもllama.cppプロジェクトも同じMITライセンスだけど、これで十分じゃないの? llama.cpp: https://github.com/ggml-org/llama.cpp/blob/master/LICENSE ollama.cpp: https://github.com/ollama/ollama/blob/main/LICENSE

問題になっている条項はこれだ: > 上記の著作権表示とこの許可表示は、ソフトウェアのすべてのコピーまたは重要な部分に含めるものとする。著作権表示は、コードの著作権者を示す部分だよ。MITのコードは、MIT部分を適切にクレジットさえすれば、他のライセンスと一緒に使えるんだ。ただ、これはほとんど誰も非ソース配布で守ってないし、誰も文句を言わないから、今回これが特に取り上げられてるのは、Ollamaがllama.cppに対して公にクレジットを与えてないことに多くの人が不満を持ってるからだと思う。普通に礼儀正しくクレジットを与えていれば、技術的にライセンスが特定のクレジットを要求してることに誰も気づかなかったんじゃないかな。

同じライセンスだけど、著作権表示が違うから、十分じゃないね。

いや、これは問題の本質を完全に見失ってるよ。著作権者の情報が欠けてるのが問題で、ライセンスの残りはその事実に比べればほぼ二次的なものだよ。

今日これを見つけたんだけど、「GGMLチームに感謝。Ollamaの推論を支えるテンソルライブラリのおかげで、Goから直接GGMLにアクセスできるようになり、カスタム推論グラフを設計したり、Ollamaでは以前は利用できなかった難しいモデルアーキテクチャに取り組むためのポータブルな方法が得られた。」 出典: https://ollama.com/blog/multimodal-models

リンクしてくれた記事ありがとう!手書きのメモを認識するためのローカルビジョンモデルを探してたんだけど、このアーティクルがOllamaでのやり方についていいTLDRを提供してくれたよ。OllamaはTLDRを改善して、llama.cppへのクレジットをREADMEにもっと追加できると思う。こんなに長い間、ollamaのメンテナーから返事がないのは理解できないな。

MITライセンスの条件では、著作権表示をソースとバイナリの両方の形式で配布する必要がある。 いや、MITはそんなこと要求してないよ。このライセンスにはこう書いてある: > 上記の著作権表示とこの許可表示は、ソフトウェアのすべてのコピーまたは重要な部分に含めるものとする。この文の正確な意味は今まで挑戦されたことも、裁定されたこともない。ollamaのREADMEにはllama.cppのプロジェクトページへのリンクがあるから(ライセンスも含まれてるし)、要件は満たされてると思うよ。

「ページへのリンクを含む」というのは「含める」とは違うよ。要件は満たされてないと思う。

「上記の著作権表示」は、llama.cppのLICENSEのこの行[0]を指してるよ:「Copyright (c) 2023-2024 The ggml authors」。ollamaはこれを含めてないね。[0]: https://github.com/ggml-org/llama.cpp/blob/master/LICENSE#L3...

こういう場合に明確なクレジットを求めるのは妥当だと思うけど、MITライセンスが意図的に緩やかであることも忘れちゃいけないね。コードを簡単に共有できるように設計されてるんだから。Ollamaが本当にオープンソースコミュニティの一員になりたいなら、少しの透明性と認識があれば、悪い血を避けられると思うよ。

MITライセンスは、ライセンスを守れば許可されるよ。コードをコピーしてライセンスや著作権を省くのはダメだよ、たとえ多くの人がそれを無視したいと思ってもね。

これは許可されてるけど、だからといって人々の仕事に対してクレジットを与えないことを意味するわけじゃないよ。

オラマが本当にオープンソースコミュニティの一員になろうとしていないっていうのが、みんなの共通認識になってきてるみたいだね。

ちなみに、llama.cppはollamaからモデルをリンクして取得してるよ(https://github.com/ggml-org/llama.cpp/blob/master/tools/run/...)。この問題は、誰かが他の誰かのために文句を言ってる典型的なケースに見えるね。プロジェクト間にはかなりの共生関係があるのに、「出所の認識」がないってことを暗示してるから。

うん、そうでもない。目立つプロジェクトがルールを守ることを期待しないのは、誰もルールを守らなくなる可能性が高くなるから問題なんだよ。壊れた窓理論ってやつ。

そうだね、llama.cppはそのファイルによると、いろんなソースからモデルを取得できるみたいだね。Hugging Face、ModelScope、Ollama、HTTPやローカルのソースなど、どこでもサポートしてるってことだ。だから、探してるLLMモデルが見つかる可能性が高いソースには対応してるって言ってもいいんじゃないかな。ModelScopeとllama.cppの間に「共生」があるとは言えないと思うけど、llama.cppを使ってそこからモデルをダウンロードできるからってだけで。LM StudioとHugging Faceの間に共生があるとは言わないのと同じだし、もっと面白い例を挙げるとYouTubeのyoutube-dl/yt-dlpみたいなもんだね。

参考までに言うと、あんまり価値はないよ。それは全く別の話だね。君が言ってるのは、ウェブからファイルをダウンロードすることに等しい。Ollamaがllama.cppのコードをライセンス条件に従わずに使うのは違法だよ。

Ollamaがllama.cppへの依存を軽視していることは、地元のLLMコミュニティではずっと知られていたことだよ。「共生」と表現するのは、個人的には非常に誤解を招くと思う。

へえ、ほんとに人々はその形でMITに従ってるのかな。githubからダウンロードしたバイナリに、third_party_licensesやdependency_licensesフォルダがあって、リンクされてるライブラリのライセンスファイルが全部入ってた記憶はないな… みんな、githubやsourceforgeからバイナリリリースをダウンロードした後にthird_party_licensesフォルダがあったのを覚えてる?これがチェックされたら、多くの人気ツールはコンプライアンス違反になると思うんだけど…

確かに珍しくはないけど、コンプライアンスを気にする人たちの中では、ほとんどの人がこの方法を選ぶと、情報をバイナリに埋め込むだけで、追加のファイルを作らないんじゃないかな。これが注目される理由は、誰かが1年前にチェックしたけど、修正が一度もされなかったからだと思う。

過去20年間に働いた会社では、どの会社でも、公共のリリースにそのようなファイルを含めることは標準的な法的チェックリストの一部だったよ。通常はフォルダではなく、すべての言及がまとめられた単一のファイルになってるね。https://github.com/search?q=THIRD_PARTY_LICENSES&type=code

訴えられたら問題だけど、訴えないから関係ないよ。企業は無視しても合法なオープンソースライセンスを学んできたからね。依存関係のライセンスを無視する意図を公然と宣言した別のプロジェクトはSimpleX Chatで、彼らはうまくやってるみたいだね。