維護一個開源項目25年是什麼體驗?服務器
你們好,我是卡頌。markdown
最近看公衆號後臺用戶數據,關注個人朋友一多半(58%)是26~35歲。curl
這個年紀,可能已經被社會捶過幾年,對成功一詞有了本身的理解。工具
雖然不知道什麼樣的人生纔是成功的人生,可是有這樣一個開源項目:測試
開發至今,維護了25年url
全球總下載量大概爲100億次(全球網民平均每人下載2.5次)spa
相信你也會贊成:這是個成功的開源項目,他就是大名鼎鼎的curl
。命令行
接下來讓咱們看看,是什麼樣的品質才能讓一個項目在歷史的長河中沉澱下來?code
結果極可能和你的直覺相反哦~orm
curl
是一款請求數據的命令行工具,支持多種協議。它的名字是client
+ url
的意思(客戶端的url
工具)。
做者是Daniel Stenberg
。
在90年代初期,正是IRC
(一種聊天協議,能夠理解爲命令行版本的QQ)繁榮的時期。
Daniel
和朋友開發了一款IRC
聊天機器人。接下來,他決定爲機器人增長匯率兌換功能。
爲此,須要經過http Get
請求調用匯率接口。爲了實現這個功能,Daniel使用了一款名爲HTTPGet
的工具。
單一的公共接口顯然是不可靠的。不久後Daniel又發現了一臺提供貨幣匯率接口的Gopher
服務器,以及一臺FTP
服務器。爲此,他必須在原有工具基礎上支持這兩種協議。
隨着支持的協議愈來愈多,HTTPGet
這個名字已經名存實亡。因而,Daniel
將其更名爲curl
。
在隨後的20多年裏,Daniel
將curl
的實現推廣到全平臺,圍繞獲取數據這一需求,不斷迭代。
這就是curl
的故事。
不久前Daniel
在推上談到:
天天在家人休息後,我會繼續處理
curl
的工做1~2小時。日積月累,在curl
上我大概花了1.5w小時
做家Malcolm Timothy Gladwell
在《異類》中提出一萬小時理論:
人們眼中的天才之因此卓越非凡,並不是天資超人一等,而是付出了持續不斷的努力。1萬小時的錘鍊是任何人從平凡變成大師的必要條件
是Daniel
做爲專家的專業性促成了curl
的成功嗎?顯然他並不這麼認爲。
在談到curl
爲什麼能長期得到社區承認時,Daniel
總結了兩點因素:
不少庫做者將curl
做爲底層依賴。他們之因此這麼作,是由於curl
作出了一致性承諾,並在漫長的歲月中遵照了這個承諾。
curl
會不會忽然沒人維護了?我承諾了不會,我遵照承諾
這個API
會不會忽然廢棄了?我承諾了不會,我遵照承諾
若是一個項目在25年間都遵照了承諾,那麼大機率在將來他也是可靠的。
如今不少大廠造的輪子,理念很棒。可一旦須要投入生產時就會讓人犯嘀咕:這會不會是個KPI
項目?要是之後沒人維護了怎麼辦?
高速迭代的互聯網,一致性是稀缺的。
不少項目維護者不喜歡新人就拼寫錯誤這樣的問題提PR
,認爲這是水PR
行爲。與他們相反,Daniel
很鼓勵這種行爲。
在他看來,大部分人(包括他本身)都是普通人,沒有誰能一上手就對項目瞭如指掌。從簡單的PR
開始是明智的選擇。
可能這個PR
是糾正拼寫錯誤,下個PR
就是修改測試用例,再下一個就是修改項目bug
了。
長遠看,成功的項目沒有天才,只有默默堅持的普通人。
強如正義聯盟還有戰力值只有5的蝙蝠俠呢【手動狗頭】
互聯網真是太快了,薪資長得快,頭髮掉得快,老人淘汰快。
這讓人產生了一個感受:當碼農就是用命換一筆快錢。
對普通人來講,年薪百萬不是常態,996也不是常態。這些都只是時代背景下,人生歷程的一小站。
若是在互聯網這麼強調快、精英範的領域,最成功的產品反而是一羣普通人、靠漫長的歲月積累起來的。
那咱們爲何不試着和時間作朋友?放下焦慮,你超棒的。