主頁 >  其他 > 源代碼從 300 行到 172,000 行,它用了 23 年

源代碼從 300 行到 172,000 行,它用了 23 年

2021-04-04 13:16:41 其他

【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人成長,快速實作職場進階!

在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272165.html

標籤:AI

上一篇:高效率OCR場景文字圖片合成工具發布!

下一篇:這是什么“虎狼之詞”啊!!!程式員的健康問題,看一線老中醫怎么說!!!

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more