写点什么

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

  • 2021-04-08
  • 本文字数:3313 字

    阅读完需:约 11 分钟

全世界下载量超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-04-08 15:543150
用户头像

发布了 761 篇内容, 共 509.7 次阅读, 收获喜欢 1570 次。

关注

评论

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

2021最新最全Java基础高频面试题汇总(1W字详细解析)

爱好编程进阶

Java 面试 后端开发

Ceph实战(一)-分布式存储介绍与原理架构概述

爱好编程进阶

Java 面试 后端开发

IDEA中Maven依赖下载失败解决方案

爱好编程进阶

Java 面试 后端开发

区块链+数字资产,未来财富的新起点

CECBC

数字化时代,SaaS软件如何成为国产化替代的轻骑兵?

小炮

研讨会回放视频:如何提升Jenkins能力,使其成为真正的DevOps平台

龙智—DevSecOps解决方案

CI/CD CloudBees

阿里云云效研发协同服务相关协议条款 |云效

阿里云云效

云计算 阿里云 运维 研发 研发协同

SWOOLE高性能内存数据库的使用和配置教程

CRMEB

Filter 过滤器和 Listener 监听器

爱好编程进阶

Java 面试 后端开发

Docker镜像超详细介绍

爱好编程进阶

Java 面试 后端开发

数据仓库架构演变和建设思路

五分钟学大数据

数据仓库 4月月更

2021金九银十最新338道大厂Java架构面试高频题目+答案详解

爱好编程进阶

Java 面试 后端开发

索信达获金融街资本1亿元投资

索信达控股

架构实战毕业总结

王大胖

游戏+NFT,脱虚向实外的另一可行场景

CECBC

Docker:第七章:Docker搭建私服-本地镜像库

爱好编程进阶

Java 面试 后端开发

LLVM之父Chris Lattner:编译器的黄金时代

OneFlow

编程语言 编译器 LLVM 加速器 MLIR

海口等保测评公司有几家?具体在哪里?哪里可以查到?

行云管家

网络安全 等保 等保测评 海南 海口

用数字“钥匙”打开发展新空间

CECBC

36天突击腾讯终拿Offer! Redis、高并发

爱好编程进阶

Java 面试 后端开发

如何选择合适的 Neo4j 版本(2022)

亮小猪

neo4j 图数据库 图算法

Android ANR分析(trace文件的产生流程)

北洋

4月月更

Alibaba内部流行的“Java突击宝典”

爱好编程进阶

Java 面试 后端开发

如何以Sonar为例创建一个适用与所有企业的测试步骤

阿里云云效

阿里云 运维 测试 sonar 研发测试

关于Signal Catcher线程中对线程的理解

北洋

4月月更

一级等保怎么做?要收费吗?等保要求是什么?

行云管家

网络安全 等保 等保2.0 一级等保

53w字!阿里首推系统性能优化指南太香了,堪称性能优化最优解

爱好编程进阶

Java 面试 后端开发

2022年4月中国数据库排行榜:春风拂面春意暖,分数回升四月天

墨天轮

数据库 opengauss 国产数据库 KingBase gbase8a

解锁OpenHarmony技术日!年度盛会,即将揭幕!

OpenHarmony开发者

OpenHarmony 技术日

数字化时代,企业运维面临现状及挑战分析解读

云智慧AIOps社区

大数据 运维 数字化时代 大数据运维

2020年4面美团(多线程+redis

爱好编程进阶

Java 面试 后端开发

全世界下载量超100亿,curl怎样成为影响世界的开源项目?_开源_DANIEL STENBERG_InfoQ精选文章