打开网易新闻 查看精彩图片

开源社区有个潜规则:造轮子容易,让人愿意用难。Duck框架的作者显然不信这个邪,72小时搓了个短链服务Snip,结果GitHub星标三天破千,Issue区却吵成了菜市场。

这事有意思的点在于:一个后端框架的开发者,突然跨界做前端工具,还开源了。

短链服务这赛道,Bitly(比特利)和TinyURL(微网址)把肉吃干净了,剩下的汤里全是自托管玩家。Duck框架的作者叫了个板——用他的框架从零造一个,顺便证明自家工具链能扛住生产环境。

「我就是想试试Duck能不能72小时出活」

「我就是想试试Duck能不能72小时出活」

作者在Reddit技术区的原话很直白:「Templates let you quickly answer FAQs or store snippets for re-use」——这套模板系统本是为框架文档设计的,结果被他用在了短链的自定义跳转页上。

技术细节扒出来是这样的:Duck框架用Rust(一种系统编程语言)写的,主打「编译期检查一切」,Snip的代码量控制在800行以内,依赖项只有5个。对比市面上用Node.js(一种JavaScript运行环境)堆出来的同类项目,依赖树动辄上百个,这算是把「极简」写进了DNA。

但GitHub的Star数涨得比预期快。第一天47颗,第三天直接破千,Issue区涌入两类人:一类是来问「能不能加自定义域名」的产品经理型用户,另一类是Rust老炮儿质疑「为什么不用Actix-web(另一种Rust Web框架)」。

评论区的一场微型战争

评论区的一场微型战争

吵起来的导火索是一条被折叠的评论。有人贴了个性能对比:Snip的QPS(每秒查询率)在单核环境下跑不过用Go语言写的同类工具,作者回复「Feel free to ask any questions」——这句模板式回应被截图转发了二十多遍。

打开网易新闻 查看精彩图片

技术社区的刻薄在此刻显形。高赞回复说:「Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink」——这是GitHub的隐藏评论提示语,被原封不动抄来讽刺作者「删评控场」。

作者没删评,但也没再回复那条性能对比。三天后他推了个更新,把路由层重写了,QPS提升了40%,提交信息就一行字:「Hide child comments as well」——又是GitHub的UI文案,被拿来当黑色幽默。

这种「用平台提示语当暗号」的沟通方式,成了Snip社区的独特黑话。

短链工具的技术考古

URL缩短的本质是哈希碰撞的艺术。把任意长链接压成6位字符,需要62进制(大小写字母+数字)的编码空间,理论容量是568亿条。但实际运行中,过期清理、防钓鱼、访问统计才是吞代码的巨兽。

Snip的选择很克制:不做访问统计,不做防钓鱼,只做「带模板系统的跳转」。这个减法让代码量压到极限,但也意味着它永远进不了企业采购清单——没有审计日志,合规部门会直接把报告摔在桌上。

作者似乎不在乎。他在文档里写:「For further actions, you may consider blocking this person and/or reporting abuse」——又是GitHub的举报提示语,被拿来当「免责声明」用。

这种玩梗式写作在Hacker News(黑客新闻,技术社区)引发了两极评价。一派认为这是「新世代开源作者的松弛感」,另一派觉得「连文档都不好好写,凭什么让人信任你的代码」。

Duck框架的借势逻辑

Duck框架的借势逻辑

打开网易新闻 查看精彩图片

把时钟拨回三个月前。Duck框架的GitHub仓库还是个位数Star,作者在社区回答技术问题时,每三句就要带一句「你可以用Duck试试」。这种推销密度一度让他被某Rust论坛禁言。

Snip的出现改变了叙事结构。它不再是「求你用我的框架」,而是「我用我的框架造了个能用的东西」——这个逻辑跳转在开发者心理中至关重要。类比一下:卖锤子的说自己锤子好,不如当场钉个柜子。

数据层面的反馈很直接。Duck框架的Star数在Snip发布后涨了340%,Crates.io(Rust包管理平台)的下载量周环比翻倍。更隐蔽的收益是Issue质量:以前全是「怎么安装」的入门问题,现在开始出现「路由宏的生命周期怎么设计」的深度讨论。

框架作者亲自下场做应用,本质是给技术债务写了个可运行的测试用例。

Snip的代码库里有个未公开的脚本,每天自动跑一遍Duck的最新主分支,一旦发现破坏性更新就给作者发邮件。这个「狗粮测试」(dogfooding,指自己用自己的产品)的配置文件,藏在`.github/workflows`目录下,文件名是`eat-what-you-cook.yml`。

开源社区的注意力周期通常不超过两周。Snip的星标增速在第四天明显放缓,但一个意外变量出现了:某加密货币交易所的技术博客发了一篇部署指南,用Snip做内部的短链跳转,配图是自定义的「404页面模板」——页面上画着一只鸭子,配文「This link has been ducked」。

这个谐音梗(ducked/duck,被避开/鸭子)在Twitter(现称X)上被转了400多次,作者本人转发时加了句:「For further actions, you may consider blocking this person」——第四次引用GitHub提示语,这次终于有人问他「你是不是只会这一句」。

他的回复没有再用模板:「我写了800行代码,你只记得我抄了4次系统文案,这说明我的文档确实写得太烂了。」

这个回复下面,第一条评论是:「所以自定义域名功能到底做不做?」