msg7086
23 分钟前
之前我收到过一位开源项目开发者关于使用 AI 的看法。
其中有很大一项就是:
许可证污染。
你做自己的项目,你想怎么搞就怎么搞,反正你自己负责,开 AI 拉多大的都无所谓。(我现在 vibe 的一个项目已经非常大了,几千个提交,就是这么做的。)
但是这是别人的项目,而且是开源项目,想必还是比较出名的项目。
那么问题就来了,你怎么保证 AI 生成的代码不是和其他私有项目或者许可证不兼容项目里的代码一个样?
比如你在给 MIT 项目贡献某种算法,结果后来被爆出来和另一个 GPL 项目里的算法非常类似。
怎么办?整个项目都给你污染成 GPL 了。
所以很多人非常忌讳这种 AI vibe 大功能的 PR 。
如果是简单的修改,比如你找到一个 C++内存溢出问题,修改一下缓冲区长度,又或者是 double free 了你给修一下条件,这种属于著作权法上「简单修改」的情形,一般维护者是接受的。
后来那位维护者也提到,如果只是生成简单的测试用例,或者参与 debug 工作找到代码错误,这些一般都是可接受的。所以后来我给这个开源项目做的贡献就是写了一个独立于项目的测试框架套件,由我反向导入开源项目作为子模块,然后跑测试用例。
当然楼上几位提到的维护者的精力也是很重要的一点。你是作为一个第三方开发者去贡献代码的,而第一方开发者对项目的了解程度远比你高,你无心引入的一些变更,对方仔细审核以后就可能会发现隐藏的 bug 。再加上万一对方合并 PR 以后出现问题,责任在对方头上,而不是你头上。维护者身上的压力远比一个 PR 作者要大。