OpenJDK 全面禁止 AI 生成代码!

0 阅读6分钟

文章的开头,咱们先来一个小问卷调查吧。

不知道咱们这里有多少小伙伴还在做 Java 开发的?

最近 Java 圈子里出了一件事情被大家讨论得蛮多的,相信不少同学也都看到了。

那就是 Oracle 针对 OpenJDK 发布了一项极其严格的代码贡献政策,即:

禁止提交 AI 生成的代码。

消息一出,社区里吵翻了天。

有人拍手叫好,认为这是保护开源质量的底线,也有人嗤之以鼻,觉得这是逆时代潮流的老登行为。

关键更搞笑的是,Oracle 自己一边喊着用 AI,一边却又把 AI 生成的代码死死挡在 OpenJDK 项目门外。

这种割裂双标感,让许多开发者直呼看不懂。

这个禁令到底有多狠

我们先来看看这次 OpenJDK 官网上的政策原文。

OpenJDK 的这份政策,并不是可选建议,而是一份强制的硬性要求。

该政策明确规定,无论是全部还是部分,只要内容里沾了 AI 生成的边,一律都不得提交。

这里面的内容不仅包括源代码,类似像文本、图片、邮件、Wiki、PR等等,都在管控范围之内。

这还不算,官方 FAQ 里还给出了一个问题场景:

有人问,如果我用 AI 生成了 100 行代码,自己手改了 10 行,那这算合格的吗?

官方回答干脆利落:

不行。

只要提交内容里包含了 AI 生成的内容,无论全部还是部分,一律禁止。

不仅如此,类似像文本内容、图片、PR、邮件内容、Wiki 内容……,只要是用 AI 生成的,统统不行。

唯一允许的,是你私下用 AI 来学习、调试、理解现有代码,但绝不能把 AI 的生成产物提交上去。

或者再换句话来说:

AI 可以当你私下学习的助手,但却不能当你提交代码的责任人。

为什么要这么做

很多人觉得 OpenJDK 疯了,放着免费的代码生产力不用。

但如果你了解 OpenJDK 的地位,可能就会考虑到或许这也算是其一种清醒的策略取舍。

OpenJDK 不是普通的开源项目,它可以说是整个 Java 开源生态的地基,也是当今互联网生态中不可或缺的基础设施级软件。

全球大量的金融系统、政务系统、企业后台等都跑在它上面。在这个级别的项目里,稳定性和合规性压倒一切。

OpenJDK 官方给出了三个禁止理由,每一个都直击要害:

第一点是:审查负担问题。

AI 写代码太容易了,一天生成几十个 PR 完全不在话下,而且这些生成物看起来语法正确、逻辑通顺。

但问题是,这些代码往往看起来 OK,但实则暗藏杀机。比如藏匿着的细微错误、边界缺陷,或者压根就没有考虑到的长期维护性问题和兼容性问题。

OpenJDK 的维护者人数有限,资源也有限。如果放任大量 AI 产物的涌入,维护者会被淹没在看似合理但难以维护的代码红海里,最终导致项目瘫痪。

第二点则是:安全风险问题。

AI 模型有幻觉这是大家都有目共睹的共识,它可能会自信满满地写出一个看似能解决 Bug,实则引入新漏洞的代码。

在普通应用里,这或许只是个线上事故,但在 JDK 这里,这可能是一个波及全球的软件安全灾难。

第三点,也是最棘手的:知识产权问题。

AI 训练数据集来自海量互联网数据,生成的代码存在无意复制他人代码的风险。

而目前大家对于 AI 产出物版权归属的问题还没有一个明确定论。

一旦 AI 无意中缝合了带有版权隐患的代码合入 OpenJDK,那未来可能面临的就是巨大的法律风险和版权纠纷。

这对于 Oracle 等这种在知识产权上极其敏感的公司来说,这是绝对不能触碰的红线。

尴尬的反差

对于 Oracle 而言,你要说你旗下各个开源项目你都禁 AI 的话,大家其实也没啥疑惑。

但问题是,人家 Oracle 偏偏不这样。

这是因为其旗下另外一个知名开源项目 GraalVM 在 AI 工具辅助这件事情上则采取了完全相反的政策态度。

GraalVM 项目政策里明确允许 AI 辅助贡献,不过这里有一个前提:代码提交者必须对内容负全责

而作为代码贡献者,你必须能能解释和维护你所提交的代码,如果做不到,该代码可能会被拒绝。

而在代码署名这一块,项目鼓励贡献者主动披露 AI 大模型参与情况,但不作强制要求

其实在知识产权确认这方面,虽然两个项目都要求贡献者签署 OCA,但 OpenJDK 项目聚焦的是知识产权风险,而 GraalVM 项目则聚焦的是贡献者责任,出发点不一样,责任视角不一样,所反映出来的政策要求也完全不一样。

写在最后

众所周知,最近这两年 AI Coding 持续爆火,网上也时不时有程序员即将被 AI 替代的各种观点冒出。

但 OpenJDK 用一纸政策告诉了我们:AI 可以帮你写代码,但却不能替你担责

看到没,涉及到背锅问题的时候,AI 也不好使了吧。

细想一下,OpenJDK 的禁令,其实不是反 AI,而是反不负责任的 AI 产物

AI 时代,虽说代码的生成成本趋近于零,但代码的出处、权属与责任问题,却并没有清晰的界限定论。

所以在把 AI 拉进你的实际生产协作流程之前,你还得先想清楚一个问题:

这段代码,到底谁能为它负责?

注:本文在GitHub开源仓库「编程之路」 github.com/rd2coding/R… 中已经收录,里面有我整理的6大编程方向(岗位)的自学路线+知识点大梳理、面试考点、我的简历、几本硬核pdf笔记,以及程序员生活和感悟,欢迎star。