一个只占几百K内存的小工具,静静地运行在全球超过 200 亿台 设备上。
从你手中的 iPhone、Android 手机,到 Windows、Linux 、macOS系统;
![]()
从 Nintendo Switch、Xbox、PS5 等游戏机,到智能手表、汽车、打印机、智能厨房、医疗设备、机器人......
![]()
只要需要网络数据传输,就有它的身影。
它甚至运行在两个星球上:地球和火星(2021年随着毅力号登录火星)。
![]()
这就是 cURL。
![]()
它的作者,瑞典程序员丹尼尔(Daniel Stenberg),用了 28 年的时间,把一个不起眼的小工具打磨成了世界上最流行的软件。
然而,开发了如此伟大的工具,丹尼尔不仅没有因此过上“人生赢家”的生活,甚至还收到过死亡威胁。
![]()
在FOSDEM 大会上,丹尼尔讲述了几十年来把 cURL 打造为全球基础设施的酸甜苦辣,投入与坚持,非常值得一看。
0 1
伟大的项目,都始于微小的需求
cURL 的诞生,最初只是为了满足一个再普通不过的小需求:写个自动脚本,从某个网站上下载汇率数据。
![]()
和大多数程序员一样,他一开始在网上找了个叫 httpget 的开源项目,用得不亦乐乎。
为了让它更好用,他陆续增加了对 Gopher 和 FTP 协议的支持。后来顺势接管了该项目,成为了维护者。
随着功能越来越多,继续叫 httpget 显得不够准确了。1998 年,丹尼尔正式将其改名为 cURL。
那一年,cURL 仅有 300 次下载。但丹尼尔觉得这已经“酷毙了”,因为300 个用户已经远远超过了他的朋友数量!
![]()
当时的丹尼尔完全没有“改变世界”的野心,他的数学甚至算得很可爱:“2年有了 300 个用户,那再过 20 年,岂不就能有 3000 个用户了?”
0 2
极致的坚持
很少有项目能一夜爆红。
开源世界里最不缺的就是创意和同类软件,当 cURL 取得巨大成功后,很多人问丹尼尔究竟凭什么?
丹尼尔的回答非常朴素:“我只是投入了更多的时间。”
![]()
每个人都有家庭和生活,要把时间留给开源,就必须牺牲其他娱乐。
比如,丹尼尔从来不玩电脑游戏,他把节省出来的所有闲暇时间都砸在了 cURL 上。
在 cURL 还不出名的时候,大部分时间只有丹尼尔一个人在默默开发。那种孤独,就像在黑夜中独自漫长地行走。
![]()
为了给项目“增加一点人气”,甚至发生过一件让人心酸又好笑的事:丹尼尔曾假装成其他用户,给自己的项目提交 Pull Request,热切期盼能有路人来评论互动。
但大多数时候依然无人问津,丹尼尔只能默默切回主账号,自己把请求合并,然后继续往前走。
(这不禁让人想起早期的腾讯QQ,马化腾假扮女生陪用户聊天)
0 3
沉重的责任
任何软件都有漏洞,但对于一个安装量超过 200 亿次的软件来说,任何一个哪怕极小的安全漏洞,都可能引发全球性的基础设施危机。
丹尼尔坦言,当严重漏洞出现时,他经常焦虑得夜晚难以入睡。
但这是属于他自己的软件,他必须扛起这份责任。
![]()
为了把风险降到最低,丹尼尔建立了一套极其严苛的品质保障体系:
编写极具可读性的代码
撰写极其完善的文档
进行浩瀚如海的单元测试
使用各种现代化工具进行静态分析
引入高强度的模糊测试(Fuzzing)
漏洞赏金计划:拿出真金白银,奖励那些发现漏洞的安全人员
(2026年,由于很多程序员用AI提交了大量无效漏洞,丹尼尔暂时关闭了这个计划)
0 4
复杂的人心
![]()
写代码很容易,写得不好可以随时重构、调试、换个算法重写。
但与人打交道,才是开源维护者面临的最大挑战。
随着项目规模越来越大,各种声音也随之而来:
有人指责他选错了编程语言(无论选哪种语言都会被骂);
有人抱怨技术太老、太笨、太烂;
还有人因为 cURL 无法解决他们特定的私人问题而大发雷霆(哪怕 cURL 根本就不是为了解决那种问题而设计的)。
只要有一点让人不满意,就会有人用极其咄咄逼人的语气提出质问。
为了维护一个友好的社区氛围,丹尼尔练就了一套情绪管理法则:回复时做深呼吸;如果依然觉得被冒犯或不安,就先放下,绝对不立刻回复。
开源就是这样:只要一切正常,绝不会有人夸你一句;
可一旦出现一个小漏洞,尤其是比较愚蠢的 Bug 时,马上就会有无数人疯狂抱怨。
至今,cURL 拥有 200 亿次安装,但仅有 1,240 名贡献者,而且大部分人只是提交了一个修复拼写错误的补丁就再也没出现过。
但偶尔也会有惊艳的开发者突然出现,带着一份对 cURL 架构理解极深的高质量 Patch,这足以让丹尼尔兴奋许久。
0 5
真实的死亡威胁
为了符合开源协议,丹尼尔把自己的个人邮箱写在了许可证的 Copyright页面上。
![]()
这引发了一连串让人苦笑不得的奇葩事件。由于 cURL 被广泛嵌入到各种软件中,许多普通用户在软件报错时,翻到了版权声明里的邮箱,把丹尼尔当成了“官方万能客服”:
![]()
![]()
![]()
丹尼尔在苦笑之余也大为震撼:“Cool,原来我的 cURL 还运行在这么多酷炫的设备里!”
但最可怕的,是随之而来的黑客攻击事件与死亡威胁。
曾有一名用户的系统遭到了黑客攻击,损失了价值数百万美元的项目。
在排查过程中,受害者在日志里看到了 cURL 的踪迹,竟误以为是丹尼尔开发了攻击软件,把满腔怨气撒到了丹尼尔身上,甚至给他发出了极其疯狂的死亡威胁。
![]()
面对真正的生命安全威胁,丹尼尔选择果断报警。
几个月后,该受害者才终于冷静下来,意识到自己的愚蠢并向丹尼尔发信道歉。
0 6
一切源于“Have Fun”
![]()
丹尼尔从来不认为自己是个天才是多么惊世骇俗的人物,他只是想开发一个好用的网络数据传输工具。
![]()
但是一个人怎么可能“辛辛苦苦”在同一个开源项目上坚持 28 年?
丹尼尔在演讲中多次强调一句话:Have Fun。
Linux 之父也告诉我们:Just for Fun。
没错,一切源于兴趣。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.