Git誕生20週年!大佬Linus十天寫出的專案,徹底變革全球軟體開發

明敏 發自 凹非寺量子位 | 公眾號 QbitAI
轉眼間Git誕生20週年了!
為了給Git慶生,如今鮮少公開露面的Linus罕見接受採訪,更多幕後故事被更進一步展開。
2005年4月7日,Linux之父Linus Torvalds,提交了Git的首個版本。
憑藉開源、分散式、本地可控等特點,Git快速從一個小型的個人專案發展成為目前全球最廣泛使用的版本控制系統。
後續隨著GitHub、GitLab等平臺共同推動,Git徹底改變了世界構建軟體的方式,如今已經成為“開源的預設語言”
在AI爆發的時代,Git也是AI開發不可或缺的一部分。幾乎所有知名的AI庫和模型都在GitHub上維護。
不過鮮為人知的是,這個影響全球的系統,最初版本的開發,僅用了10天時間——
當時Linux社群使用的BitKeeper由於授權被取消,不再免費提供給開源社群。
於是,建立了Linux的傳奇大佬Linus Torvalds再次出馬,Git由此而來。

4個月思考+10天執行

對於Linus本人而言,“10天開發Git”這個傳說其實有點誇張。
10天只是最後寫程式碼的時間,構思Git最初的框架實際用了4個月。
當時,Linux開發社群使用的商業軟體BitKeeper在授權上出現了一些問題,將不再免費提供給開源社群使用。
為了解決自用問題,Linus開始想打造一個同類的工具。
實際上,想要復刻一個BitKeeper並不難,比如澳大利亞的Tridge基本是對BitKeeper的逆向,但這違反其規定。
從2004年底,Linus開始思考如何做出一個比BitKeeper更好、但實現方式不同的工具。
它最初的設計目標完全參考Linus個人的開發需求,專為處理Linux核心這樣大規模專案設計。
我會做一些對我有用的東西,不關心其他人。
首個版本最核心關注點如下:
  • 效能至上
  • 分散式架構
  • 資料完整
首先在效能上,Linus的一個目標是Git能在半分鐘內應用大量補丁,50、100個那種。
他認為速度是生產力的關鍵。一方面,要確保常見操作幾乎即時完成,另一方面如果操作是即時的,發現錯誤時就要立即看到結果並繼續修復。
其次,它採用分散式架構。
完全分散式的特性最終使得很多事情變得非常容易,這是Git與之前幾乎所有SCM(原始碼管理)的區別之一。
在設計上,每個儲存庫都是相同且平等的,可以完全本地工作、不依賴網路連線,並簡化了專案分享和協作。
最後,Linus引入了SHA-1雜湊用於檢測資料損壞、確保內容可靠性。
儘管人們覺得使用SHA-1雜湊是一個巨大的錯誤,但是對我來說,SHA-1雜湊從來都不是關於安全性,而是被用於發現數據損壞的。
正是這兩三個核心設計理念,促成了Git的誕生,也解釋了為什麼Git的底層實際上相當簡單。
我把它比作Unix。Unix的一個核心理念就是:一切都是一個過程、一切都是一個檔案,you pipe things。
而在執行方面,Linus的做法也很值得大家參考:
最初階段有一個清晰的想法,先不管之後是否能具體實現。
Git的首個版本,只有大約一萬行程式碼,“甚至可以一口氣讀完”
最初幾年,Git也面臨一些體驗上的爭議。它一開始僅僅是plumbing,根本沒有使用者介面。需要手動執行commit-tree命令、手動將生成的SHA-1雜湊寫入head檔案、沒有git commit這樣使用者友好的命令。
畢竟Linus在最初設計時也沒care這些使用體驗方面的問題。
Junio Hamano是改善Git使用體驗的核心人物。
在初版本釋出4個月後,Linus就將專案轉交給他維護。採訪中Linus也表示,Junio的“品味”和長期奉獻是Git能夠成功的關鍵。
我做Git完全是出於自己的原因。在這20年中,我只花了4個月時間在上面。真正的功勞屬於Junio和所有其他參與Git的人,他們現在做的比我多得多。
大概從2007年-2010年,Git逐漸獲得越來越多人認可,特別是當時的新一代開發者,都會將Git作為首選工具。
Linus認為,讓Git真正流行的關鍵原因是Ruby on Rails社群的採用。後面隨著GitHub平臺出現,進一步利用Ruby on Rails社群的使用者基礎、簡化Git使用體驗、新增社交屬性,讓Git的影響進一步擴大。
由此,Git從一個個人小眾工具,逐步發展為影響全行業的核心正規化。

毒舌暴躁的開源傳奇大佬

最後,再來簡單回顧下Linus Torvalds的傳奇人生。
他1969年出生於芬蘭,現在已經56歲了。
他一個人寫出了兩個改變世界的專案:Linux和Git。它們幾乎影響了整個IT和軟體產業的基礎架構。
而且過程都非常相似:
不滿於當前系統→自己手搓一個開源免費版本→不斷擴充套件功能受到更多開發者關注→最終在全球產生廣泛影響。
1991年初,當時還是赫爾辛基大學學生的Linus開始對作業系統產生興趣。他使用的是基於UNIX的Minix系統,但對其功能限制感到不滿。他想要一個能夠充分利用他的新Intel 386電腦的作業系統。
1991年8月25日,Linus在comp.os.minix新聞組釋出了一條著名的訊息:“我正在做一個(免費的)作業系統(只是個愛好,不會像GNU那樣龐大專業)……”這被認為是Linux專案的正式誕生。
最初Linux只是一個終端模擬器,Linus用它來訪問大學的UNIX伺服器。隨著時間推移,他不斷擴充套件其功能,添加了檔案系統支援和裝置驅動程式。
關鍵轉折點是Linus決定採用GNU通用公共許可證(GPL)釋出Linux。這使得Linux成為一個真正的自由軟體,允許任何人檢視、修改和分發程式碼,只要他們同樣以GPL方式分享修改。
1992年,Linux與GNU專案的工具結合,形成了完整的作業系統。這種結合有時被稱為GNU/Linux。
隨著網際網路的普及,世界各地的開發者開始為Linux貢獻程式碼。Linus採用了分散式開發模式,稽核並整合來自全球的貢獻。
從1994年開始,Linux版本0.95釋出,商業公司如Red Hat開始圍繞Linux建立商業產品和服務。
今天,Linux已成為網際網路基礎設施的核心,為大多數網站伺服器、Android智慧手機和超級計算機提供動力。儘管專案規模已經龐大,Linus仍然擔任最終決策者,管理著Linux核心的開發方向。
不過,除了技術和專案風靡全球,Linus的臭脾氣也是在技術圈廣為人知。
此前在有一次公開演講中,因對NVIDIA拒絕為Linux提供良好驅動支援的態度表示不滿,Linus直接對著攝像機豎起中指說:
NVIDIA,f**k you!
這一幕如今也成為了技術界的經典場景。
此外,他本人也相當毒舌。
看到不好的程式碼就直接在程式碼評審中開噴。
這不僅是垃圾,而且是有史以來最蠢的垃圾。你的程式碼很爛,如果我是你,我就躲到角落裡去哭,然後考慮轉行。
對C++頗有微詞:C++是一種可怕的語言。它在設計上有著根本性的缺陷…那些宣稱C++比C好十倍的人是在撒謊。
以及Git在俚語中的意思是“討厭鬼”。
如此種種,非常多,就不列舉了。
不過在2018年,Linus公開道歉,表示要洗心革面,調整自己的溝通方式。
所以近年來,他脾氣愈加溫和:仍舊直率但是明顯減少了個人攻擊和侮辱性語言。
好是好,就是大家能看的樂子也少了(bushi)
參考連結:https://github.blog/open-source/git/git-turns-20-a-qa-with-linus-torvalds/
一鍵三連「點贊」「轉發」「小心心」
歡迎在評論區留下你的想法!
—  —
速搶席位!中國AIGC產業峰會觀眾報名通道已開啟 🙋‍♀️
最新嘉賓曝光啦 🔥 百度、華為、AWS、MSRA、無問芯穹、數勢科技、面壁智慧、生數科技等十數位AI領域創變者將齊聚峰會,讓更多人用上AI、用好AI,與AI一同加速成長~
4月16日,就在北京一起來深度求索AI怎麼用 🙌 點選報名參會

🌟 一鍵星標 🌟
科技前沿進展每日見

相關文章