速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

从 160 行代码到 200 亿安装量:Curl 的传奇故事

  • 2024-03-21
    北京
  • 本文字数:3881 字

    阅读完需:约 13 分钟

大小:1.83M时长:10:38
从 160 行代码到 200 亿安装量:Curl 的传奇故事

导读:本文介绍了 curl 的创始人 Daniel Stenberg 在 FOSDEM 2024 大会上的演讲内容。Stenberg 分享了他从事开源项目的经历和见解,强调了成功的开源项目背后并没有天才或魔法,只是长期的努力和对创意的持续追求。他还提到了 curl 项目的起源和发展历程,以及在开发过程中所遇到的挑战和教训。尽管 curl 已经成为一项广泛应用的数据传输工具,但 Stenberg 强调了团队合作的重要性,并分享了他对开源社区的感悟和建议。如果你对开源项目、软件开发以及 Daniel Stenberg 的个人故事感兴趣,那么本文将为你提供深入了解和启发。

 

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 的眼中,开源项目是一个充满惊喜和乐趣的世界。他相信,只要我们有足够的资源和支持,就能够迎接各种方向的惊喜,创造出更加美好的未来。

 

200 亿台设备上的 Bug

 

随着 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 等知名媒体上亮相。

 

原文链接

 

https://thenewstack.io/you-too-could-have-made-curl-daniel-stenberg-at-fosdem/

 

声明:本文为 InfoQ 翻译整理,未经许可禁止转载。

2024-03-21 18:487750

评论

发布
暂无评论
发现更多内容

架构实战训练营模块三课后作业

Clarke

百度前端三面面试题全部公开,三面的最后一个问题令我窒息

前端依依

百度 面试 大前端 经验总结

围观|解读新一代企业数字化架构的“三驾马车”

尔达Erda

开源 DevOps 云原生 数字化转型 数字化

VSCode 断点调试 electron-vue 主进程

admin

Vue 调试 Electron

上架一夜遭全网封杀!阿里大牛熬夜半年手码的Java面试指南太强了

Java 编程 程序员 架构师

postgresql主从搭建

阿呆

postgresql

RTC月度小报5月丨教育aPaaS灵动课堂升级、抢先体验VUE版 Agora Web SDK、声网Agora与HTC达成合作

声网

月度小报 行业深度

论工作几年深陷业务代码的程序员如何实现自我提升

北游学Java

Java 程序人生

gitlab忘记root用户的密码

阿呆

gitlab #GitLab

没想到专科的我,仅凭阿里这份JDK源码笔记居然拿到了年薪30W的offer

Java架构师迁哥

上架一夜遭全网封杀!阿里大牛熬夜半年手码的Java面试指南太强了

白亦杨

阿那亚:靠客户反馈驱动企业成长

石云升

商业价值 服务 7月日更

并发问题的源头

Java旅程

Java 并发编程

创业邦专访丨兼容国内外市场的代码分析软件,鉴释科技帮助企业减少bug发生率

鉴释

创业公司

如何使用 Kind 快速创建 K8s 集群?

尔达Erda

开源 云原生 k8s PaaS kind

成为Linux大佬的学习之路-规划

学神来啦

Linux 运维 linux运维 linux学习

hbase运维故障案例分析

GrowingIO技术专栏

大数据 运维 HBase

51CTO专访|鉴释首席架构师刘新铭:让软件开发更安全、更高效

鉴释

编译器

【报名】百度EasyDL研讨会:揭秘智能化硬件AI应用的技术难点与行业落地

百度大脑

人工智能 智能化

我们三岁啦!

鉴释

鉴释课堂丨编译器技术入门知识一网打尽

鉴释

编译器 编译器原理

BoCloud博云:ESB老旧力不能支,微服务独立自治强势替代

BoCloud博云

微服务

敏捷教练的困境与出路:一个管理者的视角

蔡建斌

管理 技术管理 敏捷教练 引航计划 内容合集

工程师文化落地的几点思考

baiyutang

敏捷 敏捷开发 精益开发 精益思想 敏捷管理

直播回顾丨鉴释首席架构师刘新铭为您解读“第一性原则”

鉴释

软件开发 代码质量 软件质量与安全

性能测试误差对比研究(四)

FunTester

性能测试 接口测试 测试框架 测试开发 误差分析

String、StringBuiler和StringBuffer面试那些事

Java旅程

Java 并发

2021全国人工智能师资培训走进北理工,百度飞桨助力高校教师提升AI能力

百度大脑

人工智能 高校

六种主要服务器管理协议简单概述-行云管家

行云管家

行云管家 服务器协议 服务器管理

揭秘百度微服务监控:百度游戏服务监控的演进

百度开发者中心

云计算 微服务 最佳实践 方法论 云原生

性能测试误差对比研究(三)

FunTester

性能测试 接口测试 测试框架 误差分析

从 160 行代码到 200 亿安装量:Curl 的传奇故事_开源_David Cassel_InfoQ精选文章