V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
stimw
V2EX  ›  GitHub Copilot

Github Copilot 是否违反 GPL 协议?

  •  
  •   stimw · 2021-07-07 15:52:21 +08:00 · 5241 次点击
    这是一个创建于 1233 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看见公众号推送的,想了想觉得挺有意思:

    在 GitHub Copilot 直接复制快速平方根倒数算法这个过程中有个矛盾点,即这段代码是遵循 GNU GPL 2.0 协议进行开源的,而 GitHub Copilot 却要在未来扩展为付费服务提供。

    在此基础上,就产生了一个巨大争议:这个现象表示 GitHub Copilot 在训练过程中必定使用过 GPL 协议下的代码,那么机器学习系统产生的作品,甚至机器学习系统本身,都算是 GPL 协议中规定的衍生作品吗?

    • 如果答案是“否”,那是不是说明开发者可以利用 GitHub Copilot 来“清除”代码的 GPL 协议,从此再也无需遵循该协议?

    • 如果答案是“是”,那么不仅 GitHub Copilot 应该免费开源,整个 GitHub 都要成为一个开源项目:据 GitHub 博客中“在 GitHub Copilot 的早期开发过程中,作为内部试用的一部分,近 300 名员工在日常工作中使用了它”的说法,这些员工很有可能已经将 GitHub Copilot 生成的代码整合到 GitHub 的方方面面,那么 GitHub 就也应该是个开源项目。

    24 条回复    2022-02-15 09:27:11 +08:00
    hronro
        1
    hronro  
       2021-07-07 15:59:14 +08:00
    刚好前几天在推上看到一个有趣的观点:

    https://imgur.com/a/ly8rtnI
    hronro
        2
    hronro  
       2021-07-07 16:00:03 +08:00
    AoEiuV020
        3
    AoEiuV020  
       2021-07-07 16:09:39 +08:00
    gpl 开源毒瘤名不虚传,
    我不太懂这些,但做为开发者,直觉判断,就算侵权,也应该是使用方在确实用到了 Copilot 生成的 gpl 开源代码时使用方自身被感染,ai 本身不应该被感染,
    也就是不能‘利用 GitHub Copilot 来“清除”代码的 GPL 协议’,
    这样看的话感觉合理很多,相应的 Copilot 在生成代码时就可能需要提示开源协议了,甚至添加开关过滤部分毒瘤协议的代码,
    vk42
        4
    vk42  
       2021-07-07 16:11:16 +08:00
    Copilot 不需要开源啊,只要它的代码本身没有依赖 GPL 代码,对于 Copilot 来说 GPL 代码就是 train 的输入数据而已,这样类推 train 出来的 model 应该开放才是。类似于用私有的编辑器编辑了 GPL 代码,并不需要开源编辑器吧
    hronro
        5
    hronro  
       2021-07-07 16:16:29 +08:00   ❤️ 3
    别说什么 GPL 毒瘤不毒瘤的,即使是最宽松的 MIT 协议,也要求使用这些开源代码的人,需要在你的仓库中包含原 License 。但现在看来,如果你是通过 GitHub Copilot 来使用这些开源的 MIT 协议的代码的话,并不会遵守 MIT 协议的要求将原 license 包含在你代码里。
    dingwen07
        6
    dingwen07  
       2021-07-07 16:20:24 +08:00
    Copilot 软件中并没有包含 GPL 代码,应该是不需要使用 GPL 开源。而由 Copilot 生成的代码可能就会引起一些争议,我估计起草开源许可证的人根本没有想到能用机器学习来写代码。
    ryh
        7
    ryh  
       2021-07-07 16:32:20 +08:00
    代码是现写的不是复制的(滑稽🤪)
    icyalala
        8
    icyalala  
       2021-07-07 16:36:11 +08:00
    有两点要区分一下:
    1. GPL 衍生作品,或者说传染的边界在哪里,是否涵盖用于 AI 训练?
    如果训练结果只为了 “简单的提示变量命名” 这种服务,这种服务是否应当被传染?

    2. 用户参考开源项目中代码(不限 GPL/MIT ),不论是通过 AI 还是人工阅读,
    参考到什么程度则需要遵守原始的 License ?比如一个独特函数名,几行通用的算法?
    jim9606
        9
    jim9606  
       2021-07-07 16:47:59 +08:00
    等 GNU 那边的人回答吧,个人感觉如果只是片段重复,例如几个短函数或者几个 API 什么的,可以算作合理使用。拿来搞 IDE 代码建议也是符合 GNU 精神的。

    不过要是用 Copilot 代替人工搞 cleanroom 复刻,那肯定是不可接受的,不过现有许可证能不能防御这个问题还不清楚,这个得等司法实践去验证。GNU 肯定没考虑到还能这么用。

    @hronro 不用 github 并不能摆脱 copilot,除非你不开源,否则只要公开就有拿来当材料的可能。
    1194129822
        10
    1194129822  
       2021-07-07 20:46:28 +08:00
    真以为微软是老好人啊?以前的闭源为了卖光盘,现在的开源也不过是卖云。微软做的恶罄竹难书,现在却能光明正大的洗白。估计现在 linux 内核都有微软的专利代码,说不定哪天就爆炸了。真开源还是看 Apple,虽然数量不多,但都是质量上乘,持续维护的好项目。
    learningman
        11
    learningman  
       2021-07-07 20:51:09 +08:00
    如果这能传染,那用了 Co-Pilot 的项目怕不是要打包几十万个 LICENSE 文件
    charlie21
        12
    charlie21  
       2021-07-07 21:06:14 +08:00
    若真违反协议了,你是硬汉你应该去状告微软 起诉 github,而不是 abandon github
    又见花式碰瓷
    shayuvpn0001
        13
    shayuvpn0001  
       2021-07-07 21:15:04 +08:00
    开源的好货,基本上只要被商业公司染指,我觉得基本上就不会有什么好下场了。
    stimw
        14
    stimw  
    OP
       2021-07-07 21:19:21 +08:00   ❤️ 1
    @learningman
    @charlie21

    按我的个人理解,copilot 本身不应该被传染,但生成的代码完全绕过协议又不是很合理。
    所以各种协议这边应该要增加新条款来涵盖这玩意了...
    anytk
        15
    anytk  
       2021-07-07 22:21:44 +08:00 via Android   ❤️ 2
    时代变化这么快?还有说 GPL 是开源毒瘤?不要觉得微软近年来向开源示好就觉得是个好人,
    akira
        16
    akira  
       2021-07-07 22:25:29 +08:00   ❤️ 1
    Copilot 看成一个独立个体的人呢.
    你看过一段 gpl 代码,后来在工作的时候,按照同样的思路写了一段代码,那这段代码是否需要继承 gpl 呢。
    Vancion
        17
    Vancion  
       2021-07-07 22:29:57 +08:00   ❤️ 1
    @akira Copilot“写”出的应该是同一段代码。
    Vancion
        18
    Vancion  
       2021-07-07 22:34:13 +08:00
    说错了,修正:
    其实有关 GitHub Copilot 直接复制代码的问题,微软早在官宣时就曾回应:“只有 0.1% 的情况下,GitHub Copilot 提供的代码建议中可能包含一些来自训练集的字符或片段。”
    zengxs
        19
    zengxs  
       2021-07-08 10:27:17 +08:00
    @akira #16 这种情况理论上也是要继承 GPL 的。不过如果你不用 GPL,对方要诉讼你的话,这个比较难举证
    muzuiget
        20
    muzuiget  
       2021-07-08 10:58:53 +08:00
    什么叫 GPL 毒瘤,不喜欢就不要用,觉得有风险就不要用,没有人逼你用。
    baobao1270
        21
    baobao1270  
       2021-07-08 13:02:46 +08:00
    我们平时写代码,也经常复制黏贴其他地方的代码。
    如果我们只是复制黏贴了一小段,比如一个函数或者几行算法,那么我们要把这个代码的 License 包含在项目里吗?
    这个问题的答案同样也适用于 Copilot 。

    如果哪天 GitHub 的 License 加一个“在 GitHub 上上传代码意味着在许可证之外授权 GitHub 使用代码”的条款,那么对开源界有什么影响呢?
    no1xsyzy
        22
    no1xsyzy  
       2021-07-08 13:25:57 +08:00
    所以说 Copilot 只会自取灭亡。
    你写起来快了,Review 成本成倍提升。
    就好像说 Perl……
    宁可花一年去琢磨基础结构,划分抽象,也不要这样飞速写完花十年去查验。

    @baobao1270 有时这「几行算法」如果是专利的一部分,会强制你遵守 License 以获得正确的专利授权,否则涉嫌专利侵权。

    @Vancion 但实际上现在发现实际比例可能高不少。
    akira
        23
    akira  
       2021-07-08 23:29:36 +08:00   ❤️ 1
    @no1xsyzy 人类追求的是如何 努力提高生产工具的效率 ,其他的任何行为,在这个大势面前终将消逝
    a132811
        24
    a132811  
       2022-02-15 09:27:11 +08:00
    @no1xsyzy 我觉得 Copilot 应该不会自取灭亡,即使灭亡了,也还会有新的更智能的工具出来,有可能会更好的解决版权问题。

    关于 Review 成本:Copilot 是否明显增加 bug 产生的风险,可能影响没有想像的那么大。我更相信大部分人写的代码、复制来自 stackoverflow 的代码片段、迭代修改的代码,都是 bug 四溢的。。我个人更头疼一个项目引入大量的开源库、闭源库出现的未知 bug 、feature 支持(无论是自己还是等官方,一般都要较长的时间)

    关于版权:我想起谷歌抄的那几行 API 代码,最终被判合理引用。如果参数命名相似就算抄袭,写代码就是一件充满风险的东西——如果过去看过一些开源代码,后来脑子想起来可以这么实现,不知道算侵权不? Copilot 做的就是类似的事情。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3269 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:53 · PVG 19:53 · LAX 03:53 · JFK 06:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.