整理 | 华卫
违反开源许可的事情,在技术圈内屡见不鲜,但这种行为一旦被揭露,往往会引发轩然大波。
近日,拥有超 1200 万粉丝的 B 站知名 UP 主“老师好我叫何同学”,因一条名为《我用 36 万行备忘录做了个动画…》的最新视频中,将基于某开源项目改动的程序称作其“专门开发的软件”,在各大平台引发热议并冲上了热搜榜。尽管该项目采用了最为宽松的 MIT 开源协议,但未主动注明作者信息等举动还是招致网友的诸多吐槽。不仅何同学的视频评论区,就连被涉及开源项目在 GitHub 的 Issue 区,都已经“沦陷”了。
又一起违反开源协议“翻车”事件
视频中,在介绍核心功能(字符画转制程序)时,何同学声称“我们专门写了一个软件”,引发了大量网友的质疑。原因是,这款“专门写的转件”实际是 GitHub 上的开源项目“ASCII generator”,该项目可用于生成 ASCII 码,支持图像转文本、图像转图像、视频转视频。
项目链接:_https://github.com/vietnh1009/ASCII-generator
也就是说,何同学的视频成品是基于该开源项目实现,但在视频发布时其并未在任何地方注明相关来源及原作者信息。对此,何同学在评论区回应,承认“使用的字符转制程序确实是由开源项目 ASCII-generator 改动而来,改动的内容主要是优化字符生成比例、图片裁切方式和传参方式”,而之所以没有在视频中指出这一点是因为“并没有意识到这个程序是从开源程序改动而来,也没有尽到审稿义务”。
据何同学称,目前他们已经对视频进行换源,修改了相关描述并增加引用来源。微博及油管视频平台平台由于无法做换源处理仍保持原视频,仅在评论区作了上述图片中的解释。
视频前后对比
网友显然也并不买账,表示:“怎么被发现了才来紧急避险,难道没人指出来你就可以一直藏起来了吗?”还有知乎网友指出,“被使用的开源项目实际上是视频里技术含量最高、实现难度最大的部分。”
那么,何同学视频中用到的字符画转制程序是改动了这个开源项目的哪些地方?是否在协议层面违反了相关开源许可呢?
改动处被网友质疑是“伪装原创”
根据 ASCII generator 的自述文件,使用该项目的 python 源代码可以实现:
给定输入图像,可以生成以不同语言文本格式(.txt)存储的 ASCII 图像
给定输入图像,可以生成以不同语言图像格式(.png、.jpg…)存储的 ASCII 图像。每种格式都有 2 个选项:黑底白字,反之亦然。
在输入视频的情况下,可以生成以不同语言视频格式(.avi、.mp4…)存储的 ASCII 图像。
视频 / 图像输出可以是灰度或彩色格式。
有知乎网友根据视频中展示的代码片段,和原项目进行比对后得出了以下改动结果:
更具体地说,何同学的改动是:
1. 将开源项目的作者声明部分「@author:Viet Nguyennhviet1009@gmail.com」删除;
2. 将「get」改成了「set」;
3. 改变了函数的传参方式,使用关键字参数 input_pathj、Toutput_pathj、「cols」、「model;
4. 改变了「–language」和「–mode」的项目参数默认值。
该网友指出,上述改动除了第三点可以认为是提高代码可读性及维护性以外,“其他的改动都说不过去”。
第①点删除开源项目的作者声明部分,甚至号称代码是自己写的,已经严重违反了 MIT 协议。
第②点将函数名中的 get 改成了 set,让人感觉莫名其妙,特别像是程序设计课里不同人之间互相抄代码,为了降低查重率就把函数名或者变量名改一下而已。黑人问号脸???
第④点改变了项目参数默认值,尤其是将 english 改为 general ,特别像是想抹除原作者痕迹,方便自己标榜原创。但凡何同学要是改成 chinese 我都能理解他们是为了方便使用而已……
除上述说法外,还有不少网友也都严重质疑何同学“手动删除”作者声明部分注释的行为和目的。在何同学回应之后,知名科技 up 主 epcdiy 在评论区这样问道,“请问删除原作者名字是无意识的吗?”
ASCII generator 开源项目采用的是 MIT 许可证,与其他常见的软件授权条款(如 GPL、LGPL、BSD)相比,MIT 是相对宽松的软件授权条款。
根据 MIT 许可证的说明,被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副本,可根据程序的需要修改授权条款为适当的内容,但被授权人在软件和软件的所有副本中都必须包含版权声明和许可声明。
因此,有网友认为,何同学应该将该期视频的收益作为赔偿给 ASCII generator 开源项目的开发者。
项目原作者发声
根据 GitHub 上的介绍,被涉及的 ASCII generator 开源项目是由 Sporttotal 高级 AI 工程师 Viet Nguyen 开发的。据了解,Sporttotal 是一家专注于体育转播和数码化领域创新解决方案的技术媒体公司。
同时,Nguyen 也是一位积极的开源贡献者。在 Nguyen 的个人页面上,我们看到其发布的多个受欢迎的开源项目,包括快速绘图应用程序、照片马赛克生成器,以及通过异步优势 Actor-Critic (A3C) 算法和近端策略优化算法训练 Agent 玩超级马里奥兄弟、用深度 Q 学习玩俄罗斯方块和 flappy bird 游戏、在不触摸键盘的情况下用手部检测模型玩游戏等各种有趣的实践。
据 Nguyen 介绍,他本人本科毕业于越南河内科技大学,之后在慕尼黑工业大学攻读计算机科学硕士学位,主修人工智能和机器人技术,并且精通 Python,包括 Tensorflow、Pytorch、Keras、Scikit-learn、Pandas、NLTK、OpenCV 和其他机器学习框架,对 NLP 和计算机视觉中的深度学习、强化学习的课题感兴趣。
近期,Nguyen 正在油管视频平台上持续更新有关机器学习各种常用算法、函数和模型以及数据科学方面的学习教程。在从事 AI 工程师之前,Nguyen 还曾在两家公司担任过数据科学家。
而 Nguyen 本人目前也知晓了此事,刚刚知名科技 up 主 epcdiy 转发原作者 vietnh1009 写给何同学的一封信的中文翻译:
各位好,
今天,多亏了一些在 Github 上的中国朋友告诉我,你们正在使用我的个人项目(https://github.com/vietnh1009/ASCII-generator/blob/master/img2img_color.py),并且声称自己编写了该代码(视频中的时间戳为 00:56)。我还制作了两段 YouTube 教学视频,指导我的观众(主要是越南人)如何免费编写这段 Python 代码。你们不仅在窃取他人的工作成果,还在欺骗自己的订阅者。我想我可能不是第一个被你窃取作品的人。对我来说这没有关系,但我不希望从中获利,因为这不是你的原创作品,并且你的观众值得更好的东西。他们付钱给你是为了欣赏你的创意和努力,而不是为了从互联网上盗用别人的东西。
开源协议的红线:违规代价与行业反思
事实上,近年来还有不少违反开源协议的事件发生。2021 年,国内首例违反 GPL 协议致侵权的案例被判罚,被告公司赔偿原告公司经济损失及维权合理费用共计 50 万元。
像何同学一样,违反 MIT 许可证的案例也不在少数。上个月,就先后有两家机构被指控。
10 月 10 日,Abstract Chain 团队成员 @0xCygaar 曝料称,美国联邦调查局 FBI 在发行代币 NexFundAI 时涉嫌违反 MIT 许可证。该工作人员称,FBI 在其智能合约中直接复制了 OpenZeppelin 的多个库文件,但未按要求在代码中附加许可证声明,构成了版权侵犯。
10 月 1 日,AI 创业公司 PearAI 的创始人 Duke Pan 承认其发布的 AI 编码器产品确实"借鉴"了开源项目 VS Code 和 Continue,前者采用的是 MIT 许可证,后者是 Apache 开源许可证。Pan 表示,PearAI 现在已将项目重新发布在与 Continue 相同的 Apache 开源许可证下。但仍有网友指出,“删除原始的 MIT 许可证并用限制性更强的许可证(Apache)取而代之,违反了版权法。”
截图来源:https://x.com/CodeFryingPan/status/1840831339337302204
违反开源许可的事情,在技术圈内屡见不鲜,但这种行为一旦被揭露,往往会引发轩然大波。PearAI 的创始人也不得不出来发长文道歉,希望得到开源社区的原谅:“你们帮助我们明白了,我们这样做的方式是随意的,是对我们热爱的开源社区的冒犯。”“这种随意的处理方式不仅在技术上是不正确的,而且冒犯了所有为开源项目做出贡献的人,也冒犯了开源的本质。我们已经纠正了我们的错误,我们不会再犯这样的错误。”
一位开源策略顾问 Phil Albert 曾表示,“几乎没有理由在软件上违反 MIT 许可证,因为 MIT 许可证施加的要求很少。所需要做的就是将软件中获取的八行左右的文本包含在软件的其他地方。”
随着开源代码中 Heartbleed 和 Log4Shell 等抢眼漏洞的出现,隐藏的开源代码风险来源——许可证不合规却开始被忽视了。但哪怕只有一个许可证不合规,都可能导致法律诉讼、耗时的修复工作以及产品上市的延误。
乍一看,保持开源许可证合规性听起来很简单。但实际上,它与开源本身的本质一样复杂。开源许可证种类繁多,不同许可证的要求差异也很大。因此,企业和开发者们有必要建立起全面的开源管理策略。
通过采取积极主动的方法,在开发生命周期的早期识别和修复开源许可问题,不仅可以提高开发人员的工作效率,还能减少在开发生命周期后期不得不淘汰和替换软件中不合规软件包所带来的心痛。开源框架的存在应该是为了追求终极目标,即最大的善。
参考链接:
https://www.zhihu.com/question/4389622860/answer/35499540383?utm_psn=1842513046217564160
https://x.com/CodeFryingPan/status/1840831339337302204
https://www.quora.com/What-are-the-consequences-of-breaching-MIT-license
评论 2 条评论