写点什么

从 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:488087

评论

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

YonTalk 大咖论道:YonBuilder 低代码开发平台能力解析

YonBuilder低代码开发平台

The Foundry Modo 16 Mac版(专业的三维建模软件)

Rose

mac软件下载 Foundry Modo 三维建模软件

卡奥斯赋能发展引擎,“工赋山东”再加“数”!

Openlab_cosmoplat

工业互联网 开源社区

你的留言,我们都收到了

OceanBase 数据库

数据库 oceanbase

理性探讨AIGC未来的发展方向

加入高科技仿生人

人工智能 低代码 AIGC

阿里云加入“一云多芯”应用创新计划,首批通过金融专有云能力评估

云布道师

混合云

格式塔理论

Data 探险实验室

可视化 大屏可视化 可视化看板 大屏布局 仪表板

亮相数字化转型大会!卡奥斯助力两化融合工业转型!

Openlab_cosmoplat

工业互联网 开源社区

一次偶然机会发现的MySQL“负优化”

Java MySQL 数据库 性能优化

前端培训学习的就业前景怎么样

小谷哥

软件测试/测试开发丨做web自动化时,定位元素常用方法有哪些?

测试人

软件测试 自动化测试 测试开发 Web自动化测试

Feast on Amazon 解决方案

亚马逊云科技 (Amazon Web Services)

人工智能

迪士尼的“元宇宙梦”醒了

Openlab_cosmoplat

开源社区 元宇宙

智慧公厕解决方案,光明源方案揭秘

光明源智慧厕所

智慧城市

喜报:旺链科技成为龙芯生态重要合作伙伴

旺链科技

区块链 生态合作

亚信科技AntDB数据库荣获互联网周刊金i奖“2022年度产品”

亚信AntDB数据库

数据库 AntDB 国产数据库 AntDB数据库 企业号 4 月 PK 榜

让ChatGPT手把手教我们学操作系统是一种怎样的体验?

Java全栈架构师

程序员 AI 后端 操作系统 计算机

ChatGPT已能操控机器人,工程师连代码都不用写,网友:微软在搞天网?

Openlab_cosmoplat

人工智能 机器人 开源社区 ChatGPT

如何通过Java代码在PowerPoint 幻灯片中插入公式

在下毛毛雨

PowerPoint 公式 java‘

软件测试/测试开发丨4步,用 Docker搭建测试用例平台 TestLink

测试人

Docker 软件测试 自动化测试 测试开发 testlink

Double-check 技术:Golang 中多线程编程的必备技能

Jack

golang 设计模式

国内外低代码开发平台优劣势一览

YonBuilder低代码开发平台

靠近用户侧和数据,算网融合实现极致协同

阿里云CloudImagine

云计算 边缘计算 边缘云

Mac OS如何显示隐藏文件和文件扩展名

互联网搬砖工作者

苹果电脑删除磁盘分区及双系统分区的办法

互联网搬砖工作者

不会PS没关系,AI拼图技术已能以假乱真|斯坦福研究

Openlab_cosmoplat

开源社区 ps

焱融科技荣获爱分析·信创产品及服务创新奖

焱融科技

#高性能 #分布式文件存储 #文件存储 #全闪存储 #容器存储

如何当个优秀的文档工程师?从 TC China 看技术文档工程师的自我修养

NebulaGraph

技术文档

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