維護一個開源專案25年是什麼體驗?
大家好,我是卡頌。
最近看公眾號後臺使用者資料,關注我的朋友一多半(58%)是26~35歲。
這個年紀,可能已經被社會捶過幾年,對成功一詞有了自己的理解。
雖然不知道什麼樣的人生才是成功的人生,但是有這樣一個開源專案:
-
開發至今,維護了25年
-
全球總下載量大概為100億次(全球網民平均每人下載2.5次)
相信你也會同意:這是個成功的開源專案,他就是大名鼎鼎的curl
。
接下來讓我們看看,是什麼樣的品質才能讓一個專案在歷史的長河中沉澱下來?
結果很可能和你的直覺相反哦~
curl的故事
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也不是常態。這些都只是時代背景下,人生歷程的一小站。
如果在網際網路這麼強調快、精英範的領域,最成功的產品反而是一群普通人、靠漫長的歲月積累起來的。
那我們為什麼不試著和時間做朋友?放下焦慮,你超棒的。