GitHub Copilotとライセンス問題

GitHubのCopilotでコードのライセンスが適切にハンドリングされていないと複数のユーザーからレポートされています。

GitHub Copilotとライセンス問題

GitHub CopilotとはAIによりユーザーが入力した自然言語を元に、コードを提案してくれるサービスです。

しかし、Copilotが提案を行う学習元データは一般公開されているGitHub上のコードとなっているため、その元のコードのライセンスの種類によって問題が発生します。

GitHub Copilotとは
  • プログラマーが入力した自然言語からAIによるコードの提案を行うサービス
  • 2021/07/07時点ではテクニカルプレビューとして限定されたユーザーのみ利用可能
  • AIの学習にはGitHubに一般公開されているコードが利用されている
  • VScodeの拡張機能

GPLライセンス

CopilotではGitHub上に一般公開されているコードが学習元データとして利用されています。

そこで、Nora TindallさんがGitHubに対して質問送った所、回答からGitHub Copilotの学習元となるデータセットはライセンスを判断せず、全ての一般公開されているコードを利用している事が判明しています。

NoraさんはコードをGitHubに公開しており、ほとんどのコードはGPLライセンスとしています。

このGPLライセンスが適用されたコードを学習元とした、Copilotは低い確率ですが部分的に全く同じコード、もしくは同一と判断できるコードを提案する場合があります。

GPLとは
  • ソフトウェアライセンスのひとつ
  • GNU General Public Licenseの略
  • コピーレフトライセンス
  • 利用は自己責任
  • 著作権表記の削除は禁止
  • 複製・改変・再配布などは自由
  • しかし変更したソフトウェアもGPLとする必要がある

CopilotのFAQでは Copilot が生成するコードのおよそ0.1%が元のコードと同一の状態となるようです。

Frequently asked questions - https://copilot.github.com/

もし、その0.1%にGPLライセンスのコードと同一のものが含まれている場合、Copilotを利用したユーザーには適切な著作権表記やそのプロジェクト自体をGPLにするなどの義務が発生します。

0.1%されど0.1%
ユーザーの中にはたったの0.1%の確率で出てくるからなんなんだ?と発言されている方もいらっしゃいます。

これはCopilotを利用することで、ライセンス違反となる可能性があるということになり、プログラム作成時に気が付かなかっただけでもし将来的に発覚してしまった場合、ビジネスに大きな打撃を与える可能性があります。

しかし利用者にはライセンスがわからない
Copilotが提案したコードの元となったコードのライセンスは利用者には通知・表示がなされないため、適切な著作権表記等をユーザーが行うことが出来ません。
過去にはゲームソフトでGPL違反が発覚した
2007年にPS2用ソフト「ICO」ではGPL違反が発覚しましたが、SCEは結局ソースコードを公開しないままソフト自体をその後廃盤としました。権利者が訴える可能性は低いものの、訴えを起こした場合は何らかの影響が発生したと思われます。

一部のユーザーは”普段は生成されないよ”では納得できないとしており、GitHubのような会社が提供するサービスとしてコードのライセンスを無視しているのは非常に問題があるように思います。

MITライセンス

GPLライセンスに限らず、MITライセンスを採用しているプロジェクトのコードでも近い問題が発生します。

MITライセンスとは
  • マサチューセッツ工科大学で利用されていたライセンス
  • GPL程のコピーレフトを強制しない
  • 複製・改変などは自由に行って良い
  • 著作権表示を重要な部分に記載する必要がある

MITライセンスでも著作権表記が必須と定められているため、0.1%の確率で同じコードが生成されてしまった場合はライセンス文をプログラム中に埋め込む必要があります。

MEMO
MITライセンスの場合、コード自体を公開している場合はプログラムコード中に著作権表記を記載するだけで良い事が多いですが、バイナリ(実行形式)を配布する場合はライセンス文を添付する必要があります。

他にも独自ライセンスや、著作権表記が必要となるライセンスは多数存在するため、全く同じコードが提案されてしまう可能性がある以上、学習データセットを安全なものにのみ変更する、Copilotの利用ユーザーにライセンスを適切に表示する等の対応が必要となるように思います。

まとめ

ライセンスが考慮されていない
問い合わせの回答を見る限りではライセンスを無視した状況となっています。ライセンスは利用に際してエンジニアが最低限守るべきものであり、特にソースコードをホストするGitHubが提供しているサービスでライセンスが軽視されている状況は非常に残念です。
0.1%は元のコードと同じ
学習元と全く同じ出力がなされる可能性は0.1%と非常に低いものの、今後利用者が増える事でライセンス問題が発生する可能性は高いように思います。このまま学習データにGPL/MITライセンスされたコードを含めるのであればCopilot利用ユーザーに表示すべきです。
利用ユーザーに責任が問われる
Copilotはあくまでもプログラマーのサポートであり、利用したユーザーが判断を行った事になります。つまり全く知らない間にいくつものライセンス違反を行っていてもおかしくない状態です。
正式リリースに期待
現在はテクニカルプレビュー版ということもあり、このような問題は後回しにされている可能性が十分にあるため、正式リリースされた際にはライセンス問題がどのように解決されているのか注視する必要がありそうです。

MITライセンスは現時点で最もGitHubで利用されているライセンスなので、なんとか遵守できる状態で正式リリースできると良いですね。


Copilotについては記事を書いていますので、もっと詳しく知りたい方は参照してください。

Copilot : GitHubのAIコード生成ツール
GitHubがAIによるプログラマーのサポートツール Copilot のテクニカルプレビューを公開しました。

References

  1. GitHub Copilot is not infringing your copyright https://github.com/mjbogusz/vl53l0x-linux
  2. GitHub Copilot FAQ - https://copilot.github.com/

記事の内容は間違いが無いように気をつけていますが、私の認識違いや、ミスなどにより間違っている可能性もあります。もし発見された場合はお問い合わせフォームよりご連絡頂けると幸いです。