写点什么

全世界下载量超 100 亿,curl 怎样成为影响世界的开源项目?

2021 年 4 月 08 日

全世界下载量超100亿,curl怎样成为影响世界的开源项目?

本文最初发布于 DANIEL STENBERG 的个人博客,遵循CC BY-SA 4.0许可,由 InfoQ 中文站翻译并分享。


作为当今用途最广的开源项目之一,curl 在全世界有超过 100 亿的安装。从红帽 Linux、Debian 再到 Mac OS、Windows 10、iOS 和 Android,甚至包括任天堂 Switch、Xbox 和索尼 PS5 以及电脑游戏、媒体播放器和机顶盒等,都不乏 curl 的身影。本文作者回顾了 curl 过去 23 年的发展历程,揭示了一个小型开源项目怎样保持生命力,发展成一个影响世界的存在。


curl 的官方生日是 1998 年 3 月 20 日,这一天,第一个可构建出工具名为 curl 的 tar 包发布。之所以将其命名为 curl 4.0,因为我保留了之前那个名字的版本号。准确的说,它是从 3.12 的基础上过来的,而 3.12 是是旧名 urlget 的最后一个版本。



当然,curl 并非那天凭空产生的。其历史可追溯到一年多以前:1996 年 11 月 11 日发布的名为 httpget 的工具。它由 Rafael Sagula 开发,我发现这个项目并开始做贡献。httpget 0.1 是一个不到 300 行代码的 C 文件。(对于这个项目,我现在拥有最早的源代码是 httpget 1.3,可以在这里找到)


之所以关注这个项目,是因为我想有一个小工具可以定期从网站上下载货币汇率,这样我就能在我的 IRC bot 货币兑换中提供它们。


当时迅速做出的那些小决定,后来在很大程度上影响和塑造了我的生活。从那以后,curl 一直是我的主要爱好之一——当然,从几年前开始,它成了我的全职工作。


就在 1996 年 11 月的同一天,Wget的第一个版本发布(1.4.0)。在发布前,这个项目也以另一个名字存在——回想起来,我都不知道它,我使用 httpget 来完成任务。也可能我发现它了,然后因为它太小又忽略了它。Wget 1.4.0 的 tar 包只有 171 KB。


不久后,我承担起 httpget 维护者一职,并进一步扩展它的功能。后来,我添加了 Gopher 和 FTP 支持,并将其重命名为 urlget(这是由于我发现货币汇率也托管在这些服务器上)。1998 年春天,我还添加了对 FTP 上传的支持,这个工具的名称又一次产生误导性,我需要重新给它命名。


起名真的很难。我想要一个经典 Unix 风格的简短名字。我没有花太多时间,因为我很快就想到了一个有趣的词。该工具作用在 URL 上,而且是一个互联网客户端工具。' c '(客户端)和 URL 使' cURL '看起来非常贴切有趣,而且简短,还非常“unixy”。


那时,我就已经希望 curl 成为 Unix 中使用管道和标准输出这一传统的一部分。我希望 curl 的工作方式像 cat 命令,但是针对 URL,在默认情况下,它会将 URL 发送到终端的 stdout。就像 cat 一样。然后,我们就可以“看到”该 URL 的内容。字母 C 的发音是 see,所以可以读作“see URL”。我喜欢双关语,这样就很好了。(但我还是会把它读成“kurl”!)



这是最初的 Logo,由 Henrik Hellerstedt 在 1998 年创建


我打包了 curl 4.0,并在那个周五进行发布。那时,它有 2200 行代码。在我几个月后发布的 curl 4.8 版本中,感谢文件中提到 7 位贡献者。我们花了将近 7 年的时间才将贡献者发展到 100 位。现如今,该文件列出了超过 2300 个名字,每年还要增加几百个。这不是一个人的项目!

没有什么特别的事情发生

curl 并没有取得巨大的成功。一些人发现了它,在第一个版本发布 14 天后,我上传了 4.1 版本,其中有一些 Bug 修复,一个延续几十年的传统开始了:不断发布更新,修复 Bug。“尽早且经常发布”是我们一直坚持的口号。


1998 年年底,当发布超过 15 个版本时,我们在网站上发布了这样一段精彩的声明:



curl 网站 1998 年 12 月的截图

下载量 300!

对于这个项目和工具,我从来没有任何征服世界的想法或宏大愿景。我只是希望它能有效、快速、可靠地进行互联网传输,这就是我正在努力实现的。


为了更好地向世人提供良好的互联网传输体验,我们引入了 libcurl 库,它在 2000 年夏天首次发布,使项目跃升了一个层次。随着时间的推移,libcurl 已经发展成为事实上的互联网传输 API。


今天,在它 23 岁生日之际,这仍然是 curl 的重点,也是我在这里所做的。我相信,如果 curl 取得了一定程度的成功,那主要是因为一个特殊的品质。一个词:


坚持


我们坚持、忍耐,不断打磨。我们在这里是为了长远利益。我花了 2 年时间,它才达到 300 次下载量。又过了 10 年左右,它才真正被广泛使用。


2008 年,curl 网站每月的下载数据量约为 100GB。这个月,它的下载数据量为 15600GB——有趣的是,156 个月的时间里数据量增加了 156 倍!当然,大多数用户不会从我们的网站上下载任何东西,他们是从他们的发行版或操作系统提供商那里获得 curl。


curl 在 1998 年底被红帽 Linux 采用,在 1999 年 5 月成为 Debian 的一个软件包,2001 年 8 月,Mac OS X 10.1 也提供了这个工具。如今,Windows 10、iOS 和 Android 设备也默认安装了这款软件。不用说还有游戏机,包括任天堂 Switch、Xbox 和索尼 PS5。


有趣的是,两大主流的移动操作系统都在使用 libcurl,但它们并没有提供 API,所以很多应用程序,包括很多非常大的应用程序都捆绑了自己的 libcurl 构建,包括 YouTube、Skype、Instagram、Spotif、谷歌 Photos、Netflix 等。这意味着,如今大多数智能手机用户的手机中都有许多不同的 curl 安装。


此外,libcurl 还被许多电脑游戏所使用:《侠盗飞车 5》、《堡垒之夜》、《绝地求生》、《荒野大镖客:救赎 2》等等。


libcurl 还被用在了媒体播放器和机顶盒中,如 Roku、Apple TV。


curl 和 libcurl 在几乎所有的互联网服务器上都可以使用,并且是 PHP 默认的传输引擎,而在全球近 20 亿个网站中,有近 80%使用了 PHP。


汽车现在已经联网了。如今,libcurl 几乎被用于每一辆现代汽车之间的数据传输。


然后还有媒体播放器、厨房和医疗设备、打印机、智能手表和许多“智能”的物联网的东西。实际上,几乎所有的连接互联网的设备都在运行 curl。


如果我说,curl 在全世界超过 100 亿个装置中存在时,我并没有夸大其词。


孤独的强者

在过去几年里,我尝试了几次,看看 curl 是否可以加入一个管理组织,但没有一个人接受我们,我认为这是最好的结果。我们是完全独立的,独立于任何组织和公司。我们想怎么做就怎么做,不用按别人的规矩来。在过去的几年里,赞助和捐赠的速度确实加快了,我们的状况很好,可以为 Bug Bounty 计划提供丰厚的奖励。


我相信,我和 wolfSSL 合作提供的curl商业支持只会让 curl 变得更强大:它让我可以花更多的时间在 curl 上,让更多的公司觉得使用 curl 更有保障,最终让我们所有人都受益。


1996 年底的 300 行代码到 2021 年 3 月已经增长到 17.2 万行。

未来展望

我们最重要的工作是“不要惹是生非”。在尽可能多的平台上提供你能找到的最好、最可靠的互联网传输库。


但为了保持吸引力,我们也需要与时俱进,适应新出现的协议和使用习惯。支持新的协议版本,支持更好的做事方式,并随着时间的推移,以负责任的方式弃用不好的东西,同时避免对用户造成伤害。


我认为,在短期内,我们希望确保HTTP/3能够正常工作,让Hyper后端变得非常出色,看看rustls后端会如何发展。


23 年过去了,我们还是没有任何宏大的愿景或路线图作为指导。我们以互联网和用户为引领。不断向前,不断攀登!


curl 路线图

关于 23 岁的 curl,有这样 23 个数值

在这个生日的前几天,我用#curl23标签发布了该项目的 23 个“curl 数值”。以下是这 23 个数字和事实:


  1. 代码从 1998 年 3 月的 2200 行增长到 2021 年的 17 万行;

  2. 14 个不同的 TLS 库获得了 curl 的支持;

  3. 2348 名贡献者让 curl 成了今天的样子;

  4. 至今已经发布了 197 个版本;

  5. 有 6787 项 Bug 修复记录在案;

  6. 全世界 100 亿安装,让 curl 成为全世界使用最广泛的分发;

  7. 有 871 名提交者提供过代码;

  8. curl docker 官方镜像拉取数为 9.35 亿(每秒 83 次拉取);

  9. 至少有 22 个汽车品牌在它们的车辆中运行 curl;

  10. 每次提交和拉取请求都要运行 100 个 CI 作业;

  11. Daniel 已经在这个项目上花了 15000 个小时的业务时间;

  12. 前 2 大移动操作系统都在它们设备的操作系统中使用了 curl;

  13. 已知有 86 种不同的操作系统在运行 curl;

  14. 2.5 亿台电视在运行 curl;

  15. curl 支持 26 种不同的传输协议;

  16. 有 36 种不同的第三方库可以根据需要构建,供 curl 使用;

  17. 有 22 种不同的 CPU 体系结构运行 curl;

  18. 已为 Bug Bounty 支付了 4400 美元;

  19. curl 有 240 个命令行选项;

  20. curl 网站每月有 15600GB 的数据下载量;

  21. 有 60 种 libcurl 绑定,让程序员可以使用任何语言轻松地传输数据;

  22. 与 curl 操作相关的 RFC 总计有 1327449 个单词;

  23. 一位创始人兼首席开发者一直留在这个项目中。


原文链接:


https://daniel.haxx.se/blog/2021/03/20/curl-is-23-years-old-today/?fileGuid=VTYjN8XNNQsJxEFc

2021 年 4 月 08 日 15:541848
用户头像

发布了 351 篇内容, 共 152.1 次阅读, 收获喜欢 775 次。

关注

评论

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

区块链如何助力“养老助老”(下)

茜茜公主

区块链+ 七日更 3月日更

VMware Workstation

梅花鹿鹿

虚拟机

自动炒币机器人系统开发|自动炒币机器人APP软件开发

开發I852946OIIO

系统开发

mysql常用命令

Sakura

寻找被遗忘的勇气(五)

Changing Lin

3月日更

Nginx 模块系统:前篇

soulteary

nginx 动态模块

瓦力量化交易系统开发|瓦力炒币机器人软件APP开发

开發I852946OIIO

系统开发

作业 - 第五周

eva

用户画像实践

Jackchang234987

如何解决移动直播下的耳返延迟问题

融云 RongCloud

音视频 移动直播

基于 Wasm 和 ORAS 简化扩展服务网格功能

阿里巴巴云原生

Docker 容器 微服务 云原生 k8s

【邀请有礼】全球视频云创新挑战赛邀请有礼:参与 100% 获得 “壕” 礼,更有机会获得 JBL 音箱、Cherry 机械键盘

阿里云视频云

阿里云 音视频 比赛 音视频开发

从JVM底层原理分析数值交换那些事

云流

Java JVM 架构、

当开工季遇上采购季,云通信主播教你怎么省心又省钱

阿里云Edge Plus

云通信

字节资深面试官带你深度剖析:Java面试技术点+互联网面试真题解析

Java成神之路

Java 程序员 架构 面试 编程语言

“金三银四”面试别慌!最新阿里P8内部Java面试涨薪秘籍!全网最新已开源

Java架构之路

Java 程序员 架构 面试 编程语言

终于讲清楚了:深入理解Java 应用程序中 final 关键字的各种使用场景

老王说编程

Java final

区块链如何助力“养老助老”?(上)

茜茜公主

区块链+ 七日更 3月日更

DataPipeline通过华为鲲鹏兼容性认证,以自主科技创新推动中国信息产业进步

DataPipeline

大数据 数据融合

Linkerd or Istio?哪个Service Mesh框架更适合你?

xcbeyond

Service Mesh istio 技术选型 Linkerd 3月日更

使用 Puppet 进行配置管理

信码由缰

DevOps 配置管理

舒畅,阿里大牛终于把困扰我多年的「Spring全家桶」讲明白了!十年IT老兵亲述Spring实战经验

Java架构之路

Java 程序员 架构 面试 编程语言

火币量化交易系统开发|火币炒币机器人软件APP开发

开發I852946OIIO

系统开发

融云CEO韩迎:飞信十年珍贵历练,做To B别有取巧的心思

融云 RongCloud

IM RTC 飞信

【回溯算法】组合总和升级版 ...

宫水三叶的刷题日记

LeetCode 数据结构和算法 面试数据结构与算法

想看新指标?教你轻松写prober插件

Obsuite

运维 滴滴夜莺 Obsuite prober插件

企业级链表设计思路:

大忽悠

3月日更

2021“金三银四”刷爆朋友圈的“Java核心面试知识手册”这波Offer稳了

Java架构之路

Java 程序员 架构 面试 编程语言

小树量化交易系统开发|小树炒币机器人软件APP开发

开發I852946OIIO

系统开发

女神节|深情告白季,程序员和他的浪漫

InfoQ写作平台官方

活动专区

当AI开始改造“文房四宝”:腾讯教育的脑洞与逻辑

脑极体

4月17日 HarmonyOS 开发者日·上海站

4月17日 HarmonyOS 开发者日·上海站

全世界下载量超100亿,curl怎样成为影响世界的开源项目?-InfoQ