从 160 行代码到 200 亿安装量:Curl 的传奇故事
在 FOSDEM 2024 的大会上,一位低调而充满智慧的人物引起了广泛关注。他就是 Daniel Stenberg,那位创造了广受欢迎的 curl 数据传输实用工具的开发者与维护者。他向在场的观众分享了自己的成功秘诀:“成功的开源项目并非源于天才或魔法技巧。”
curl,这个看似简单的命令工具,已经深入到全球约 200 亿台设备中,成为了互联网下载文件的必备利器。然而,对于 Stenberg 来说,curl 的诞生却始于 1996 年的那 160 行代码 ——“仅仅是几屏幕的内容”。
“你开始试着使用它…… 你开始摆弄它…… 从小事做起。做你想做的任何事情。给予足够的时间,享受其中的乐趣。”Stenberg 的话语中透露出一种从容与坚定,仿佛在告诉我们:成功并非遥不可及,而是源于对梦想的执着追求和对过程的享受。
“对吧?这就是开始一个开源项目的方式。你有一种渴望,于是你开始行动。只要趣味在,何乐而不为呢?” 这句话仿佛是一盏明灯,照亮了许多对开源项目充满热情却犹豫不决的人的道路。
在 curl 的 28 年发展历程中,Stenberg 究竟学到了哪些宝贵的经验?在最近的一次演讲中,他分享了自己的洞察与收获,为开源力量在维持开发项目中的重要作用提供了有力的见证。
Stenberg 也表达了对早期启发他的所有人的感激之情。他承认,没有这些人的支持与帮助,curl 不可能取得如今的成就。此外,他还特别提到了 curl 庞大的用户群体和那些至今仍在支持 curl 的专注贡献者团队。正是这些用户的反馈和贡献者的努力,使得 curl 能够不断完善和进步。
在 curl 项目的头两年开发中,Daniel Stenberg 见证了一个令人瞩目的里程碑 —— 惊人的 300 次下载。回忆起这段经历,他幽默地预测,“按照这个速度,再过 20 年,我们可能会有 3000 次下载!”
在一本免费在线电子书中,Stenberg 坦诚地承认,curl 最初只是一个 “玩具项目”。然而,正是开源社区的灵感和力量,让这个 “玩具” 逐渐蜕变为一个全球知名的工具。他钦佩开源作者的才华,并渴望成为其中的一员。因此,即使在 “开源” 这个术语被正式采用之前,Stenberg 就已经开始将他的代码开源。
在 FOSDEM 的演讲中,Stenberg 向听众们分享了他的见解:“如今,开源已经变得容易得多。回到 1998 年或 1996 年,几乎没有人了解开源,它只是少数怪人的小圈子。” 他回忆起,1998 年互联网的总人口约为 4 千万人,“这基本上就是今天开源开发者的数量。”
此外,正如 Stenberg 在他的书中所说,“如今的基础设施、工具、资金等资源比以往任何时候都更加完善、更加免费,这为开源项目的发展提供了前所未有的机遇。” 向听众们分享了他的这一观点:“我认为未来会更容易、更美好,因为所有这一切都将得到改善。” 他强调,今天的开源开发者们拥有更多的资源和支持,这使得他们能够更轻松地参与到开源项目中来。
Stenberg 也给听众提到了这一点:吸引和留住贡献者是开源项目成功的关键之一。他分享了一个有趣的统计数据:curl 项目拥有 1240 名贡献者,但其中超过 65% 的人只贡献过一次,之后就没有再参与。然而,当一个新的、有经验的贡献者带着令人惊叹的补丁出现时,他们所带来的影响是巨大的。
面对这种情况,Stenberg 给出了他的建议:“让别人帮助你变得容易。” 他鼓励开源项目的维护者们要减少贡献者的阻力,让他们能够更轻松地参与到项目中来。同时,他也强调了开源项目要保持乐趣和活力的重要性,因为这也是吸引和留住贡献者的重要因素之一。
在 Stenberg 的眼中,开源项目是一个充满惊喜和乐趣的世界。他相信,只要我们有足够的资源和支持,就能够迎接各种方向的惊喜,创造出更加美好的未来。
随着 curl 被安装在约 200 亿台设备上,其影响力和重要性不言而喻。然而,正如 Stenberg 所指出的,这也存在一个缺点:“如果你的代码在很多地方运行,你真的能确定,当你发布一个版本时,它不会导致半个互联网崩溃吗?”
“承认自己的错误。学习、适应、增加更多测试。” 这是 Stenberg 给出的答案。
他向听众说,每个人都会犯错,但关键在于如何处理这些错误。他认为,真正重要的是对待错误的态度和方法,而不是错误的数量或严重程度。
他进一步解释道:“在我们的案例中,在几乎所有人的案例中 —— 我们只能做我们所能做的。” 他强调了通过易读的代码、文档、测试、代码分析器、模糊测试和漏洞赏金等方式来提高代码质量和安全性。这些都是他们为应对挑战而采取的措施。
Stenberg 也讲到,面对挑战可能会让人心力交瘁。但他坚信,从错误中学习并持续改进是通往成功的关键。他鼓励大家要从中吸取教训,并不断努力提高自己。
最后,他强调了乐趣在开源工作中的重要性:“而且要继续享受乐趣,因为如果不是有趣的,你不会花那么多时间在上面。其他人也不会这么做。” 他相信,只有保持对开源工作的热爱和乐趣,才能持续激发创造力和创新精神。
Stenberg 坦言了也许是最棘手的问题:“人比代码更难对付。”
Stenberg 凭借多年的经验,揭示了开发者每天所面临的问题。他指出,与来自不同领域、文化和语言背景的人进行有效沟通是一项艰巨的任务。更令人惊讶的是,他警告说,只有 “极小部分” 的反馈是积极的。开发者经常听到关于 bug 和缺陷的反馈,其中既有真实的,也有因为误解而产生的。当系统正常工作时,人们往往保持沉默,但一旦出现问题,负面声音便会此起彼伏。
在演讲中,Stenberg 进一步指出,当一个看似简单的 bug 长时间未得到修复时,人们会感到惊讶。
当被问及现在与一个更大的代码库有什么不同时,Stenberg 坦率地表示:“实际上没有什么不同。” 他解释说,无论是在大型还是小型代码库中,开发者都会面临类似的沟通挑战和问题。今天的开源世界仍然充满了 bug、抱怨和困惑,但这也为开发者提供了不断学习和进步的机会。
在 Stenberg 的书中,我们得以窥见一个开源开发者鲜为人知的日常生活。他不仅仅是一个代码编写者,更是成千上万绝望用户的最后希望。这些用户因为各种原因无法从原始供应商那里得到帮助,只能转而向 Stenberg 求助。
这些求助邮件的背后,是用户们的痛苦、困惑和绝望。他们 “尝试了一切,翻遍了每一块石头”,但问题仍未得到解决。
正是这些邮件让 Stenberg 有了深入了解人们生活的机会。他收到了关于汽车、GPS 系统、视频游戏等各种问题的求助邮件。有时候,他甚至需要 Google 来理解问题的具体内容。这些邮件让他看到了开源软件在人们生活中的实际应用,以及它如何影响他们的日常生活。
其中也不乏一些令人啼笑皆非的情况。有用户因为自己的游戏账户被封禁而向他求助,还有用户警告他可能是某个黑客组织的一部分。但更多的,是那些充满绝望和期待的邮件,让 Stenberg 深感责任重大。
面对这些邮件,Stenberg 也曾经感到困扰和无奈。他承认,有时候他会选择停止回复,因为这似乎只会让用户更加生气。但他也意识到,这种做法并不正确。尽管他不能解决所有问题,但他仍然尽力提供帮助和建议。
尽管有时会收到一些充满敌意和误解的邮件,但 Stenberg 从不轻易放弃。他深知,在这些邮件背后,是用户们的真实需求和痛苦。因此,即使面对敏感和复杂的情况,他仍会花时间撰写回复,尤其是当用户似乎是诈骗的受害者或处于真正脆弱的情况下。
这种坚持和付出并没有白费。几个月后,一位曾经向 Stenberg 求助的用户再次给他发来邮件道歉。这封邮件不仅代表了用户对 Stenberg 工作的认可,更是对他无私奉献和坚持精神的肯定。
上个月,Stenberg 宣布自己为 curl 项目贡献了高达 18001 次的提交,其中最后的 1000 次提交仅用了 422 天时间。
在二月初的一篇博客文章中,Stenberg 明确指出,curl 的成功并非他个人的单打独斗。事实上,该项目已经汇聚了超过 1200 名提交作者,他们来自不同的背景,拥有不同的专长,但都为 curl 的成长和发展做出了巨大的贡献。更令人惊讶的是,每个月平均有 25 位新的提交作者加入这个大家庭,而每个月大约有 10 位新的提交者开始为项目贡献代码。在这样一个庞大的团队中,Stenberg 的所有提交所占的比例在过去多年里持续缩小,但他对此并不介怀。
在他的最后一张幻灯片中,Stenberg 更是用简洁明了的方式传达了这个信息:curl 和所有伟大的开源项目都始于简单的东西。
他向听众表示,他并不特别,也没有做出什么天才之举。他只是长时间地致力于这个项目,因为有一个想法让他觉得很有趣,于是他就去做了。
Stenberg 说,成功并没有捷径,只有不断打磨和付出。他相信,只要你花足够的时间在某件事情上,它最终会变得相当不错。
“就是这么简单。我认为你也能做到。”
David Cassel,居住在旧金山湾区的科技新闻人。拥有超过二十年的科技新闻报道经验,他的文字曾在 CNN、MSNBC、华尔街日报互动版、Salon、Wired News、Suck.com 等知名媒体上亮相。
声明:本文为 InfoQ 翻译整理,未经许可禁止转载。
零一万物刷榜,Zilliz 呛声:面向投资人编程;李彦宏称“程序员将会消失”,周鸿祎回怼;TikTok 危在旦夕 | Q资讯
微信扫码关注该文公众号作者