“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

发布了 683 篇内容, 共 390.6 次阅读, 收获喜欢 1498 次。

关注

评论

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

双11在即,分享一些稳定性保障技术干货

老张

系统稳定性 大促 生产环境全链路压测

实用推荐系统:寻找有用的用户行为

博文视点Broadview

恒源云(GPUSHARE)_U1S1,1年1度GPU云种草大会

恒源云

深度学习

用一套代码实现APP和小程序

Speedoooo

容器 移动开发 ios开发 APP开发 Andriod开发

2020 更新 - 腾讯 Android 面试 (已拿到月薪22K offer)

android 程序员 移动开发

TDSQL | 深度解读HTAP系统的问题与主义之争

腾讯云数据库

tdsql 国产数据库

2020-Android-面试重难点(万字篇),android屏幕适配的五种方式

android 程序员 移动开发

JPA + EclipseLink + 云平台 = 运行在云端的数据库应用

Jerry Wang

数据库 Cloud Cloud Native 11月日更

TDSQL将发布免费版本,助力国产数据库生态完善

腾讯云数据库

数据库 tdsql

【Java原理剖析系列】深度synchronized工作原理分析

洛神灬殇

java 11月日更

2020你与字节跳动只差这份笔记,我靠着这份笔记,工资从15K到了40K

android 程序员 移动开发

浅析openLooKeng安全认证机制

openLooKeng

大数据 ldap openLooKeng 安全认证

TDSQL已助力20余家金融机构完成核心替换

腾讯云数据库

tdsql 国产数据库

2020Android开发者学习路线(快速篇),分析android进程管理机制

android 程序员 移动开发

2020上半年百度Android岗(初级到高级)面试真题全收录

android 程序员 移动开发

2020倒计时,大厂核心送给每一个脚踏实地努力着的Android程序员,逆风前行(1)

android 程序员 移动开发

教你如何在Spark Scala/Java应用中调用Python脚本

华为云开发者联盟

Java Python spark JVM Spark Scala

飞鹤乳业数智化转型之路

大咖说

云计算 数字化转型 数字化 企业上云

硬核干货!TDSQL全局一致性读技术详解|

腾讯云数据库

tdsql 国产数据库

2020 年需要关注的 5 大 Android 开发技术(1),Android知识总结

android 程序员 移动开发

超简单教程!自动部署openLooKeng

openLooKeng

大数据 计算引擎 openLooKeng 安装部署

新版本发布!openLooKeng v1.4.0上线

openLooKeng

大数据 计算引擎 openLooKeng

使用JPA + Eclipselink操作PostgreSQL数据库

Jerry Wang

eclipse 数据库 11月日更

助力邯钢工业4.0!TDengine在深度(平潭)节水减排项目中的应用

TDengine

数据库 tdengine 后端

2020 国内互联网公司的Android工程师薪酬排名!看看你是什么水平

android 程序员 移动开发

2020Android 开发年度总结:“这一年里我到底做了些啥,面试阿里的时候一定会问到的

android 程序员 移动开发

模块三作业

doublechun

「架构实战营」

2020Android-目前最稳定和高效的UI适配方案!你头秃都没想到还能这样吧!

android 程序员 移动开发

2020Android面经,历时一个半月,斩获3个大厂offer,移动端开发工程师面试题

android 程序员 移动开发

2020一个Android大牛的面试经历分享(金九银十面试30多家公司)

android 程序员 移动开发

2020你与字节跳动只差这份笔记,我靠着这份笔记,工资从15K到了40K(1)

android 程序员 移动开发

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