陆鸣

自由开发者 · JavaKit 作者 · ⭐ 2,347 · 敏感词幸存者

JavaKit 重生:我的 2347 颗星终于回家了

2028年4月3日,微软的邮件到了。数据包大小约为12.7GB,网速不快,下载花了一个多小时。解压的进度条一格一格地跳,我坐在湖南老家那张八十块钱的电脑椅上,手里握着那个保温杯——杯身上的字迹已经有些模糊了,但我还是能看清那行用记号笔描过的“Keep Calm and Code On”。下面那行“And Kill the Dragon”是后来加上去的,墨水还没完全褪色。

解压完成。我看到了熟悉的目录结构——luming/javakit,完整的,原始的,每一个文件都在。README 的第一行还是我五年前写的那句话:“A lightweight Java toolkit for everyday development.” 我滚动鼠标往下翻,看到了那个让我魂牵梦绕了十九个月的数字。

2,347
JavaKit · 历史星标数量
🛡️ 微软 GitHub 档案系统验证 · 数字签名有效 · 2028-04-03T09:15:22Z
验证哈希:b3e4f5a6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2

我盯着那个数字看了很久。不是因为它有多大——两千多颗星在开源世界里并不算多。而是因为它是真的。它被一个万亿市值的公司用数字签名证明了一行字:这个人没有撒谎。两千三百四十七颗星,是真的。

星标的意义

在404日之后的那段日子里,我面试过七家公司。每一次面试官都会问同一个问题:“你说你在 GitHub 上有一个两千多星的项目,能打开让我看看吗?”每一次我都只能回答:“链接已经死了。您可以搜一下 JavaKit 这个名字,应该还能找到一些转载的镜像。”然后面试官会在搜索引擎里敲下“JavaKit”,出来的结果大多是残缺不全的镜像站、过时的技术博客引用,以及几条404的废墟链接。

有一个面试官甚至委婉地暗示:“现在简历造假的挺多的,我们也不是不相信你,但……”他没有把话说完,我在心里替他补全了——但你没有证据。

现在我有了。那枚蓝金色的徽章可以挂在任何代码托管平台的个人主页上,点击即可跳转到微软官方的查验页面,证明这个开发者在 GitHub 上曾经拥有的每一项荣誉都是真实的。我把徽章挂在了 SourceWeave 的主页上,旁边加了一行注释:“这是我用三张床和一把钻石剑换来的。请尊重它。”

不只是数字

数据包里不只有星标计数。它包含了 JavaKit 全部的 issue 讨论——四百一十七条,从2019年3月的第一个“如何引入依赖”到2026年8月10日最后一个“兼容 JDK 24 的 PR 已测试通过”。包含了七十六个 PR 的完整评审记录,包含了每一行代码的提交历史,包含了那些在凌晨三点和世界各地的贡献者争论 API 设计细节的长夜。

我翻到了 2021 年的一个 issue,标题是“在 Android 环境下出现 NoSuchMethodError”。那个 issue 下面有七位开发者花了三周时间排查问题,最终发现是 Gradle 依赖冲突导致的。我当时在 issue 最后写了一句:“感谢所有人的耐心。这个 bug 让我学到了比 Java 本身更多的东西。”

这些文字在 404 日那天全部消失了。现在它们回来了。

收起来的备忘录

拿到数据之后,我做了一件事:把贴在显示器旁边的那份《自我审查备忘录》取了下来。不是扔掉——是叠好,放进抽屉里,和那枚蓝金徽章的打印版放在一起。

备忘录上写着那些被迫改掉的变量名:getJavaVersiongetLangVersionLookupavgScoreaverageScoreconvertFormatchangeFormat。每一条都是我在 Gitee 审核系统面前弯过的腰。现在,原始代码完整地回来了,我可以重新用 Java 作为方法名,可以用 avg 作为前缀,可以把那些扭曲的拼音和同义词混搭的命名一一恢复。

但我不打算改回所有名字。有些东西就留着吧——那些被审核系统逼出来的冗余命名,是这段历史的伤痕。伤痕也是记录。

在 SourceWeave 上重建

数据恢复之后,我把 JavaKit 的完整仓库推送到了 SourceWeave 的测试网上。不是作为备份,而是作为它的新家。SourceWeave 的协议还在迭代,节点还不够多,但它是唯一一个让我感到安心的平台——因为它不依赖任何公司的善意。

我在仓库的 README 里加了一句话:“This project was lost on August 11, 2026. It was recovered on April 2, 2028, by a team of developers who killed a Wither and an Ender Dragon in Minecraft. Yes, you read that correctly.”

方槐在德国帮我搭建了欧洲区的第一个镜像节点。Wei 把她的 DeCensor 插件规则库迁移到了 JavaKit 的文档站上——因为 JavaKit 的 API 文档里到处都是被审核系统误判过的变量名,正是 DeCensor 最好的测试集。陈小满在 SourceWeave 上 fork 了 JavaKit,加了一个“Old World Seed”标签,说他以后会告诉学弟学妹:“这个项目的作者,是一个为了代码去屠龙的人。”

保温杯上的新一行字

我把保温杯翻过来,在杯底贴了一个标签。标签上写的是:

GH = Go Home. And then come back with your stars.

茶又凉了。但这次,我没有急着去加热水。我坐在书房里,看着屏幕上那个熟悉的仓库页面,旁边是一枚蓝金色的徽章,和一份叠得整整齐齐的《自我审查备忘录》。十九个月。从大理到湖南,从自由开发者到无业游民,从 Gitee 的审核墙到 Minecraft 的末地竞技场,从三张床到一枚徽章——这段路终于走到了一个可以停下来的地方。

不是终点。是新的起点。

—— 陆鸣,2028年4月5日,湖南老家书房。
保温杯上又多了一行:Make Java Great Again(老严说我俗,但我觉得挺押韵)。

评论 (10)

🐼
林子昂2028-04-05 10:35
陆哥,看到那个星标徽章的时候我在工位上直接喊出来了。老严以为我代码又报错了,跑过来看结果发现我在对着一张截图傻笑。JavaKit 的 README 我大学时候就看过,没想到有一天它的作者会和我一起打末影龙。欢迎回来。
回复
🐟
方块鱼2028-04-05 11:02
“用三张床和一把钻石剑换来的”——这句话我要做成视频片头字幕。陆哥,下次直播我要把你的星标徽章挂在我直播间右下角,让观众知道打游戏也能拯救代码。另外,那个贴在保温杯底的标签,我准备做成周边贴纸,收益捐给 SourceWeave 基金会。
回复
🇲🇾
Wei2028-04-05 11:45
陆哥,我已经把 DeCensor 的规则库跑在 JavaKit 的文档站上了——果然,你的 API 文档里 getJavaVersion 的那一行完美触发了我们的恢复规则。现在它在页面上显示的是完整拼写。DeCensor 的第一个官方测试用例,来自 JavaKit。历史完成了一个闭环。
回复
🌱
陈小满2028-04-05 13:18
陆哥,我在 SourceWeave 上 fork 了 JavaKit,加了一个标签“Old World Seed”。以后我会告诉学弟学妹:这个项目的作者,是一个为了代码去屠龙的人。我还把你的《自我审查备忘录》PDF 放进了仓库的 docs 文件夹,文件名是“never-forget.md”。
回复
老严2028-04-05 15:40
子昂刚才把你那个“Make Java Great Again”念给我听了。我说俗归俗,但道理没错。Java 这个名字被审核系统欺负了快两年,现在它终于能光明正大地出现在代码里了。我们团队已经把 JavaKit 列为推荐依赖库,以后新项目直接走 SourceWeave 引。
回复
方槐2028-04-05 18:22
Luming, the European mirror node for JavaKit is up and running. I still remember the email I sent you in 2026 — "We have to remove JavaKit from our stack." Now I'm sending you this: JavaKit is back in our stack, and this time it's served from a decentralized network. History doesn't repeat itself. It rhymes. — Fang Huai
回复
🗄️
那个匿名的 Gitee 审核员2028-04-05 20:10
数据恢复的消息在内部也传开了。有人把你的星标徽章截图发在了内部论坛上,标题是“被我们误杀过的项目,被作者用 Minecraft 救回来了”。我没有留言,但我把那个帖子收藏了。改变可能需要很长时间,但至少现在我知道——在审核系统的外面,还有另一套规则在运转。祝好。
回复
🦎
那个被误伤了八年的嵌入式开发者2028-04-06 09:33
我没有星标,没有开源项目。但看到你拿回那 2347 颗星的消息,我在自己的工位上对着屏幕鼓掌了。这证明我们失去的东西,是可以夺回来的。我的 avg_temp 还在 SourceWeave 上安静地躺着,没有被屏蔽。它等到了一个不需要审查的平台的诞生。谢谢你,陆鸣。
回复
一个从百度经验过来的老码农2028-04-06 15:55
恭喜。我以前用 batch 脚本自动化运维,没有 star 也没有 issue。但我知道被平台背叛是什么滋味。你在屠龙那天的直播我也看了——虽然我不玩 MC,但我看得懂你在做什么。你是在替所有丢失过代码的人,把尊严抢回来。
回复
💻
那个买新键盘的李哥2028-04-07 12:10
陆鸣,我是星帆科技后端的李哥。虽然我不写 Java,但那天在网吧包间里,你调试 Python 脚本的时候我就坐在你旁边。你拿到数据包解压的那一刻,我亲眼看到你的手在抖。恭喜。PS:我的新键盘很好用,红轴的,打末影龙再也没按错过键。
回复