快捷搜索:

您的位置:澳门新葡4473网站 > 项目 > 谷歌想实现自己的 curl,为什么?

谷歌想实现自己的 curl,为什么?

发布时间:2020-05-06 02:11编辑:项目浏览(86)

    cURL 创始人 Daniel Stenberg 发文指出谷歌正在实现自己的 curl。

    笔者今日在浏览 Stack Overflow 的时候,看到有开发者发表了一个这样的问题 —— “What is the incentive for curl to release the library for free?”,大意是想知道 curl 作者为什么会选择将其开源并且免费提供。

    图片 1

    cURL 是一个利用 URL 语法在命令行下工作的数据传输工具,于1998年首次发布,支持 DICT、FILE、FTP、FTPS、Gopher、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、Telnet 和 TFTP。cURL 的原作者是 Daniel Stenberg (目前是 cURL 的核心开发者),同时也是 IETF HTTPbis 工作组的资深成员。

    cURL 是一个网络数据传输项目,通常说 cURL 是指 curl 命令行工具,它支持 DICT、FILE、FTP、FTPS、Gopher、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、Telnet 与 TFTP 等协议,而 curl 的底层使用的是 libcurl 库,libcurl 与 curl 组成了 cURL 项目。

    图片 2

    Chromium bug 团队近日表示他们将基于 Chromium 网络栈 Cronet 实现一个名为 libcrurl 的库,用来提供部分 libcurl API。对于 Daniel 来说,谷歌很可能是要实现一个他们自己的 curl,所以后边可能出现一个基于 libcrurl 的“crurl”。

    这名开发者表示最近开始在自己的 VC++ 项目中使用 libcurl,并且了解到 curl 和 libcurl 不但开源,而且完全免费。他好奇作者这样做纯粹是为了帮助开发者吗?

    图片 3

    没想到 curl 作者本尊 Daniel Stenberg 亲自现身回答,他详细解答了这位开发者的疑问。以下内容编译自 Daniel 在问题下的回答。

    至于为什么要这么做,Chromium bug 团队表示,使用 Cronet 实现 libcurl 将允许开发人员使用 Chrome 网络栈的实用程序,而无需学习新的接口及其相应的工作流。理想情况下,这将增加 Cronet 的可用性,并通过第一方或第三方应用全面改进 Cronet 的采用。

    Daniel 在 1998 年创建了 curl 项目,他编写了最初的 curl 版本,并创建了 libcurl 库。到目前为止,代码仓库包括的 24000 次 commit 有超过一半是 Daniel 本人提交的,他依然是项目的核心开发者。Daniel 表示已将 curl 视为自己的孩子。

    Daniel 觉得谷歌这样的逻辑是有道理的:“理想情况下,Google 最终解决此问题的团队会发现并修复我们的代码和 API 中的问题,这可以改进 curl,同时也可以使更多用户了解 libcurl 与其 API。而如果工程师最终实现了一个比 libcurl 更好的库,并且使用相同的 API,那么开发者就可以直接选择他们认为更好的库。”

    Daniel 在完成 curl 的第一版开发后就将其开源了,和许多开源作者一样,Daniel 表示之所以选择开源 curl,是因为他使用过很多开源软件,并从中获益甚多,而回馈开源世界的最好方式当然就是「开源」,而且他也想跟其他开源作者一样 cool。

    然而问题是,Daniel 认为这项工作并不简单,首先是 libcurl API 已经开发了近 20 年,它的许多功能、选项和微妙的行为可能无法轻易地直接模仿;另一方面,Cronet 与 libcurl 的工作方式完全不同,因此需要投入足够多的人力与时间来将 libcurl API 整合到 Cronet 上。

    因为开源,来自全球各地的成千上万开发者参与进来一起帮助改进 curl,包括项目本身、文档、网站以及其他的周边细节。Daniel 认为,如果当初没有选择开源,curl 和 libcurl 绝对不会有今天的成就。现在的贡献者名单已超过 1900 个名字,并且每年保持新增几百个名字的速度。

    “我认为引入 API 不成熟的实现会给开发者带来困扰,因为他们很难理解它是个什么 API 以及与 libcurl 的区别”,像前边说的,Daniel 认为如果没有投入很大的工作量,那 libcrurl 不可能提供兼容 libcurl 的 API,而这种分裂将导致文档问题,甚至连基本的项目名都可能混淆,因为“libcrurl”/“crurl”与原本的“libcurl”/“curl”太像了,使用者可能误认为它们只是拼写错误。

    正因为开源和不受限制的使用许可,curl 和 libcurl 推出后就被许多产品采用,并被迅速集成到无处不在的操作系统和 Linux 发行版上,最终覆盖的范围超乎想象。

    虽然说理解谷歌的做法,并且也知道他们有权利这么去做,但是 Daniel 文章最后还是发出了疑问:curl 支持完整的 API,提供完全向后兼容性,同时在大量不同的平台和架构上可以相同的方式工作,并且免费,还经过多年实战考验,那么在这种情况下,开发者有什么理由要去使用另一个翻版的呢?

    最后也正因为 curl 的这种“无处不在”,它被全球各地的所有人使用 —— 从而成为了一个事实上的标准「传输库」

    图片 4

    据统计,curl 在全球拥有大约 60 亿的安装量,它运行在数十亿部移动电话、Windows 10 设备、游戏机和电视机上,毫无疑问 curl 是世界上使用最广泛的网络传输库。而这离不开最初创建它的人选择将它开源。

    有意思的是,Daniel 的这篇博客评论中有人将谷歌的这一动作与微软备受诟病的“拥抱、扩展再毁灭”策略联系了起来。

    Daniel 表示不会为 curl 选择一个“合适”的许可证进而向用户收取费用,过去不会,未来也不会这样的计划。

    (文/开源中国)    

    为什么现在仍参与到 curl 的开发中?

    Daniel 解释了自己仍继续参与开发 curl 并免费提供给大家使用的原因(Daniel 表示他不能代表其他的 curl 开发成员,每个人都有自己参与到其中的原因,所以下面只是他的个人观点):

    1. 我认为这仍然是一件值得去做的事。我为自己所取得的成就感到骄傲,我也真心想让世界变得更美好,但我觉得 curl 在这方面做得很少。
    2. 还要修复 bug 和增加新功能!
    3. 虽然 curl 是免费的工具,但我的时间不是,我有一份收入不错的工作来保证生活。curl 获得的捐赠足以维持它的发展,并保证它足够自由和中立而不被任何人和机构所控制。
    4. curl 作为我的业余时间项目已有二十年,而投身到 curl 让我认识到了更多的朋友、改变了我的生活,还把我带到了我曾以为不会去的地方。
    5. 如果能重来,我还是会这样做

    虽然 curl 已有瞩目的成就,但 Daniel 依旧在不断改进它,修复错误、增加功能等,希望能为开发者提供最优秀的文件传输解决方案。

    二十年来,一如既往地坚持一个项目会累吗?Daniel 表示这是当然的,偶尔会感到疲倦,毕竟这不是一项轻松的工作,而且有时候问题会很困难,而外界的声音有时也不是那么友好。但 curl 作为他生命的一部分,经历了困难时刻后,大部分的时光都是很美好的 —— 可以和优秀的人共事,而奖励也不一般:自己编写的这些代码参与到了推动互联网革命发展的进程中。

    会有结束的那一天吗?Daniel 表示 curl 永远不会结束,他认为,到目前为止,开发 curl 是他能想象到的最有趣的工作。即使这项工作已经持续了二十年,他仍然这样认为,并计划坚持下去。

    (文/开源中国)    

    本文由澳门新葡4473网站发布于项目,转载请注明出处:谷歌想实现自己的 curl,为什么?

    关键词:

上一篇:JQUERY1.6 使用方法四 检测浏览器

下一篇:没有了