源代码从 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 的数字: 

  1. 1998 年 3 月,cURL 只有 2200 行代码,但到了 2021 年,经过了 23 年的发展,cURL 的代码行数已经增长到了 170,000 行。

  2. 经过了 23 年的发展,cURL 支持的 TSL 库多达 14 种。

  3. 在这 23 年间,共计 2,348 位贡献者为 cURL 提供了帮助。

  4. 在这 23 年间,cURL 一共经历了 197 次发布。

  5. 在这 23 年间,cURL 一共修复了 6,787 个 bug。

  6. 23 岁的 cURL 在全球范围内的安装次数超过了一百亿。

  7. 在 cURL 项目发展的 23 年间,我们一共收到了来自 871 位贡献者提交的代码。

  8. 在这 23 年间,cURL 的官方 docker 镜像一共收到了 9.35 亿次拉取(每秒 83 次拉取)。

  9. 在这 23 年间,至少 22 个汽车品牌使用了 cURL 。

  10. 在这 23 年间,cURL 项目每次收到提交和请求都将运行 100 个 CI 作业。

  11. 在这 23 年间,我在 cURL  项目上总共付出了 15,000 多个小时。

  12. 经过了 23 年的发展,两大主流移动操作系统及其设备都采用了 cURL。

  13. 在这 23 年间,已知已有 86 种不同的操作系统运行了 cURL。

  14. 在这 23 年间,共计 2.5 亿台电视机运行了 cURL。

  15. 23 岁的 cURL 可以支持 26 种传输协议。

  16. 在使用 cURL 的时候,有 36 个不同的第三方库可供选择安装。

  17. 在这 23 年间,已有 22 种不同 CPU 架构运行了 cURL 。

  18. 在这 23 年间,我们为漏洞赏金共支付了 4400 美元。

  19. 23 岁的 cURL 共有 240 个命令行选项。

  20. 经过了 23 年的发展,如今 cURL  网站每月下载量高达 15,600 GB。

  21. 经过了 23 年的发展,如今的 libcurl 一共有 60 个绑定,程序员可以通过任何语言轻松地传输数据。

  22. 在这 23 年间,cURL 的操作所涉及的相关 RFC 协议的总字数为 1,327,449 字。

  23. 在 23 周年之际,cURL 拥有一名创始人兼首席开发。

原文链接:https://daniel.haxx.se/blog/2021/03/20/curl-is-23-years-old-today/

声明:本文由CSDN翻译,转载请注明来源。

<hr>

CSDN协同行业大佬,携手打造13长热门知识图谱及IT成长路线,助力千万IT人成长,快速实现职场进阶!

在这里插入图片描述

已标记关键词 清除标记
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《iPhone开发秘籍:第2版》的源代码 对应的书籍资料见: iPhone开发秘籍:第2版(iphone开发必备佳作,在第一版的基础上进了全面修订和大量扩充) 基本信息 原书名: The iPhone Developer's Cookbook: Building Applications with the iPhone 3.0 SDK (2nd Edition) 原出版社: Addison-Wesley Professional 作者: (美)Erica Sadun 译者: 张彩霞 高颖 易磊 丛书名: 图灵程序设计丛书 移动开发类 出版社:人民邮电出版社 ISBN:9787115240019 上架时间:2010-11-11 出版日期:2010 11月 开本:16开 页码:654 版次:2-1 编辑推荐   iPhone开发的重量级参考书    揭示官方文档未详述的细节    代码示例清晰易懂 内容简介    《iphone开发秘籍(第2版)》提供了关于iphone sdk以及iphone开发的全面信息,对iphone sdk中的各种组件做了深入浅出的介绍,包括iphone 3.0 sdk的所有新增特性,同时对iphone开发的基本流程、基本原理和基本原则进了详细且通俗的讲解。此外,还结合实例讲解了如何开发各种iphone特性,包括视图、视图控制器、警告、表格、媒体、控件、人物、位置和事件。   《iphone开发秘籍(第2版)》适合iphone和mac开发人员。 作译者 作者:(美国)萨丹(Erica Sadun) 译者:张彩霞 高颖 易磊 等 萨丹(Erica Sadun),著名iPhone技术专家,畅销书作者。佐治亚理工学院计算机科学博士。拥有多Apple开发经验。著有30多本技术书籍。涉及编程、数字媒体、网站设计和数码摄影等多个领域。Erica开发了十多个本地应用。他常在其iPhone编程博客发表些极有见地的文章。 目录 封面 -26 封底 -25 扉页 -24 版权 -23 版权声明 -22 译者序 -20 致谢 -19 前言 -18 目录 -9 第1章 iPhone SDK简介 1 1.1 iPhone开发人员计划 1 1.1.1 在线开发人员计划 1 1.1.2 标准开发人员计划 2 1.1.3 企业开发人员计划 2 1.1.4 大学开发人员计划 2 1.1.5 注册 2 1.2 开始 2 1.2.1 下载SDK 2 1.2.2 开发设备 3 1.2.3 模拟器的限制 4 1.2.4 Tethering 4 1.3 理解型号差异 5 1.3.1 摄像头 5 1.3.2 扬声器和麦克风 5 1.3.3 手机 6 1.3.4 Core Location的差异 6 1.3.5 振动支持和接近传感器 6 1.3.6 处理器速度 6 1.3.7 OpenGL ES 7 1.4 平台限制 7 1.4.1 存储限制 7 1.4.2 数据访问限制 7 1.4.3 内存限制 7 1.4.4 交互限制 8 1.4.5 电量限制 8 1.4.6 应用程序限制 8 1.4.7 用户为限制 9 1.5 SDK限制 9 1.6 使用开发人员门户 9 1.6.1 建立团队 10 1.6.2 请求证书 10 1.6.3 注册设备 11 1.6.4 注册应用程序标识符 11 1.6.5 设置 12 1.7 组建iPhone项目 12 1.7.1 iPhone应用程序的主干 13 1.7.2 main.m 14 1.7.3 应用程序委托 15 1.7.4 视图控制器 16 1.7.5 关于本书示例代码的说明 16 1.8 iPhone应用程序组件 17 1.8.1 应用程序文件夹层次结构 17 1.8.2 可执文件 17 1.8.3 Info.plist文件 17 1.8.4 图标和默认图像 19 1.8.5 NIB文件 20 1.8.6 应用程序束中不存在的文件 20 1.8.7 IPA归档 20 1.8.8 沙盒 20 1.9 编程范例 21 1.9.1 面向对象编程 21 1.9.2 模型—视图—控制器 22 1.10 小结 27 第2章 构建第一个项目 28 2.1 创建新项目 28 2.2 用模板构建Hello World应用程序 29 2.2
相关推荐
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页