当前位置:首页 > 科技资讯 > 正文

GZDoom社区因AI代码分裂,开源协作面临挑战

将AI生成的代码直接引入项目,将会带来怎样的后果?

或许在程序崩溃或Bug出现之前,仅仅是这种做法就足以引发一场轩然大波——这正是开源社区GZDoom最近面临的困境。近日,该开源社区的创始人直接将AI生成的代码合并进项目,结果社区反应激烈:不少老贡献者愤然离职,创建新分支以表达不满。

当然,社区成员愤怒的原因不仅在于创始人的行为本身,更在于有贡献者披露,创始人在引入这段AI生成代码时,根本没有进行任何测试,而且日常他喜欢“一言堂”,把一个众人皆可贡献的开源项目变成了自己独做决定的“个人项目”。

GZDoom社区因AI代码分裂,开源协作面临挑战 GZDoom AI代码 开源社区 分裂 第1张

GZDoom是什么?

对于许多资深Doom粉丝而言,GZDoom这个名字并不陌生。

1997年12月,《Doom》这款游戏公开了引擎源代码,此后,行业中也出现了不少衍生项目,其中最知名的便是次年由开发者Randy Heit推出的Z Doom项目。

Z Doom并非重制Doom,而是让这款老游戏更现代、更好玩。它加入了许多在当时看似超前的功能,例如支持高分辨率和自由鼠标视角;引入新的脚本系统(DECORATE),让玩家能够轻松创建新武器、敌人和特效;支持mod制作复杂关卡逻辑;兼容基于同引擎的多款游戏。

随后几年间,Z Doom衍生出了多个版本,但GZ Doom是最引人注目的版本之一。

它于2005年由开发者Christoph Oelckers(网名Graf Zahl)开发而成。这里的“G”代表“GL”,意味着它加入了OpenGL硬件加速渲染。这一步非常关键,因为原版Z Doom只能使用软件渲染(画面类似老式游戏机像素风),而GZ Doom能提供动态光照、阴影、粒子特效、3D模型支持等现代图形效果。

随着时间推移,GZ Doom逐渐成为Doom模组开发的主流平台。许多知名的Doom现代化项目(如Brutal Doom、Project Brutality、Ashes 2063等)都是基于GZ Doom构建的。

GZDoom社区因AI代码分裂,开源协作面临挑战 GZDoom AI代码 开源社区 分裂 第2张

社区开始分裂,AI生成的代码成为导火索?

如今,GZ Doom社区正面临分裂。

有部分开发者联合起来,成立了一个新的分支项目——UZ Doom。这一举动显然是在抗议GZ Doom创始人兼维护者Christoph Oelckers的领导方式以及一些关于AI代码的做法。

有人或许会说,代码是否用AI写的根本难以判别,为何会激起如此强烈反应?

事实是,Graf Zahl在修改代码时留下了一句注释:

“This is what ChatGPT told me for detecting dark mode on Linux.”(这段代码是ChatGPT教我怎么检测Linux深色模式的。)

GZDoom社区因AI代码分裂,开源协作面临挑战 GZDoom AI代码 开源社区 分裂 第3张

正是这句注释,点燃了社区讨论。

开发者the-phinet指出:“这段代码未经测试,甚至无法编译,且可能涉及版权问题,无法确认是否符合GPL开源协议。”

对此,Graf Zahl回应称,这段代码通过了CI(持续集成),肯定可以编译。他表示对AI的使用不以为意:“现在每个人都在用AI写样板代码,而像你这样无理取闹的人,最终只会吃亏,被人嘲笑。至于你们对AI的反感——坦白说,管它呢!我当然对在项目特定代码里使用AI有保留,但这里仅仅是对系统配置进行一些表面检查,这些内容在各种网站上都能找到——只是AI让工作量少了十倍而已。”

GZDoom社区因AI代码分裂,开源协作面临挑战 GZDoom AI代码 开源社区 分裂 第4张

在这种情况下,一场关于在项目中引入AI生成代码的争议也由此展开。

the-phinet直接反驳:“你觉得有必要直接对我撒谎,这真是既好笑又完全幼稚。”与此同时,他还晒出了失败的运行记录:

GZDoom社区因AI代码分裂,开源协作面临挑战 GZDoom AI代码 开源社区 分裂 第5张

对于这一说法,Graf Zahl解释称:

“是的,第一个提交失败了。但重要吗?修复紧随其后。直接推送到master分支是个意外——我本想先推到测试分支,让CI做一次测试编译,但我犯了个错误,提交前没有切换分支。别跟我说你从来不犯错。”

Graf Zahl这种无所谓的态度引发社区更多贡献者的不满。随即,另一名贡献者Cacodemon345也加入了这场“口水战”之中,他严肃地表示:

“我绝不会使用AI生成的糟糕代码,即便是样板代码也不会用。即便只是部分用于AI辅助纠正我的代码。我在另一个项目里处理过AI辅助的PR(Pull Request),那体验非常糟糕。处理各种bug报告完全不开心。如果用ChatGPT或其他生成式AI/聊天机器人生成的糟糕代码真的是这个项目的未来,很抱歉,我退出。

没想到Graf Zahl并不想听类似的言语,其只是删掉了这部分由AI生成的代码,把相关函数从仓库里移除了。

分叉新项目,以此抵制AI生成的代码

显然Graf Zahl对于AI的观点并没有得到社区多数贡献者的认同。

几天后,社区成员the-phinet在GitHub上提交了一份Bug报告,详细列出了社区对Graf Zahl使用AI生成代码的不满以及他一贯“自上而下、独断式”管理GZ Doom项目的问题:

“恭敬地说,@coelckers(Graf Zahl的GitHub用户名),请你不要再直接推送到master分支了。

如果61123d8需要‘澄清’,应该通过草稿PR提交。

你推送了未经测试的代码。留一句‘稍后再测试’的备注很荒谬:一旦进入代码库就很容易被遗忘。

使用大语言模型(LLM)帮你写代码很可能违反GPL协议。

你在意‘干净’的Git历史但它满是你来回修改的记录因为很多事情没有与团队讨论:59b5676、ec8e0e6、028a830。

你在提交里隐藏了一些不小的改动这让大家担心你会随意删除他们依赖的功能。

我们是一个团队。这样做显示出你对同事的尊重有多少。

“我理解这是你的项目你可以随意操作但请不要直接推送而是通过PR提交并等待维护者确认这不仅树立了好榜样也给维护者和其他开发者提供了审查你工作的时间。”