【CSDN编者按】历经197次版本更新,源码从1996年的300行到如今的172,000行,月下载量高达15,600GB,支持26种传输协议……cURL作者DanielStenberg在个人网站回顾了该项目历史。
作者|DanielStenberg
译者|弯月
出品|CSDN(ID:CSDNnews)
以下为译文:
cURL于1998年3月20日正式发布。就在那一天,我发布了一款名叫cURL的工具源代码。我给这款工具取名叫做cURL4.0,因为我保留了以前使用过的版本号。或者更确切地说,我将版本号从3.12(之前叫做urlget)升级到了最新版本4.0。
当然,cURL并不是在那一天一蹴而就的。cURL的诞生可以追溯到一年多以前:1996年11月11日,一款名叫httpget的工具发布了,由RafaelSagula开发,我找到了这个项目,并开始向其贡献代码。httpget0.1只有一个C文件,代码不足300行。
当初,我参加这个项目,是因为我想拥有一个小工具,定期从网站上下载货币汇率,并将下载到的数据提供给我的IRC机器人。
当时,这只是一个很不起眼的决定,却没想到对我接下来的生活产生了这么大的影响。从那以后,cURL就成为了我最喜爱的业余项目之一,几年后,又成了我的全职工作。
Wget第一版(1.4.0)也发布于1996年11月的这一天。这个项目之前发布的时候采用了另一个名称,但我当时并不知道这个工具,因此我采用了httpget。也有可能我知道这个工具,但因为大小的问题放弃了它。Wget1.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”也就是“seeURL”,一语双关。(只不过发音还是“kurl”!)
我打包好了cURL4.0,并发布到了全世界。当时代码为2200行。几个月后,我完成了cURL4.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网站每月提供的下载数据量大约为100GB,而本月它的下载服务数据已经超过了15,600GB,在过去的156个月中,cURL的数据量增加了156倍!但是实际上,大多数用户都不会从我们的网站下载任何内容,他们的url是从发行版或操作系统提供商那里获得的。
1998年末,cURL被红帽Linux采用,1999年5月发展成为了Debian软件包,并于2001年8月在MacOSX10.1中发布。如今,Windows10、iOS和Android设备中也默认采用了cURL。还有各种游戏机,任天堂的Switch、Xbox和索尼的PS5等等。
有趣的是,尽管两大主流移动操作系统都使用了libcurl,但是它们并没有提供API,因此许多应用(包括许多超大容量应用)都捆绑了自己的libcurl构建:YouTube、Skype、Instagram、Spotify、GooglePhotos、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,600GB。
经过了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翻译,转载请注明来源。