明敏 發(fā)自 凹非寺
量子位 | 公眾號(hào) QbitAI
轉(zhuǎn)眼間Git誕生20周年了!
為了給Git慶生,如今鮮少公開露面的Linus罕見接受采訪,更多幕后故事被更進(jìn)一步展開。
2005年4月7日,Linux之父Linus Torvalds,提交了Git的首個(gè)版本。
憑借開源、分布式、本地可控等特點(diǎn),Git快速從一個(gè)小型的個(gè)人項(xiàng)目發(fā)展成為目前全球最廣泛使用的版本控制系統(tǒng)。
后續(xù)隨著GitHub、GitLab等平臺(tái)共同推動(dòng),Git徹底改變了世界構(gòu)建軟件的方式,如今已經(jīng)成為“開源的默認(rèn)語言”
在AI爆發(fā)的時(shí)代,Git也是AI開發(fā)不可或缺的一部分。幾乎所有知名的AI庫和模型都在GitHub上維護(hù)。
不過鮮為人知的是,這個(gè)影響全球的系統(tǒng),最初版本的開發(fā),僅用了10天時(shí)間——
當(dāng)時(shí)Linux社區(qū)使用的BitKeeper由于授權(quán)被取消,不再免費(fèi)提供給開源社區(qū)。
于是,創(chuàng)建了Linux的傳奇大佬Linus Torvalds再次出馬,Git由此而來。
4個(gè)月思考+10天執(zhí)行
對(duì)于Linus本人而言,“10天開發(fā)Git”這個(gè)傳說其實(shí)有點(diǎn)夸張。
10天只是最后寫代碼的時(shí)間,構(gòu)思Git最初的框架實(shí)際用了4個(gè)月。
當(dāng)時(shí),Linux開發(fā)社區(qū)使用的商業(yè)軟件BitKeeper在授權(quán)上出現(xiàn)了一些問題,將不再免費(fèi)提供給開源社區(qū)使用。
為了解決自用問題,Linus開始想打造一個(gè)同類的工具。
實(shí)際上,想要復(fù)刻一個(gè)BitKeeper并不難,比如澳大利亞的Tridge基本是對(duì)BitKeeper的逆向,但這違反其規(guī)定。
從2004年底,Linus開始思考如何做出一個(gè)比BitKeeper更好、但實(shí)現(xiàn)方式不同的工具。
它最初的設(shè)計(jì)目標(biāo)完全參考Linus個(gè)人的開發(fā)需求,專為處理Linux內(nèi)核這樣大規(guī)模項(xiàng)目設(shè)計(jì)。
我會(huì)做一些對(duì)我有用的東西,不關(guān)心其他人。
首個(gè)版本最核心關(guān)注點(diǎn)如下:
- 性能至上
- 分布式架構(gòu)
- 數(shù)據(jù)完整
首先在性能上,Linus的一個(gè)目標(biāo)是Git能在半分鐘內(nèi)應(yīng)用大量補(bǔ)丁,50、100個(gè)那種。
他認(rèn)為速度是生產(chǎn)力的關(guān)鍵。一方面,要確保常見操作幾乎實(shí)時(shí)完成,另一方面如果操作是即時(shí)的,發(fā)現(xiàn)錯(cuò)誤時(shí)就要立即看到結(jié)果并繼續(xù)修復(fù)。
其次,它采用分布式架構(gòu)。
完全分布式的特性最終使得很多事情變得非常容易,這是Git與之前幾乎所有SCM(源代碼管理)的區(qū)別之一。
在設(shè)計(jì)上,每個(gè)存儲(chǔ)庫都是相同且平等的,可以完全本地工作、不依賴網(wǎng)絡(luò)連接,并簡(jiǎn)化了項(xiàng)目分享和協(xié)作。
最后,Linus引入了SHA-1哈希用于檢測(cè)數(shù)據(jù)損壞、確保內(nèi)容可靠性。
盡管人們覺得使用SHA-1哈希是一個(gè)巨大的錯(cuò)誤,但是對(duì)我來說,SHA-1哈希從來都不是關(guān)于安全性,而是被用于發(fā)現(xiàn)數(shù)據(jù)損壞的。
正是這兩三個(gè)核心設(shè)計(jì)理念,促成了Git的誕生,也解釋了為什么Git的底層實(shí)際上相當(dāng)簡(jiǎn)單。
我把它比作Unix。Unix的一個(gè)核心理念就是:一切都是一個(gè)過程、一切都是一個(gè)文件,you pipe things。
而在執(zhí)行方面,Linus的做法也很值得大家參考:
最初階段有一個(gè)清晰的想法,先不管之后是否能具體實(shí)現(xiàn)。
Git的首個(gè)版本,只有大約一萬行代碼,“甚至可以一口氣讀完”
最初幾年,Git也面臨一些體驗(yàn)上的爭(zhēng)議。它一開始僅僅是plumbing,根本沒有用戶界面。需要手動(dòng)運(yùn)行commit-tree命令、手動(dòng)將生成的SHA-1哈希寫入head文件、沒有g(shù)it commit這樣用戶友好的命令。
畢竟Linus在最初設(shè)計(jì)時(shí)也沒care這些使用體驗(yàn)方面的問題。
Junio Hamano是改善Git使用體驗(yàn)的核心人物。
在初版本發(fā)布4個(gè)月后,Linus就將項(xiàng)目轉(zhuǎn)交給他維護(hù)。采訪中Linus也表示,Junio的“品味”和長(zhǎng)期奉獻(xiàn)是Git能夠成功的關(guān)鍵。
我做Git完全是出于自己的原因。在這20年中,我只花了4個(gè)月時(shí)間在上面。真正的功勞屬于Junio和所有其他參與Git的人,他們現(xiàn)在做的比我多得多。
大概從2007年-2010年,Git逐漸獲得越來越多人認(rèn)可,特別是當(dāng)時(shí)的新一代開發(fā)者,都會(huì)將Git作為首選工具。
Linus認(rèn)為,讓Git真正流行的關(guān)鍵原因是Ruby on Rails社區(qū)的采用。后面隨著GitHub平臺(tái)出現(xiàn),進(jìn)一步利用Ruby on Rails社區(qū)的用戶基礎(chǔ)、簡(jiǎn)化Git使用體驗(yàn)、添加社交屬性,讓Git的影響進(jìn)一步擴(kuò)大。
由此,Git從一個(gè)個(gè)人小眾工具,逐步發(fā)展為影響全行業(yè)的核心范式。
毒舌暴躁的開源傳奇大佬
最后,再來簡(jiǎn)單回顧下Linus Torvalds的傳奇人生。
他1969年出生于芬蘭,現(xiàn)在已經(jīng)56歲了。
他一個(gè)人寫出了兩個(gè)改變世界的項(xiàng)目:Linux和Git。它們幾乎影響了整個(gè)IT和軟件產(chǎn)業(yè)的基礎(chǔ)架構(gòu)。
而且過程都非常相似:
不滿于當(dāng)前系統(tǒng)→自己手搓一個(gè)開源免費(fèi)版本→不斷擴(kuò)展功能受到更多開發(fā)者關(guān)注→最終在全球產(chǎn)生廣泛影響。
1991年初,當(dāng)時(shí)還是赫爾辛基大學(xué)學(xué)生的Linus開始對(duì)操作系統(tǒng)產(chǎn)生興趣。他使用的是基于UNIX的Minix系統(tǒng),但對(duì)其功能限制感到不滿。他想要一個(gè)能夠充分利用他的新Intel 386電腦的操作系統(tǒng)。
1991年8月25日,Linus在comp.os.minix新聞組發(fā)布了一條著名的消息:“我正在做一個(gè)(免費(fèi)的)操作系統(tǒng)(只是個(gè)愛好,不會(huì)像GNU那樣龐大專業(yè))……”這被認(rèn)為是Linux項(xiàng)目的正式誕生。
最初Linux只是一個(gè)終端模擬器,Linus用它來訪問大學(xué)的UNIX服務(wù)器。隨著時(shí)間推移,他不斷擴(kuò)展其功能,添加了文件系統(tǒng)支持和設(shè)備驅(qū)動(dòng)程序。
關(guān)鍵轉(zhuǎn)折點(diǎn)是Linus決定采用GNU通用公共許可證(GPL)發(fā)布Linux。這使得Linux成為一個(gè)真正的自由軟件,允許任何人查看、修改和分發(fā)代碼,只要他們同樣以GPL方式分享修改。
1992年,Linux與GNU項(xiàng)目的工具結(jié)合,形成了完整的操作系統(tǒng)。這種結(jié)合有時(shí)被稱為GNU/Linux。
隨著互聯(lián)網(wǎng)的普及,世界各地的開發(fā)者開始為L(zhǎng)inux貢獻(xiàn)代碼。Linus采用了分散式開發(fā)模式,審核并整合來自全球的貢獻(xiàn)。
從1994年開始,Linux版本0.95發(fā)布,商業(yè)公司如Red Hat開始圍繞Linux創(chuàng)建商業(yè)產(chǎn)品和服務(wù)。
今天,Linux已成為互聯(lián)網(wǎng)基礎(chǔ)設(shè)施的核心,為大多數(shù)網(wǎng)站服務(wù)器、Android智能手機(jī)和超級(jí)計(jì)算機(jī)提供動(dòng)力。盡管項(xiàng)目規(guī)模已經(jīng)龐大,Linus仍然擔(dān)任最終決策者,管理著Linux內(nèi)核的開發(fā)方向。
不過,除了技術(shù)和項(xiàng)目風(fēng)靡全球,Linus的臭脾氣也是在技術(shù)圈廣為人知。
此前在有一次公開演講中,因?qū)VIDIA拒絕為L(zhǎng)inux提供良好驅(qū)動(dòng)支持的態(tài)度表示不滿,Linus直接對(duì)著攝像機(jī)豎起中指說:
NVIDIA,f**k you!
這一幕如今也成為了技術(shù)界的經(jīng)典場(chǎng)景。
此外,他本人也相當(dāng)毒舌。
看到不好的代碼就直接在代碼評(píng)審中開噴。
這不僅是垃圾,而且是有史以來最蠢的垃圾。
你的代碼很爛,如果我是你,我就躲到角落里去哭,然后考慮轉(zhuǎn)行。
對(duì)C++頗有微詞:C++是一種可怕的語言。它在設(shè)計(jì)上有著根本性的缺陷…那些宣稱C++比C好十倍的人是在撒謊。
以及Git在俚語中的意思是“討厭鬼”。
如此種種,非常多,就不列舉了。
不過在2018年,Linus公開道歉,表示要洗心革面,調(diào)整自己的溝通方式。
所以近年來,他脾氣愈加溫和:仍舊直率但是明顯減少了個(gè)人攻擊和侮辱性語言。
好是好,就是大家能看的樂子也少了(bushi)。
https://github.blog/open-source/git/git-turns-20-a-qa-with-linus-torvalds/
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.