主题
周刊 202611
资讯
测试是新的护城河
Next.js 是目前排名第一的 JS 框架。平时遇到的 JS 全栈应用,我估计,一半用它开发。
两周前,这个框架被一则新闻颠覆了。
一个 Cloudflare 工程师宣布,他只用一个星期就用 AI 重新实现了 Next.js,起名为 vinext。

事实上,一天就生成产品原型了,后面几天只是在完善。
"真正动手是2月13日,当天晚上,基本功能已经实现。第二天下午,11个路由器做好了10个。第三天,已经部署到我们的服务器,实现了完整的客户端水合。
接下来的几天,主要进行安全加固:修复极端情况,扩展测试套件,提升 API 覆盖率至 94%。"
这个新的实现,比原版 Next.js 性能更好。
"早期基准测试中,构建速度提升了4倍,客户端软件包的体积缩小了57%,生产环境的 Next.js 应用已经直接跑在上面了。"
这个 vinext 的代码已经放出来了。
我觉得,这件事对 Next.js 的打击非常大。
Next.js 是 Vercel 公司的产品,背后有一个大型开发团队,每年都是巨额投入,已经整整做了10年。虽然是开源软件,但是企业版、云服务、插件、皮肤都要收费,去年的年收入达到2亿美元。
这种看似难以逾越的护城河,在 AI 面前不堪一击。一个工程师用了一个星期,就复刻了大团队十年的工作成果,现有的网页应用不改一行代码,放上去就能跑,原版的每个功能都支持。
你知道花了多少钱?Token 费用仅仅为 1100 美元!
这叫 Vercel 怎么再向 Next.js 的开发投钱,客户又怎么愿意再为某个功能付出高昂的使用费。
推而广之,所有的商业软件都受到了重创。代码的护城河不存在了,只要投入一小笔金钱,AI 就能复刻出大型软件。
那么,为了保护自己,软件公司下一步肯定要防止 AI 复刻。
怎么防呢?关键就是测试用例。
Cloudflare 工程师这一次能够复刻成功,主要原因是 Next.js 有完备的文档、庞大的社区文章、以及完整的测试用例。AI 模拟的每一个 API,只要能够通过原有的接口测试,就能确认百分百兼容。
如果拿不到测试用例,谁知道代码行为是否一致,谁敢放到生产环境运行。
可以想象,为了防止复刻,大型软件项目一定会保护自己的测试用例。测试才是新的护城河。

世界最流行的数据库 SQLite,本身代码15.6万行,但是测试用例9205万行,足足大了590倍!
其中,最核心的测试套件 TH3 是闭源的,不公开,主要测试航空、医疗等关键行业的极端情况和边缘案例,属于核心技术资产。正是这些保密用例,才让 SQLite 难以复刻。
无独有偶,就在前两天,另一个开源项目 tldraw 也准备将测试用例闭源。

说实话,保密的测试用例肯定不利于开源项目的发展,但是开发者需要保护自己的利益。在日益强大的 AI 面前,越来越多的软件可能会选择这样做。
AI 复刻的版权问题
AI 复刻软件还有一个版权问题,也引起了很大争议。

Next.js 是最宽松的 MIT 许可证,所以复刻没有版权问题。但是,有人复刻了一个叫做 chardet 的项目,就争议巨大。
chardet 本来采用的许可证,是限制较多的 LGPL,复刻以后改成了 MIT 许可证,引发了原始作者的抗议。
网上的意见也分成了两派。
支持者说,AI 只复刻了功能和接口,代码完全不一样,当然可以更改许可证。
反对者说,GPL 规定了,所有衍生作品都不能更改许可证,AI 复刻就属于衍生。
更麻烦的是,美国法律规定,AI 生成产物无版权,属于公共领域。这意味着,AI 复刻的软件不能设置许可证,设置了无效。
按照这条法律,软件许可证就意义不大了。管你是什么许可证,任何人 AI 复刻一下就能规避,AI 实现的版本一律没有版权。
言论
我不知道十年后我的工作是否还存在
2021年,我感觉做一名优秀的软件工程师棒极了。软件行业蓬勃发展,机会很多,我热爱这份工作,觉得可以永远做下去。
2026年,我已经不确定软件行业十年后会怎样,即使还存在,必定与现在极不相同。我也许能找到出路,也许不得不离开这个行业。无论如何,我热爱的软件工作即将消失。