Git誕生20周年!大佬Linus十天寫出的項目,徹底變革全球軟件開發
轉眼間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)。