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

GZDoom开源社区因AI代码合并争议分裂,新分支UZDoom成立

在软件项目中直接引入AI生成的代码可能引发哪些后果?

或许在程序崩溃或bug显现之前,仅仅这一行为就足以掀起一场风波——这正是开源社区GZDoom近期遭遇的困境。近日,该社区创始人将AI生成的代码直接合并到项目中,导致社区反应激烈:许多老贡献者愤然离开,并创建了新分支以表达不满。

当然,社区成员愤怒的原因不仅是创始人的行为,更有贡献者透露,创始人在引入AI代码时未进行任何测试,且日常管理风格“独裁”,将本可众人贡献的开源项目变成了个人决策的“私有项目”。

GZDoom开源社区因AI代码合并争议分裂,新分支UZDoom成立 GZDoom  AI生成代码 开源社区管理 UZDoom分叉 第1张

GZDoom 简介

对于许多资深Doom爱好者来说,GZDoom这个名字并不陌生。

1997年12月,《Doom》游戏引擎源代码公开后,行业中涌现了许多衍生项目,其中最知名的是次年由开发者Randy Heit推出的ZDoom项目。

ZDoom并非重制Doom,而是让这款老游戏更现代化、更具趣味性。它加入了众多在当时看来前沿的功能,例如支持高分辨率和自由鼠标视角;引入新的脚本系统(DECORATE),使玩家能轻松创建新武器、敌人和特效;支持mod制作复杂关卡逻辑;兼容Doom、Heretic、Hexen等多款同引擎游戏。

随后几年,ZDoom出现了许多衍生版本,但GZDoom是最突出的之一。

它由另一位开发者Christoph Oelckers(网名Graf Zahl)于2005年创建。这里的“G”代表“GL”,意味着它加入了OpenGL硬件加速渲染。这一步至关重要,因为原版ZDoom仅支持软件渲染(画面类似老游戏机的像素风格),而GZDoom能提供动态光照、阴影、粒子特效、3D模型支持等现代图形效果。

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

GZDoom开源社区因AI代码合并争议分裂,新分支UZDoom成立 GZDoom  AI生成代码 开源社区管理 UZDoom分叉 第2张

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

然而,如今GZDoom社区正面临分裂。

部分开发者联合起来,创建了一个新的分支项目——UZDoom。这一举动显然是为了抗议GZDoom创始人兼维护者Christoph Oelckers的领导方式及其对AI代码的处理。

或许有人会问,代码是否由AI编写难以判断,为何会引起如此强烈的反应?

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

“This is what ChatGPT told me for detecting dark mode on Linux.”

(这段代码是ChatGPT教我如何检测Linux深色模式的。)

GZDoom开源社区因AI代码合并争议分裂,新分支UZDoom成立 GZDoom  AI生成代码 开源社区管理 UZDoom分叉 第3张

正是这条注释引发了社区讨论。

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

对此,Graf Zahl回应称,代码通过了CI,肯定可以编译,否则他会禁用,并对AI使用不以为然:“现在每个人都在用AI写样板代码,像你这样无理取闹的人只会吃亏和被嘲笑。至于你们对AI的反感——说实话,谁在乎!我当然对在项目核心代码中使用AI有所保留,但这只是对系统配置的表面检查,这些内容在网上随处可见——AI只是让工作量减少了十倍而已。

GZDoom开源社区因AI代码合并争议分裂,新分支UZDoom成立 GZDoom  AI生成代码 开源社区管理 UZDoom分叉 第4张

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

the-phinet直接反驳:“你觉得有必要对我撒谎,这既可笑又幼稚。”同时,他还展示了失败的运行记录:

GZDoom开源社区因AI代码合并争议分裂,新分支UZDoom成立 GZDoom  AI生成代码 开源社区管理 UZDoom分叉 第5张

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

“是的,第一个提交失败了。但这重要吗?修复紧随其后。

直接推送到master分支是个意外——我本想先推到测试分支,让CI进行测试编译,但提交前未切换分支,我犯了错误。

别告诉我你从不犯错。”

Graf Zahl的这种态度引发了更多贡献者的不满,随后另一名贡献者Cacodemon345也加入争论,严肃表示:

“我绝不会使用AI生成的糟糕代码,即使是样板代码,也不会用,即使部分用于AI辅助纠正我的代码。我在其他项目处理过AI辅助的PR,体验极差,浪费时间去处理各种bug报告。如果ChatGPT或其他生成式AI/聊天机器人生成的糟糕代码真是项目的未来,很抱歉,我退出。

没想到,Graf Zahl不想听此类言论,只是删除了AI生成的代码,将相关函数从仓库移除。

同时,他并不想放弃使用AI,表示:“别以为这解决了AI问题。我认识许多依赖AI工具的开发者,他们已经离不开AI。而且大多数人不会承认,很难区分这些代码——它们不总是明显的糟糕代码。例如,如果我说代码来自我的老项目,没人会怀疑。可惜那个项目的检查功能仅针对Windows和Mac版本……:(”

他还补充:

“哦,相信我,我对将AI作为编程助手也非常谨慎。我见过它输出的垃圾代码,大多时候我试图用ChatGPT节省时间,结果都不满意。

我发现它唯一有用的地方,可能是像这种检查——系统配置查询,这类内容在普通网络搜索中很难找到。即使是标准算法,生成结果也不总是可靠。

至于法律风险,不,抱歉,这不会发生。没人敢轻易得罪大科技公司。

我完全预计AI金融泡沫在未来两年内破裂,但总体看,这工具太有用,不可能完全放弃。它会继续存在,但会沿更合理方向重新定位。

也许在编程上不特别适用——但图像生成、自动文本翻译、自动文本摘要等呢?这些更‘可丢弃’的内容,本身不需长期存在。

很可能,你已比意识到的更频繁使用AI,只是没注意到。”

分叉新项目抵制AI生成代码

显然,Graf Zahl对AI的观点未获社区多数认同。

几天后,社区成员the-phinet在GitHub提交bug报告,详细列出社区对Graf Zahl使用AI代码的不满,及其一贯“自上而下、独断”管理GZDoom的问题:

“恭敬地说,@coelckers,请不要再直接推送到master分支。

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

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

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

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

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

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

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

Zahl回应——“如果你们这么不满,那就随便fork项目好了。

GZDoom开源社区因AI代码合并争议分裂,新分支UZDoom成立 GZDoom  AI生成代码 开源社区管理 UZDoom分叉 第6张

结果,社区开发者真就行动,开始自立门户。

UZDoom 诞生!

原核心贡献者代表Nash Muhandes在DoomWorld论坛写道:

“嗨,我想在这帖子聊UZDoom,希望它成为‘半官方’集中讨论帖,防止误传。

由于一些分歧——有些最近出现,有些已忍近二十年——我们决定最好分叉(fork)这项目。

那么‘我们’是谁?我们是一群仍热爱GZDoom的人。过去一两年,我们持续为它提交更新、安全修复和维护PR的开发者团队。包括Jay、Gutawer、Boondorl、TehRealSalt,还有新加入的Marcus(他特别关注Unix平台部分,这正是GZDoom一直欠缺的领域)。当然可能还有未点名朋友,但如果你熟悉这圈子,大概知道他们。

UZDoom会继续坚持GZDoom核心理念:既保持对旧内容兼容性,也为创作者提供更多有趣新功能。

在初期,模组和存档会与GZDoom完全兼容。

不过,随着UZDoom增加新Mod功能、新作品开始使用这些特性时,它们可能无法再在GZDoom上运行。

我个人——并出于最真诚尊重——想感谢Graf Zahl过去二十年为GZDoom所做一切。我相信他知道这点(至少我希望),因为这感激之情过去二十年间我们多次在公开或私下表达过。

我和大多数人一样,不希望GZDoom遗产消亡。所以我认为最好方式,是通过分叉继续开发,同时建立更透明、多人协作开发模式。”

在Reddit讨论贴,Nash Muhandes进一步解释:

“UZDoom不再是‘一人说了算’或‘要么按我说的来,要么走人’开发模式。

所有代码必须通过Pull Request提交,并经多人审查;所有过程公开透明——无人能直接往主分支提交代码。”

GZDoom开源社区因AI代码合并争议分裂,新分支UZDoom成立 GZDoom  AI生成代码 开源社区管理 UZDoom分叉 第7张

他还在Bluesky上写道:

“我这二十多年倾注心血的东西——可以说是我的人生热情所在——从没见过像这次这样崩得这么惨。” 

GZDoom开源社区因AI代码合并争议分裂,新分支UZDoom成立 GZDoom  AI生成代码 开源社区管理 UZDoom分叉 第8张

最后

围绕一款32年前经典游戏的现代移植版,原本活跃的开源社区却出现内讧,网友在GitHub issue、Reddit上热议。

开发者kevansevans直言不讳批评项目创始人:

“Graf,你到底怎么回事?你消失一年,然后回来把工作推倒重来,用生成式AI的烂东西解决本可轻松搜索的问题,还在别人合理质疑时叫他们‘滚蛋’?这引擎现处于有史以来最健康状态,但感觉你恨不得无人碰你那宝贝代码。

你知道我怎么知道?因为有人真fork了这项目,你在对应Discord服务器大发雷霆,因你不再掌控全局,然后毫不费力直接拿走未完成代码,几乎无修改,最后当你‘成人脾气’没奏效,你又退出好几个服务器。”

另一开发者Boondorl直接怒怼:

“你刚刚彻底把GZDoom整废了。祝你玩得开心,你可以一人慢慢敲代码,无人再会提醒你改东西了。” 

GZDoom开源社区因AI代码合并争议分裂,新分支UZDoom成立 GZDoom  AI生成代码 开源社区管理 UZDoom分叉 第9张 GZDoom开源社区因AI代码合并争议分裂,新分支UZDoom成立 GZDoom  AI生成代码 开源社区管理 UZDoom分叉 第10张

这一连串冲突让社区氛围骤冷,也让许多开发者失望——开源本应强调协作共享,但现实中可能因项目创始人个性管理方式演变成“个人项目”。同时,AI生成代码应用到实际项目时,仍存巨大争议。对此,你怎么看?