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

Linuxカーネルへの貢献時のAI支援

概要

Linuxカーネル開発にAIコーディングアシスタントを利用する際のガイドラインを解説。 標準的な開発プロセスやライセンス遵守の重要性を強調。 Signed-off-byタグに関する法的責任の所在を明確化。 AIによる貢献には適切な帰属表示が必要。 具体的な記述例と推奨される記載方法を紹介。

AIコーディングアシスタント利用ガイドライン

  • Linuxカーネル開発 にAIツールを利用する場合、 標準的な開発プロセス の遵守が必須

    • Documentation/process/development-process.rst
    • Documentation/process/coding-style.rst
    • Documentation/process/submitting-patches.rst
  • ライセンスと法的要件 の遵守

    • すべてのコードは GPL-2.0-only 互換であること
    • SPDXライセンス識別子 の適切な使用
    • 詳細はDocumentation/process/license-rules.rstを参照
  • Signed-off-byとDeveloper Certificate of Origin (DCO)

    • AIエージェントはSigned-off-byタグを追加不可
    • DCOを法的に認証できるのは 人間のみ
    • 提出者(人間)が行うべきこと
      • すべての AI生成コードのレビュー
      • ライセンス要件の遵守 確認
      • 自身の Signed-off-byタグ 追加
      • 貢献内容への 全責任の負担

AIアシストによる貢献の帰属表記

  • AIツールによる貢献 には、進化するAIの役割を追跡するため 適切な帰属表示 が必要

    • Assisted-byタグの使用を推奨
  • Assisted-byタグの記述フォーマット

    • Assisted-by: AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]

      • AGENT_NAME :AIツールやフレームワークの名称
      • MODEL_VERSION :利用したモデルのバージョン
      • [TOOL1] [TOOL2] :coccinelle、sparse、smatch、clang-tidyなどの 専門解析ツール (省略可)
    • 基本的な開発ツール (git, gcc, make, エディタ等)は記載不要

  • 記述例

    • Assisted-by: Claude:claude-3-opus coccinelle sparse

まとめ

  • AIアシスタント利用時 は、標準プロセス・ライセンス遵守・法的責任・帰属表示を厳守
  • Signed-off-by は必ず人間が付与し、AI生成コードの責任を持つこと
  • Assisted-byタグ でAIの関与を明示し、開発プロセスの透明性を確保

Hackerたちの意見

AIエージェントが生成したコードに対して責任を持てるのは人間だけっていう常識的なルールがあって嬉しい。

ほんと、いくつかのプロジェクトがAIを全面禁止するなんて、信じられないよね。結局は人間の責任なのに。

基本的には、AIを使ってもいいけど、自分のコミットに対しては完全に責任を持たなきゃいけないし、コードはライセンスを満たさなきゃダメってこと。これって…普通に考えてもいい感じじゃない?善意で行動するほとんどの人が賛成できることだと思う。

でも、AIの出力がGNU一般公衆ライセンスの下にない場合、どうしてLinux開発者がそれをコードベースに追加したからって、そうなるの?

でも、AIはただの道具に過ぎないのに、なんでそれに責任を持たせる必要があるの?

これが非常に理にかなっていて退屈だというのには同意するよ。でも、そもそもこれを言わなきゃいけないのが狂ってる。AIによるコーディングには反対じゃないけど、コードの中身が理解できないのに「貢献」してる人が多すぎる。大きなオープンソースプロジェクトに貢献したって履歴書に書きたいだけなんだよね。メンテナーがそれを指摘すると、使ってるAIコーディングツールのせいにする。まるで自分の名前でPRを出してないかのように。AI生成の貢献に関しては、オープンソースのメンテナーが少し懐疑的になるのも無理はないよ。

これは「Linus vs Linus」のインタビューで話されてるよ、「Linus Torvaldsと一緒に完璧なLinux PCを作る」ってやつ。 [0] [0] https://youtu.be/mfv0V1SxbNA?si=CBnnesr4nCJLuB9D&t=2003

すべてのコードはGPL-2.0のみと互換性がある必要があります AIが多様なライセンスや著作権者の許可なしにクローズドソースの素材で訓練されている世界で、どうやってそれが実現できるのか保証できるの?今、いくつかのAIに確認したけど。

裁判の結果を待つしかないかな。著作権の問題についてどう判断されるかを予測するのは、リーナス・トーバルズの仕事じゃないしね。おそらく、AIが実行時に互換性のないライセンスのコードベースを参照するのはリスクが高いと思う。

あなたが責任を持つってこと。つまり、AIが失敗したらあなたが罰せられるってこと。愚かなコンピュータに責任を押し付けるのはダメだよ。それが嫌なら、AIを使わない方がいい。

すべてのコードはGPL-2.0のみと互換性がある必要があります GPL-2.0と他のライセンスが同時に互換性がある可能性を指摘するのは、ちょっと細かすぎるかな?それともこれはよく理解されている用語?

GPL-2.0-onlyってライセンスの名前だよ。一言で言うと。GPL-2.0-or-laterの代わりになるやつ。

ちょっと堅苦しく考えすぎじゃない? :) https://spdx.org/licenses/GPL-2.0-only.html これは特定のGPLライセンスだよ(GPL 2.0-laterとは違う)。

これじゃLinuxが著作権侵害の責任から逃れられないよ。小売店が「供給者がヘンプからTHCの痕跡を全部取り除く責任がある」って言ってるのと同じだよ。そんなの無理な要求だって分かってるのに。予測できる結果だし、こんな風に自分で責任を免除することはできないよ。

かなりの数の企業がAIで書かれたコードを使ったり公開したりしてるけど、彼らも全員責任があるの?

これはLinuxが侵害コードに対する責任から免れることには何の役にも立たない。AI支援のコードと何も変わらないよ。簡単にプロプライエタリコードをコピー&ペーストして、自分の名前でそれが違うって言ってGPLに従ってるって提出できる。結局のところ、嘘をつく人間に帰着するだけなんだよね。

少なくとも、数年後には全部監査して置き換えるのが簡単になるね。

サインオフ ... > 人間の提出者は以下の責任を負う: > すべてのAI生成コードのレビュー > ライセンス要件の遵守を確保 > DCOを証明するために自分のサインオフタグを追加 > 貢献に対する全責任を負う > 表示: ... 貢献には以下の形式で「アシストされた」タグを含めるべき。責任は本来あるべきところに割り当てる。LinuxとGitの創始者トーバルズからはこれ以上のことを期待してたよ。デマゴーグもなし、バカなこともなし。著作権の影響があるから、これが政策として公表される前に弁護士にレビューされたことは間違いないと思う。これがトレンドを作って、AI支援の有用性を理解している開発者たちに明確な指針を提供することを願ってる。

すべての貢献はカーネルのライセンス要件に従わなければならない: でも、現実的にはそれは達成できないと思う。モデル自体がコードを内省して、ライセンス違反の可能性を検出できるなら別だけど。この仕組みで著作権違反に引っかかったら、明らかな問題を無視したとして責められるのが怖いよね。

過去に、コンプライアンスの世界で見たことがあるけど、企業や政府が何かをやりたい時やミスをした時、指定された人がスケープゴートになるだけなんだよね。じゃあ、何か問題が起きた時に、弁護士や企業がスケープゴートとして使う人たちを持っていることを防ぐものは何?