人工智能如何改变开源
本文探讨了AI对开源软件的多方面影响,包括项目膨胀、审核过载以及开发者发布代码意愿下降等趋势。AI使得代码生成变得容易,但同时也带来了质量控制和维护的挑战,可能改变开源生态的未来。
人工智能在2025年全面进入软件开发领域,并对开源项目产生了深远影响。本文作者基于自身观察,分析了几个关键趋势,这些趋势正在改变开源软件的世界。
项目膨胀
AI带来的一个普遍趋势是内容爆炸。搜索结果被生成的网站充斥,社交网络充斥着生成的图像和视频,源代码也不例外。如今,GitHub上的仓库数量激增,但高质量项目的增长并未同步。过去,遇到一个拥有数千行代码的较大项目时,可以合理假设作者投入了心血,了解问题,并有意愿维护。但现在,情况完全不同。AI可以在几分钟内生成数千行代码,但这些代码可能是无意义的,甚至是危险的。有些代码功能正常,但作者只是为自己临时需求而生成并发布到GitHub,无意将其转化为真正的开源项目。代码仓库不等同于开源项目,后者需要解决用户的问题和用例,而不仅仅是作者的一时之需。
以MeshCore为例,该项目出现了大量分支。缺少功能?直接分支,用AI编写缺失部分,然后作为MeshCore-UltimateEdition发布。问题是,这些分支通常投入极少精力,作者缺乏长期兴趣,往往一个月后就成为废弃软件。
大约十年前,人们开始质疑Linux仓库的概念是否已过时。2000年代,仓库几乎是Linux软件的唯一来源。但随着项目数量激增,发行版难以跟上。用户不得不从其他渠道获取软件,开发者也不再依赖发行版。然而,现在的情况可能促使精心策划的软件源(如Linux发行版仓库)复兴。开源世界变得过于混乱,用户可能再次重视经过筛选、可靠且长期维护的软件源。
审核过载
AI引发的另一个趋势是“审核过载”。过去,编写代码需要大量时间和精力,这本身就是一个自然过滤器。现在,代码生成变得快速且容易,但代码在投入生产前仍需审核。开源项目中长期有效的审核流程现已达到极限。
在GNOME 50中,Google Drive支持被移除,因为长期无人维护。用户不满,一位用户重新添加了该功能并提交给gvfs项目。负责维护的同事感叹,这是一个涉及4000行代码的变更。尽管基本功能正常,但明显是AI生成的。他仍需逐行审查,确保代码符合质量标准和长期维护要求。
大部分努力从代码创建转向了代码审查,这是AI的典型特征。但开源中,经验丰富的开发者原本就是瓶颈,AI使问题更加严重。上述例子中,同事还算幸运,贡献者态度积极且表现出了长期兴趣。然而,这如今是罕见例外。常见的贡献是有人用AI随意编写代码,缺乏深入兴趣和理解,然后抛给维护者。
作者在Meshy项目中亲身经历:有人提交了9000行变更的拉取请求,声称添加macOS支持。作者花一小时粗略审查,发现诸多问题:代码明显是AI生成的,数千行只是无用的引号替换,修改了无关代码,并覆盖了主分支的近期更改。提交者从不回复,之后消失。作者认为,即使一小时也是过多投入,以后会更快拒绝。
一些项目通过收紧贡献要求来应对。例如,Flathub拒绝AI生成的应用,引起争议。Flathub托管数千应用,每日新增,但只有三人负责审核。审核流程高度自动化,但仍需大量人工。六个月前,作者提交了两个应用,审核过程最终提升了应用质量。但如今,人们提交完全由AI生成的应用,毫无个人努力。提交模板要求上传展示应用功能的短视频,仅需15分钟,但AI生成内容的创造者连这都不愿做。他们反而指责这是对Linux自由的攻击,并迅速用AI搭建了Flathub的替代品,声称对所有人开放,但仅维持了一个月。
开源维护者不仅缺乏满足审核需求的能力,也失去了动力。通常他们自己编写功能更快,但审核曾是培养长期贡献者和潜在继任者的途径。当贡献者发送一个零投入的AI生成贡献,且可能自身都不理解时,如何期望他们成长为长期帮助项目的人?开源软件不仅关乎最终结果,也关乎过程——贡献者与项目建立联系,并最终传递给他人。这与AI世界只重结果、速成和低投入形成鲜明对比。
发布代码意愿下降
作者观察到,开源开发正出现一种微妙的退缩趋势。一个论点是审核过载:对某些项目而言,被AI生成内容淹没的成本超过了社区贡献的益处。他们可能为了透明度仍发布源代码,但从开放开发转为开放源代码但封闭开发。更不关心透明度的则可能完全封闭代码。
另一个论点是担心许可证被规避。现代LLM无视许可证训练源代码,然后轻松生成类似解决方案,可在任何许可证下发布。对于宽松许可证,这不成问题;但对于GPL等Copyleft许可证,AI构成了直接威胁。如果LLM基于你多年工作的项目生成类似代码,并以专有许可证发布,那就绕过了Copyleft原则。
MeshCore再次成为例子:协议和固件开源,但客户端闭源。社区发现核心成员秘密申请了MeshCore商标,并开始基于现有代码开发自己的闭源解决方案。创始人Scott Powell认为这坚定了他保留客户端源代码私有的决定,他表示:“在AI时代,开源等于把你的血汗付出拱手让人以无数种方式剽窃。”
虽然观点有争议,但作者越来越多地看到这种立场。终身开源倡导者——过去发布每个小脚本的人——现在保留这些东西,仅应要求提供。理由与Powell相似。
开源也源于分享的需求:编写代码困难,维护更难。为何各自实现相同功能?不如联合起来开发共享库。互联网基础设施正是建立在这个基础上。但AI抑制了这种需求。例如,有人认为WordPress已死,因为“我可以轻松生成自己的CMS”。这低估了开源项目提供的价值——不仅仅是代码,用对LLM的依赖取代对开源项目的依赖,长期可能得不偿失。
尽管如此,对共享开源组件的依赖确实有所下降。