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

QEMU: AIコードジェネレーターの使用を禁止するポリシーの定義

概要

QEMUプロジェクトは AI生成コンテンツ を含む貢献を 原則拒否 する方針。 著作権・ライセンス問題 が未解決であり、法的リスクを回避するため。 AIツールの出力を含むパッチは 受理不可、疑いがあれば却下。 API調査やデバッグ 等でのAI利用は許容、出力を含めなければ問題なし。 今後、法的状況やAI技術の進展により 方針の見直し もあり得る。

QEMUプロジェクトにおけるAI生成コンテンツ利用方針

  • QEMUプロジェクト はAI生成コンテンツを含む、または由来する貢献を 原則として受け付けない方針
  • ChatGPT、Claude、Copilot、Llama 等のAIツールによる生成物が対象
  • AI支援によるソフトウェア開発の普及により、 法的な懸念とリスク が増加
  • Large Language Model(LLM) による生成物の著作権・ライセンス状態が不明瞭
  • 貢献者には Developer's Certificate of Origin (DCO) の遵守が求められる
  • DCOに従うには、 著作権とライセンス状態の完全な理解が必要
  • 現状のAIツール出力は、 著作権・ライセンスの根拠が不明確 で法的リスクが高い
  • 学習データに 制限付きライセンスや多様なオープンソースライセンス が含まれる場合が多い
  • QEMUのライセンス要件と 互換性がない場合 も多々存在
  • 法的リスク回避のため、AI生成物を含むパッチは全面的に拒否
  • AI利用が判明・疑われる場合も貢献を却下
  • 例: GitHub Copilot、OpenAI ChatGPT、Anthropic Claude、Meta Code Llama など
  • 静的解析やAPI調査、アルゴリズム研究、デバッグ等でのAI利用は 出力が貢献物に含まれない限り許容
  • このポリシーは AI技術や法的状況の変化に応じて見直しの可能性
  • 例外申請は ケースバイケースで審査
    • ツールの出力に関する ライセンス・著作権状態の明確な証明 が必要
    • プロジェクトメンテナによる 満足のいく説明が前提

Hackerたちの意見

本当に法律的な理由なのかな?なんか、いくつかのプロジェクトはクソみたいなAIの投稿をレビューするのに疲れちゃってる気がする。

これ、オープンソースを壊しちゃうかもね。クソみたいなものをすぐに生成できるのに、それをレビューして却下するのに時間がかかるから。Androidみたいに、ソースはダウンロードできるけど、実際には外部の人が貢献できないプロジェクトが増えそう。

彼らは方針が見直し可能だって言ってるし、例外を作ることもできるみたいだね。もしそれが言い訳なら、みんなを優しく失望させるために頑張ってるってことか。

AIが中央値の投稿にどんな影響を与えるかは分からないな。人間もクソみたいなコードを書くことがあるし。もし問題が投稿が多すぎることなら、それを管理するための仕組みが必要だと思う。大量の更新を受け取るプロジェクトにはトリアージチームが必要かも。ほとんどの投稿は善意で行われてると思うけど、法的な問題の可能性を避けるためにAIを使わない人もいるだろうね。そんな問題が起こる可能性は疑わしいけど、リスクを最小限にするよりも、すべてを排除したい人もいる。哲学者としては、何かの可能性を排除したと思ってる人は、ただそれについて十分に考えてないだけだと思う。

このポリシーは簡潔でしっかりとした内容だね。アルゴリズム的に生成されたと思われるソフトウェアコードの著作権を安全に割り当てることはできないって主張してるように思う。アルゴリズム的って言葉を使うのは、「AI lol」よりも強い感じがするから。ポリシーの中で「AIコードジェネレーター」みたいな用語も使ってるけど、そっちも強いかもしれないけど、法的に役立つ用語になるとは思えないな(ほとんど「クラッパムのオムニバスの男」みたいな感じ)。最後に、かなり妥当な締めくくりがあるね。「今設定するポリシーは今日のためのもので、見直しにオープンであるべきだ。厳格で安全に始めてから、徐々に緩めるのがベストだ。」間違いなくいろいろな問題が出てくるけど、まずは法的な角度を閉じたいみたいで、著作権の話から始めるのは妥当だと思う。このプレイブックはcurlのよりずっと良さそうだね。

モンサントが種の権利をどうやって守ってるか見たことある?

可能性はあるけど、QEMUは業界にとって非常に重要なソフトウェアだよ。デスクトップのVMからクラウド/リモートインスタンス、ビルドサーバー、セキュリティサンドボックス、クロスプラットフォーム環境まで、幅広く使われてる。ちょっとした法的リスクでも業界に大きな影響を与えるかもしれない。

どこから来てるのかは分かるけど、これは間違いだと思う。AIと著作権に関する「確立された法律」があればいいのにね。判例も少ないし、気持ちを基にする法律もほとんどない。AIからの貢献を拒否する方針に加えて、AI生成コンテンツが使える場所を指摘するのもいいかも。例えば、QEMUプロジェクトの(膨大な)CIセットアップの中で、本当に保護すべき重要なコンテンツはどれくらいあるの?もっと面白いテストケースや環境が作れるかもしれないよ。「そういうものはここに貢献して、AIはこういうガードレールを使って賢く使おう」みたいな感じで。

これをやらないリスクは何?オープンソースプロジェクトのためにコードは良くなるけど、速度は遅くなる?このプロジェクトにはそのリスクが合ってると思うし、著者たちもGenAIという概念に対して特に否定的じゃないみたい。ただ「一方通行のドア」を通ってるだけ。

コンピュータの世界では、コードを盗用しちゃいけないっていう確立された慣習があるんだ。小さなスニペットでもね。たとえ著作権法がそんな小さなものを「フェアユース」と考えたとしても。

これは、何十年もかかるような他の法的問題とは違うよ。今、裁判所で進行中のケースがいくつもあって、数年以内に著作権に関するいくつかの側面が明らかになるはず。QEMUはAIの助けなしでこの22年間大きな進展を遂げてきたから、あと数年待つくらい問題ないよ。

法的状況がはっきりするまで待つのが一番シンプルな解決策だね。QEMUは(ほとんど)GPL 2.0ライセンスだから、(ほとんどの)コードの寄付はGPL 2.0に適合する必要があるんだ。仮に、非GPL互換のコードから派生したり、記憶したり、コピーしたりしたgen AIコードを含むパッチによって追加されたコード寄付があったとしよう。そうすると、仮に法的なケースがあって、gen AIのFOSSコードは元の派生した/記憶した/コピーしたコードのライセンスを再適用しなければならないという前例ができたら、QEMUのメンテナは互換性のないコード寄付をすべて巻き戻さなきゃいけなくなるだろうね。しばらくすると、そのコード寄付が下流の呼び出し元に影響を与えて、そっちも書き直さなきゃいけなくなるかもしれない(CIコードでも)。最初に「明確に『再利用禁止:AI』とラベル付けされたCIコードだけ」と言うのは可能かもしれないけど、仮にそうなったらメンテナはそのCIコードの部分をすべて見直して書き直さなきゃいけない。さらに、レビューやマージプロセスにも余分な作業が増えるし、関わる全員にとって「今はいいや」と言った方が楽だよ。---- 注意:私は法律の専門家ではないし、ライセンスは私の専門分野ではないけど、いつかはそうなりたいな。

ここでの言いたいことを読み取る必要があると思う。あなたがやることはすべて法的リスクだけど、この特定のリスクは世界の大企業にとっては受け入れられるようだ。QEMUは特別じゃないから、もし彼らがこの立場を取っているなら、他の理由でLLM生成コードを扱いたくないからだろうし、法的リスクを口実にしてメールリストでの無限の議論を避けたいだけなんだ。企業環境でも同じことをやってる。「これが嫌だ」→「弁護士に聞いてみる」→「ああ、法的にリスクがあるからできないよ」。

面白いね。LLVMの方針よりも厳しいラインだね。https://llvm.org/docs/DeveloperPolicy.html#ai-generated-cont... こういうことについては、ただの老害みたいに叫んでる気がする。著者が理解してないコードをレビューしたくないし、どちらも理解してないコードをマージしたくない。

作者が理解していないコードをレビューしたくない。これ、本当にイライラする。人に「何かやってくれ」って頼まれるんだけど、AIにタスクのやり方を指示させて、その指示を送ってくるんだよね。「ねえ、Xやってくれない?」って言ってくれればいいのに。失礼だよ。

作者が理解していないコードをレビューしたくない。 作者は私と私のシリコンの相棒だよ。私たちはこのことを理解してる。

私は今、私が管理しているすべてのオープンソースコードにDCOを追加し始めていて、CONTRIBUTING.mdにこんな文を追加するつもりだ: --- LLM生成の貢献ポリシー Colorは複雑な数学と微妙な決定が詰まったライブラリです(その中には間違っている可能性のあるものもある)。提出者が問題やプルリクエストをよく理解していることが非常に重要で、特にプルリクエストの場合、開発者は各プルリクエストの開発者証明書に署名できる必要があります(LICENCEを参照)。プルリクエストを書く際にLLMの支援を受けた場合、そのことはコミットメッセージとプルリクエストに記載しなければなりません。そのような宣言なしにLLMの支援の証拠がある場合、プルリクエストは却下されます。未レビューのLLM出力を使用した貢献(バグ、機能リクエスト、プルリクエスト)は拒否されます。 --- これをSECURITY.mdのエントリーにも追加しています: --- LLM生成のセキュリティレポートポリシー LLMエージェントによって生成されたセキュリティレポートは一切受け付けません。 --- ほとんど私一人なので、バランスを取ろうとしているけど、私の好みはLLM生成の貢献には反対です。

コーディングタスクでLLMを使うときは、「このYAMLを構造体に変換して、繰り返しのパターンを再利用する変数に抽出してくれ」って感じだよね。こういう変換は決定論的なツールでもできるけど、AIなら30秒でいい仕事してくれるし、新しい出力が元の入力と同じかどうかをテストするのも簡単。俺の高レベルな仕事はAIに任せるのは絶対無理だけど、AIは面倒なことや低リスクの雑務を手伝ってくれる。先日、Claude Codeにデータベースのベンチマーク結果のCSV用にグラフや外れ値分析を組み合わせてもらったんだけど、概念的には簡単でも、ライブラリを理解して全部接続するのに結構時間がかかるんだよね。CSV処理の専門家じゃないと大変だし。

個人プロジェクトではGitHub Copilotを使ってるよ。でも、 fancy autocomplete以上の使い方は拒否してる。もし提案されたコードが自分が打とうとしてたものに近いなら、受け入れるけどね。これで自分のコードを理解してることが保証されるし、幻覚から生じるバグもないはずだし、もし自分が打とうとしてたものなら著作権の問題もないはず。こうやってCopilotを使うと、作業が早く進むんだ。タイピングが遅いからじゃなくて、タイピング中に飽きたり気が散ったりする癖があるから。Copilotのおかげで次の思考やデバッグの部分に早く進める。誰も自分のコードを理解したくないなんて思わないっていうのが、特にPRを出すつもりならなおさらだよね。そういう人たちの存在が、オープンソースプロジェクトに提出する際にLLMをautocompleteとして使えなくするポリシーを生んでるのがちょっとイライラする。Copilotを他の方法でも使おうとしたこともあるけど、雑なリファクタリングタスクをやってくれるといいなと思ってる。でも、実験するたびにすぐに失敗するか、手動でやるよりも遅くなっちゃうんだ。コードを再生成する必要があるから、編集するだけじゃ済まないし。[1] それに、バグを打ってる最中にCopilotがそのバグのままオートコンプリートしてくれるのが面白い。変数名をタイプミスしてるのが明らかでもね。

あなたはまさに私が一緒に働きたいと思っているタイプの人だ。自己反省ができて、怠惰な行動に反対している。

自由ソフトウェアプロジェクトに関してはこれが面白いと思う。確かに、日常の仕事として貢献している人がたくさんいるけど、楽しみのためにプロジェクトに貢献したり管理したりする場合、AIの雑な部分を片付けることが楽しみを損なう要因になることは間違いない。そういう時は「お引き取り願いたい」って言うのが当然だよ。

これは主にRedHatが署名してるんだけど、彼らは結構真面目で企業的だよね。ユーザーがAI出力の著作権を持っているかどうかよりも、AIが他のプロジェクトに属するコードをトレーニングセットから吐き出すリスクを心配してるんじゃないかな。ほとんどのハイパーバイザーはクローズドソースだし、訴訟を起こす企業によって開発されているものもあるからね。

言語モデルが微妙な論理エラーを引き起こす可能性が高いのが心配だな。特にハイパーバイザーのセキュリティ境界を侵害するようなエラー。そういうモデルに頼ってコードを書かせるユーザーは、そのエラーを見つける準備が全然できてないと思う。

でも、AIが他のプロジェクトに属するトレーニングセットからコードを吐き出すリスクがあるんだ。これがAIが吐き出すすべてだよ。

オープンソースや自由ソフトウェアは、AI生成コードが侵害またはパブリックドメインと見なされる未来に特に脆弱だよね。前者の場合、AIによる編集と人間による編集を分けるのは法的手続きで何年もかかるかもしれないし、プロジェクトには著作権訴訟を戦う資金がないからね。具体的には、AI生成のコードがその後修正されたり、他のコードに組み込まれたりすると、その後の人間の編集が公正使用外の派生作品かどうかの問題が出てくる。後者の場合、ライセンスの制限がコードベースの一部に適用されなくなって、派生コードから似たような問題が生じる。たとえば、98%がOSS/FSライセンスのプロジェクトは、ライセンス条項を悪用する企業に対して、突然、取り締まりの力がかなり減ることになる。侵害者が確実に人間が生成したライセンスコードを使っていることを証明しなければならなくなるからね。プロプライエタリソフトウェアは、どちらの場合でも軽微な影響を受けるだけだし、推測的な著作権所有者がバイナリを分解して、AI生成コードが侵害していると主張するのは難しい。しかも、すでに多くのプロプライエタリソフトウェアにはパブリックドメインのコードが含まれているし。

もしソフトウェアが「このコードで好きにやってくれ、俺たちは気にしない」という意味で本当にオープンソースなら、AIから恐れるものは何もないよ。

またはパブリックドメイン https://news.artnet.com/art-world/ai-art-us-copyright-office... https://en.wikipedia.org/wiki/Monkey_selfie_copyright_disput... この船はもう出て行ったと思うよ。

経験豊富な開発者が知識のない「開発者」からのランダムなAI貢献を望まない理由はわかるよ。どんな状況でも、人間がAIコードを行ごとにレビューするとなると、それだけで何年もかかるし、法的な問題を無視してもね。#1 初期のモデルを超えてAI生成であることを証明する方法はないよ。#2 何らかの形で100%人間が開発したソフトウェアプロジェクトは、AI支援やAIが書いたプロジェクトと競争できない。唯一の議論の余地があるとしたら、人間が半導体や電気を生産できなくなるような終末的なシナリオだけだね。#3 もしプロジェクトがAIの貢献をうまく排除できたとしても(反AIの熱心なグループに貢献を制限する以外にどうするかは不明だけど)、それはクローンされて、クローンがそれを追い越すだけだよ。ライセンスがフォークを許可していればフォークも可能だけど、クローンして法的な問題を排除する方が好まれるかもしれない。オープンソースプロジェクトにはまだ道があるよ。違う形になるだろうけど、未来にはもっともっとソフトウェアが増えるし、全部がゴミってわけじゃない(99%はそうかもしれないけど)。

IDEでLLMをスーパオートコンプリートとして使うのと、高レベルのガイドラインを与えて実質的なコードを生成させるのとの間に何らかの区別ができればいいなと思ってる。確かにグレーゾーンだけど、もし貢献をしたら、Copilotの労力を減らす機能を使いたいし、オープンソースコードからアルゴリズムをコピーする危険がない状態で使いたい。例えば、今日は一連のケースステートメントを生成したら、Copilotがパターンを検出して、すごくタイピングが楽になったよ。

あと、AIグラスが自分の心と体の延長になって、画面に表示されているものを含めて、やることすべてに対してヒントやガイダンスをくれるようになってほしい。これらのグラスは、自分の一部になると思ってる。今のダサいメガネが自分の一部で、視力を良くしてくれるように、スマートグラスは視力だけでなく思考も良くしてくれる。自分の脳も多くのプロプライエタリコードで訓練されているし、AIモデルに関する著作権の問題は無意味な西洋のNIMBY思考で、法的な「もしも」を追求し続けると西洋文明の崩壊につながると思う。

あ、俺のブログ「AIを使うことでお前をジャッジするよ」ってタイトルの記事で予測したことが現実になったわ、笑。基本的にオープンソースは、これまで隠れた能力の指標にかなり依存して、貢献の質を判断してきたと思う。LLMは、その全ての概念をひっくり返し、能力の指標を持ってるコードを提示するけど、実際の経験が伴ってない。経験豊富な人にはすごく衝撃的な体験だよ。今後、大きなプロジェクトに進出するためには、実際のPRとは独立したバーチャルまたは対面のミーティングや他の社会的証明がもっと重要になると思う。

最近、同僚がLLMを使ってコードレビューを生成してるのを見かけるようになった。彼らは自分のスキルレベルを超えたコメントを提出してくるから、まるで正しいかのように思わせるんだ。ほんとに熟練した開発者じゃないとこんな提案はしないからね。結局、そういう提案が間違ってることを証明するのにものすごく時間を無駄にしちゃう。提案を出した人がかけた時間よりもずっと多くの時間を使ってるんだよ。

ブログのリンク送ってください。

AI生成部分のサイズや範囲について、もう少し区別してほしいな。動画の著作権法みたいに、著作権のある映画から5秒のクリップを使うのはフェアユースとされて、あまり問題視されないでしょ。QEMUみたいなプロジェクトでは、今のAIモデルが本当に驚くべきことをできるんだよ。命令セットを説明したPDFを渡すと、特定の命令をエミュレートするためのラッパークラスを生成してくれる。さらに、こんなクラスとデータシートから数段落を渡すと、そのクラスがCPUベンダーの説明通りに動くかをチェックするユニットテストを出力してくれる。手作業でやるより、テストカバレッジを0%から100%にするのが何桁も早いんだ。特定のメモリ仮想化トリックのサポートを追加したいときに、100の命令クラスを簡単だけど100%正式なルールじゃない基準で更新する必要がある場合、人間の開発者は頭を抱えるけど、LLMならコーヒーを入れてる間に終わっちゃうよ。

QEMUは「石器時代」に留まる選択をすることもできるよね。AIのサポートを好む貢献者は、他のところで時間を使えばいいし。実際、いくつかの(多くの基盤的な)OSSプロジェクトは、完全な法的判例が確立されるまでAIを拒否するのが賢明かもしれない。もし彼らが貢献を受け入れ始めて、後で裁判所がこれが第三者の著作権に違反していると判断したら(その結果がどんなに衝撃的でも)、そのプロジェクトは危険にさらされることになる。彼らは訴訟を避けるための資金やリソースもないし、AI導入前の状態に完全に戻すこともできないからね。

誰かがAIの助けを借りてQEMUを自分で書き直せるって言ってるみたいだね。それは面白いかも。

今日見た中で一番クールなことだわ。