源代码从 300 行到 172,000 行,它用了 23 年
【CSDN 编者按】历经 197 次版本更新,源码从 1996 年的 300 行到如今的 172,000 行,月下载量高达 15,600 GB,支持 26 种传输协议……cURL 作者 Daniel Stenberg 在个人网站回顾了该项目历史。
作者 | Daniel Stenberg
译者 | 弯月
出品 | CSDN(ID:CSDNnews)
以下为译文:
cURL 于 1998 年 3 月 20 日正式发布。就在那一天,我发布了一款名叫 cURL 的工具源代码。我给这款工具取名叫做 cURL 4.0,因为我保留了以前使用过的版本号。或者更确切地说,我将版本号从 3.12(之前叫做 urlget)升级到了最新版本 4.0。
当然,cURL 并不是在那一天一蹴而就的。cURL 的诞生可以追溯到一年多以前:1996 年 11 月 11 日,一款名叫 httpget 的工具发布了,由 Rafael Sagula 开发,我找到了这个项目,并开始向其贡献代码。httpget 0.1 只有一个 C 文件,代码不足 300 行。
当初,我参加这个项目,是因为我想拥有一个小工具,定期从网站上下载货币汇率,并将下载到的数据提供给我的 IRC 机器人。
当时,这只是一个很不起眼的决定,却没想到对我接下来的生活产生了这么大的影响。从那以后,cURL 就成为了我最喜爱的业余项目之一,几年后,又成了我的全职工作。
Wget 第一版(1.4.0)也发布于 1996 年 11 月的这一天。这个项目之前发布的时候采用了另一个名称,但我当时并不知道这个工具,因此我采用了 httpget。也有可能我知道这个工具,但因为大小的问题放弃了它。Wget 1.4.0 压缩包为 171KB。
不久之后,我成为了 httpget 的维护人员,并进一步扩展了它的功能。后来,我又添加了对 Gopher 和 FTP 的支持,并将它重命名为 urlget。1998 年春天,我还添加了 FTP 上传的支持,该工具的名称再次引起了误解,因此我需要再想一个名字。
起名字太难了。我想找一个简短的、经典 Unix 风格的单词。没过多久,我就想到了一个有趣的单词,这个工具适用于 URL,并且是互联网客户端的工具,“ c ”代表客户端,再加上“ URL ”,所以就组成了“ cURL ”,这个名字看起来很贴切,很有意思,而且简短,非常 Unix 风。
后来,我想让 cURL 遵循 Unix 的传统,支持管道和 stdout 等。我希望 cURL 能够像 cat 命令一样使用,只不过处理对象是URL,因此可以默认将 URL 发送到终端中的 stdout。就像 cat 一样。然后,我们就可以查看(“ see ”)URL 的内容了。字母 C 的发音与“ see ”相同,所以“ cURL ”也就是“ see URL ”,一语双关。(只不过发音还是“ kurl ”!)
我打包好了 cURL 4.0,并发布到了全世界。当时代码为 2200 行。几个月后,我完成了 cURL 4.8 版,这要感谢另外 7 位开发人员做出的贡献。后来,又经过了将近 7 年的时间,cURL 的开发人员终于到了 100 位。如今,我们的开发人员已经超过了 2300 名,而且每年都有数百名新增人数。cURL 并不是一个单人项目!
没有大起大落
cURL 没有经历过大起大落。在第一版发布 14 天后,我上传了 4.1 版,其中包含一些错误修复程序,之后便延续了数十年的传统:继续发布新功能和错误修复程序。“快速频繁的发布”是我们一直坚持的口号。
1998 年晚些时候,我们已经完成了 15 次发布,并在网站上发表了以下声明:
300 次下载!
我从来没幻想过这个项目和工具能够征服全世界。我只希望它能够快速可靠地完成互联网传输,而这也是我努力实现的目标。
为了向全世界提供更好的互联网传输,我们引入了 libcurl 库,该库于 2000 年夏季首次交付使用,而这也让我们的项目达到了更高的水平。如今,libcurl 已发展成为互联网传输的标准 API 。
现在 cURL 已经 23 岁了,cURL 的工作重点以及我的主要任务始终没有变。我相信,随着时间一天天过去,如果 cURL 能取得一定的成功,那一定是因为 cURL 的一个特殊的品质,用一个词概括就是:坚持!
我们一直在坚持。我们坚忍不拔,一直在努力。经过了两年的时间,cURL 才获得了 300 次下载。又经过了 10年 的时间,才真正得到了广泛使用。
2008 年,cURL 网站每月提供的下载数据量大约为 100 GB,而本月它的下载服务数据已经超过了 15,600GB,在过去的 156 个月中,cURL 的数据量增加了156 倍!但是实际上,大多数用户都不会从我们的网站下载任何内容,他们的url 是从发行版或操作系统提供商那里获得的。
1998 年末,cURL 被红帽 Linux 采用,1999 年 5 月发展成为了 Debian 软件包,并于 2001 年 8 月在 Mac OS X 10.1 中发布。如今,Windows 10、iOS 和 Android 设备中也默认采用了 cURL。还有各种游戏机,任天堂的Switch、Xbox 和索尼的 PS5 等等。
有趣的是,尽管两大主流移动操作系统都使用了libcurl,但是它们并没有提供API,因此许多应用(包括许多超大容量应用)都捆绑了自己的 libcurl 构建:YouTube、Skype、Instagram、Spotify、Google Photos、Netflix 等。这意味着大多数智能手机用户的手机中都单独安装了很多次curl。
此外,一些热门的计算机游戏也使用了 libcurl:侠盗猎车手 V 、堡垒之夜、绝地求生、荒野大镖客 2 等等。
libcurl 还为十亿五千万台电视的媒体播放器和机顶盒(如 Roku,苹果 TV )提供了支持。
几乎每一台互联网服务器中都用到了 curl 和 libcurl,而且 PHP 的默认传输引擎也是 cURL和 cURL。全世界有将近 20 亿个网站,其中 80% 都可以找到 cURL 和 libcurl 的身影。
如今,汽车也进入了互联网时代,而几乎每辆现代汽车都使用 libcurl 在车辆之间来回传输数据。
除此之外,还有媒体播放器、家电、医疗设备、打印机和智能手表等许许多多的“智能”物联网设备。凡是通过互联网传输数据的设备都运行了 curl。
我没有夸大其词,全球 cURL的安装次数超过了一百亿。
孤独而坚强
多年以来,我曾尝试过几次让 cURL 加入某个上层组织,但是没有人接受我们,也许这就是最好的安排。我们完全独立,不依赖于任何组织或公司。我们可以按照自己的意愿行事,不必遵循任何规则。在过去的几年中,我们拿到的赞助和捐赠大幅增加,因此能够支付大额的漏洞赏金等。
我和 wolfSSL 提供了 cURL 的商业支持,为的只是让 cURL 更加强大,我相信:我可以花费更多时间来开发 cURL ,随着 cURL 的发展壮大,越来越多的公司都会感觉越来越安全,最终 cURL 可以让我们每个人都变得更好。
截止到 2021 年 3 月,当年的那 300 行代码已经增长到了 172,000 行。
未来
对我们来说,最重要的工作是确保稳定性。我希望打造最可靠的互联网传输库,同时支持更多平台。
但是,为了保持吸引力,我们还需要与时俱进,适应新的协议和习惯。支持新的协议版本,提供更好的处理方式,在弃用一些功能的时候,本着为用户负责的心态,谨慎为之,避免伤害用户。
短期内,我认为我们需要努力确保 HTTP/3 正常工作,打造出色的 Hyper 后端,并决定 rustls 后端的去向。
经过了 23 年的发展,我们仍然没有宏伟的目标可以为我们提供指导。我们会紧跟互联网和用户的脚步,勇往直前!
23 个 curl 的统计数字
在 23 周年之际,我统计出了如下 23 个有关 curl 的数字:
-
1998 年 3 月,cURL 只有 2200 行代码,但到了 2021 年,经过了 23 年的发展,cURL 的代码行数已经增长到了 170,000 行。
-
经过了 23 年的发展,cURL 支持的 TSL 库多达 14 种。
-
在这 23 年间,共计 2,348 位贡献者为 cURL 提供了帮助。
-
在这 23 年间,cURL 一共经历了 197 次发布。
-
在这 23 年间,cURL 一共修复了 6,787 个 bug。
-
23 岁的 cURL 在全球范围内的安装次数超过了一百亿。
-
在 cURL 项目发展的 23 年间,我们一共收到了来自 871 位贡献者提交的代码。
-
在这 23 年间,cURL 的官方 docker 镜像一共收到了 9.35 亿次拉取(每秒 83 次拉取)。
-
在这 23 年间,至少 22 个汽车品牌使用了 cURL 。
-
在这 23 年间,cURL 项目每次收到提交和请求都将运行 100 个 CI 作业。
-
在这 23 年间,我在 cURL 项目上总共付出了 15,000 多个小时。
-
经过了 23 年的发展,两大主流移动操作系统及其设备都采用了 cURL。
-
在这 23 年间,已知已有 86 种不同的操作系统运行了 cURL。
-
在这 23 年间,共计 2.5 亿台电视机运行了 cURL。
-
23 岁的 cURL 可以支持 26 种传输协议。
-
在使用 cURL 的时候,有 36 个不同的第三方库可供选择安装。
-
在这 23 年间,已有 22 种不同 CPU 架构运行了 cURL 。
-
在这 23 年间,我们为漏洞赏金共支付了 4400 美元。
-
23 岁的 cURL 共有 240 个命令行选项。
-
经过了 23 年的发展,如今 cURL 网站每月下载量高达 15,600 GB。
-
经过了 23 年的发展,如今的 libcurl 一共有 60 个绑定,程序员可以通过任何语言轻松地传输数据。
-
在这 23 年间,cURL 的操作所涉及的相关 RFC 协议的总字数为 1,327,449 字。
-
在 23 周年之际,cURL 拥有一名创始人兼首席开发。
原文链接:https://daniel.haxx.se/blog/2021/03/20/curl-is-23-years-old-today/
声明:本文由CSDN翻译,转载请注明来源。