回顧Linux、Git 之父Linus Torvalds的傳奇技術(shù)人生
1寫在前面
本文引用地址:http://2s4d.com/article/201712/372878.htm提起 Linus Torvalds 大家的第一反應是怎樣的?是嚴苛刻薄,還是神級偉大,亦或是孤傲清高?二十五年來,Linus Torvalds 一直堅持在技術(shù)第一線,開發(fā)了 Linux 和 Git 兩個項目,并深刻影響了軟件行業(yè)。如果沒有 Linux,就不會有基于 Linux 的安卓系統(tǒng),那世界是怎樣的?如果沒有 Git 的誕生,就不會基于 Git 的 GitHub,那么開源的興旺之勢將會遲來多久?
有人問 Linus,你是如何成長為今天的你自己的?Linus Torvalds 說,我本人并不適合回答這個問題,因為這是個漸進不自知的過程;應該請一個不會天天見到他的人以第三方視角,來談?wù)勔粋€不敢直視別人眼睛的十二歲書蟲小男孩怎樣蛻變成今天的樣子的。雖然現(xiàn)在,Linus 已經(jīng)很大程度上擺脫了社交恐懼癥,面對媒體和觀眾們可以侃侃而談;但是他依然認為自己不擅長于與人打交道。他認為貢獻開源項目通過郵件與人互動,給人緩沖是他更喜歡的交流方式。他不喜歡直面很多人一起工作,而 Linux 和 Git 兩個項目則恰恰是他所喜歡的工作形式體現(xiàn)。Linus 稱開源社區(qū)需要有溝通專家,他們溫暖而友善,但遺憾的是他自己并不是這樣的人。
Linus Torvalds 極度熱愛技術(shù),但并不是泛 IT 技術(shù)的追隨者,他從來沒有寫過 web 程序、不會設(shè)置 FTP 服務(wù)器的他有著很聚焦的技術(shù)關(guān)注點。Linus 的技術(shù)興趣很挑剔,“如果我被困在一個孤島上,唯一逃生的機會就是寫出一套漂亮的 UI,那么我死定了。所以人與人是不一樣的,我不是在找借口,我只是在解釋?!?/p>
但是,他并不是一根筋的潔癖開源理想者,很早他就思考了商業(yè)對開源的作用;他很開心也很感激商業(yè)公司和基金會幫他處理所有那些他不愿意處理的事情,并且可以做到完全放權(quán)、不管不問。“不同的人有不同的興趣,擅長不同的事情”。
在他眼中,很可能大多數(shù)代碼都是平庸的。為什么 25 年一直在做 Linux?“因為寫出優(yōu)秀的代碼是件很困難的事情?!薄癓inux 項目中,我會和有的人說‘請不要這樣做,這樣又蠢又笨’,然后他們離開了再以不會靠近我。”他是優(yōu)秀并嚴格,在工作中難免會傷及他人的自尊心。
不過,在他特別在意的內(nèi)核項目之外,我想 Linus 應該會更加隨和甚至親切。上個月有幸面對面采訪 Linus,他全程面帶微笑;大會開場的出席訪談也是一如既往地沒有準備 PPT。本文取材自采訪和已有的一些訪談資料,希望可以為讀者們展現(xiàn)一個更為具體、盡量全面客觀的 Linus Torvalds。
2被編程深深地吸引
Linus 大約從十一歲左右開始編程,最初看的是一本匯編語言的書。在祖父的電腦上,Linus 開始使用了 BASIC 語言。
Linus 的妹妹 Sara 記得 Linus 展示的第一段代碼的運行效果,是所有 Basic 語言入門的那段代碼:
Linus 表示他很懷疑這段代碼是否發(fā)自真心。他狡黠一笑地說,因為他和他妹妹 Sara 并不是一直都是最好的朋友,可能當時他自己只是想試著友好些,并借此機會向展示 Sara 他的編程能力。
使用 BASIC 語言編程在很多人看來很蠢,Edsger Wybe Dijkstra,Dijkstra 算法發(fā)明者曾經(jīng)表示:
It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
“一個有過 BASIC 編程經(jīng)歷的人是很難學會好的編程習慣的。作為一個潛在的程序員,他們已經(jīng)被腦殘并且無法修復。”
Linus 表示最初的編程并不是很認真,但是那真的就是十幾歲的他所能觸碰到了,而且他并不完全知道自己在做什么。即便當時條件有限,即便 Edsger 的斷言有些令人觸目驚心,但是 Linus 依然成長成為了一名卓越的程序員,并且在 1991 年還是在校學的時候就創(chuàng)造了 Linux 的雛形,并從此沒有再離開。
Linus 最喜歡的是在電腦上輸入指令,然后它就會去執(zhí)行該執(zhí)行的任務(wù),沒有任何其他多余的動作。Linus 坦白地說有可能是太自閉或邊緣化性格其他問題,但是這樣的爽快干脆的執(zhí)行感絕對不會在日常生活中出現(xiàn)。
“成為程序員真的不是我的計劃,但是這確實是我的激情所在。”
“你看見代碼的時候立刻就知道這段程序是在做什么”。
“你可以把代碼寫得很漂亮,但是實際上它并不能解決問題。”
3從沒有計劃編寫 Linux,到一切為了 Linux
Linus 曾經(jīng)公開表示,學生時期的他本來是想購買 PC 操作系統(tǒng)的,但是昂貴價格實在讓人望而卻步,于是只好告訴自己說,“哎好吧,我需要自己寫出來了。”
在 1991 年 9 月發(fā)布 Linux 系統(tǒng)之前,Linus 其實自己寫過好多工具。巧的是,如果再晚幾個月, 如果 Linus 知道后來問世的 GNU kernel 或者 386BSD(NetBSD, OpenBSD 和 FreeBSD 的前身),現(xiàn)在大家可能就見不到 Linux 操作系統(tǒng)了。所以說 Linux 系統(tǒng)的誕生確屬是意料之外,確切地說是 Linus 為了解決遇到問題而做的事情。
于是他專門為自己配著 80386 處理器的新電腦寫下了第一版的操作系統(tǒng)代碼,開發(fā)工作是在 MINIX 中使用 GNU C 編譯器,并且必須使用硬盤開機。Linux 系統(tǒng)的第一個版本代碼是上傳到 FTP 服務(wù)器上的,但是至今 Linus 也不知道怎么配置 FTP,他也從來沒有自建 web 站點。
每個人喜歡做的事情不一樣,對于不喜歡的事情,Linus 一律“偷懶”地尋求外援。有一個有趣的小插曲,最初 Linus 給自己寫的操作系統(tǒng)命名“Freax”,取自自由(“free”)和奇異(“freak”)的結(jié)合,末尾附上“X”,是表示其為類 Unix 系統(tǒng);但是 Linus 委托的 FTP 服務(wù)器管理員認為“Freax”這個名字并不好聽,于是把內(nèi)核更名為 Linux。
開發(fā) Linux,只選對的
最初 0.01 版本只有 10000 行代碼,內(nèi)核編程的前六個月都是 Linus 一人完成,但是 1992 年起 Linus 開始采納其他開發(fā)人員的補丁。
如今,Linus 擁有一個實力超群內(nèi)核維護小組,Linux 系統(tǒng)的協(xié)助模式是 Linus 負責總體的協(xié)調(diào)和溝通,他會對接十余名核心貢獻者,每個人都有自己負責的具體領(lǐng)域和項目內(nèi)容,每次有新的開發(fā)任務(wù)時 Linus 會將它分配給對應的人;而這十余位核心貢獻者又有各自的熟知并信賴的高手小團隊。Linus 只需知道將任務(wù)交給他自己團隊中十余名成員哪個人即可。
這樣多層次小團體的工作模式,現(xiàn)在看起來更像是目前備受推崇的微服務(wù)開發(fā)組織架構(gòu);不過 Linus 這樣做的并不是因為領(lǐng)悟了康威定律的 two-pizza 團隊原則,Linus 認為他能信任并依賴的程序員也就 10 個左右?!澳憧赡苡泻荦嫶蟮纳缃痪W(wǎng)絡(luò),比如在 LinkedIn 上你可能有 5000 個好友;但是其中有多少人是你信任的?”在 Linus 看來,工作上的關(guān)系和生活中的朋友類似,Linux 的開發(fā)模式要保證真正熟知并且雙向協(xié)作起來都很愉快。
VMware 開源技術(shù)總監(jiān) Dirk Hohndel 曾經(jīng)問 Linus,這樣開發(fā)模式是否是可持續(xù)性的?Linus 笑著回答如果當前團隊中有程序員變老變胖不想繼續(xù)做下去的話也沒有問題,因為會有新的程序員補充進來。Dirk 又追問 Linus 道,在內(nèi)核不斷提升迭代的過程中,是不是你具有著絕對的決定權(quán)?Linus 回答到“不是的”,他發(fā)自內(nèi)心地鼓勵大家按照自己的需求建立 fork,如果最終這樣的想法有良好的結(jié)果做證明,其精華部分就會被吸收到 Linux 內(nèi)核項目中。Dirk 對此總結(jié),當今的分支發(fā)展再吸收代碼的模式其實反映的就是 Linus 本人或其團隊的決定性。
Linus 認為雖然大部分 linux 內(nèi)核代碼的 fork 版本不是很優(yōu)秀,但是有一小部分是好的。作為一個熱愛編程的神級人物,加上自稱不善交流有自閉傾向,Linus 身上定不會缺少程序員們常有的代碼傲骨;工作起來的 Linus 想必是極為嚴苛的,能贏他由衷贊嘆的代碼當屬少數(shù)。
Linus 的商業(yè)化:廠商與基金會
大約在 1992 年 Linux 0.12 版本的時候,Linus 收到朋友轉(zhuǎn)發(fā)有廠商在售賣 Linux 的消息。Linus 稱當時自己的第一反應就是:什么?他們竟然在賣這個東西?朋友問道“這個真的是你所期望發(fā)生的嗎?”Linus 知道朋友希望他說“不”,希望得到類似于免費開源夢等答案;但是他很誠實說“呃,是吧。但是,我不知道接下來會怎樣”。
Linus 在乎的不是價格,他在乎的 Linux 可以成為像 Unix 一樣的知名操作系統(tǒng)。在他看來商業(yè)化和推廣是很有必要的,很多開源項目本應該更加壯大的,遺憾的是它們太過純粹了。其實 Linus 也會擔心商業(yè)公司不正當?shù)乩瞄_源成果,開始接觸廠商的時候,Linus 坦言他很緊張;但是很快接觸后發(fā)現(xiàn)對方很可愛,商業(yè)化意味著很多繁瑣的事情,拋開商業(yè)策略、宣傳推廣等,單單是 QA 工作就讓程序員們皺起眉頭了,正式商業(yè)公司完成了所有 Linus 沒有興趣做的事情。
一切都分工明確,內(nèi)核開發(fā)工作完全交由 Linus 主導,任何一丁點的商務(wù)他都不會過問。他說可能商業(yè)化中會有很多問題,但是 Linus 完全放手。不過,Linus 指出開源項目的核心維護者需要做到的是“free and pure”。
Linus Torvalds 于 2003 年決定離開當時的公司、加入開源碼發(fā)展實驗室以專職投入到 Linux 內(nèi)核的工作,后來 Linux 基金會正式成立。正如所愿,這就是 Linus Torvalds 和基金會的分工,基金會負責接管許可證、專利、法務(wù)等問題,處理電話、郵件和文件準備等工作,事無巨細。
Linus 只想做技術(shù),不想處理技術(shù)以外的事情?!叭绻闶且幻こ處煟苡锌赡苣阒幌胩幚碜约焊信d趣的技術(shù)問題,其他一切事情你都想移交給別人來處理?!?LinusTorvalds 說他很慶幸自己不需要擔心商業(yè)和管理的問題,他只要能領(lǐng)到工資不擔心養(yǎng)孩子上學的問題就很好。
Linux 基金會執(zhí)行總監(jiān) Jim Zemlin 稱這是正確的模式: Linux 操作系統(tǒng)標準價值 103 億美元;Linux 基金會擁有 Linux、Kubernetes、Cloud Foundry、Xen 等項目,以及 CNCF 基金會、Node 基金會等,整體所寫的代碼價值標準為 145 億美元;由此估算 Linux 的經(jīng)濟價值占據(jù)整體價值 71%,不愧為開源項目鼻祖。
堅持了 25 年,但是已經(jīng)不能掌握內(nèi)核的全部了
“在大家的眼中,我是那個創(chuàng)造了 Linux 并依然維護它的人?!?/p>
“為什么我 25 年來依然在做同樣的事情?因為寫出優(yōu)秀的代碼是件很困難的事情?!?/p>
所以,能保持優(yōu)秀的 Linux 內(nèi)核開發(fā)團隊是非常難但是重要的事情。在問及現(xiàn)在是否還編寫 Linux 內(nèi)核的代碼時,Linus Torvalds 坦言現(xiàn)在做的項目管理的工作,他有一小撮頂級開發(fā)者共同協(xié)作,當有新的任務(wù)時,他知道應該把任務(wù)分配給誰。比起代碼編寫這樣細節(jié)的問題,他需要更加關(guān)心的是 code flow 和 process,擔當起架構(gòu)師的角色,關(guān)心代碼穩(wěn)定和如何改進更高層次更抽象的工作內(nèi)容。
除了總體的溝通協(xié)調(diào)工作,Linus 本人還負責 merge 代碼,Linux 內(nèi)核每三個月(70 天左右)發(fā)布 1 個版本,即便在不同國家出差,Linus 也要克服時差按時發(fā)布。
“如果你對某開源項目感興趣,那你可以去閱讀學習源代碼,但是要警惕成為專家的想法。”Linux 內(nèi)核那么大,沒有人了解全部、沒有人是專家,Linus 稱自己也不是面面俱到。
4Git 是為 Linux 而生,卻帶來了意外之喜
Linus 還稱創(chuàng)建 Git 從來不在他的計劃內(nèi),版本管理系統(tǒng)(和數(shù)據(jù)庫)是他最不感興趣的方向,甚至帶著一種本能逃離式的討厭。曾經(jīng)的 BitKeeper 出現(xiàn)令他眼前一亮,本地可以留有一份源代碼,很好地管理了分布式團隊中“誰可以修改代碼”的權(quán)限問題。2005 年,開發(fā) BitKeeper 的商業(yè)公司同 Linux 內(nèi)核開源社區(qū)的合作關(guān)系結(jié)束,他們收回了 Linux 內(nèi)核社區(qū)免費使用 BitKeeper 的權(quán)力。Linus 不想倒退回到?jīng)]有高效版本管理的時代;而除了 BitKeeper 之外,沒有其他軟件可以做到更好的遠程協(xié)同;并且 Linus 還很在意代碼的完整性和整個管理流程。為此,自己動手研發(fā)一個軟件成為了當時唯一的解決方案。
基于 BitKeeper 的使用經(jīng)驗并結(jié)合了團隊的訴求,Linus 花費數(shù)周創(chuàng)造了 Git 的初始版本,該系統(tǒng)定位目標特色是:
速度
簡單的設(shè)計
對非線性開發(fā)模式的強力支持(允許成千上萬個并行開發(fā)的分支)
完全分布式
有能力高效管理類似 Linux 內(nèi)核一樣的超大規(guī)模項目(速度和數(shù)據(jù)量)
十二年來,Git 圍繞當初設(shè)定的目標不斷迭代,并且深受喜愛。
然而,在 Git 被創(chuàng)造出來之后的前三四年,Linus 稱業(yè)界對它并不是很認可,因為這種版本管理方式與大家已經(jīng)習慣的 SVN 方式相差很大,當時普遍反響是 Git 太難用了。
但是慢慢地,圈內(nèi)的聲音發(fā)生了變化,Linus 認為大家應該開始接受并適應了 Git。
而幾乎每個開發(fā)者都會使用的 GitHub 則使用 Git 為核心技術(shù),于 2007 年問世。一個有趣的故事是,Linus 本人欣賞但不使用 GitHub,并認為 GitHub 還有可以提高改善的地方。在一次 linux.com 的采訪中,Linus 曾經(jīng)表示 GitHub 平臺不適合內(nèi)核開發(fā),功能設(shè)計依然比較局限。
“我女兒的同學們在聽說她的父親是 Git 的創(chuàng)作者之后非常興奮,這種興奮程度要比說有個 Linux 創(chuàng)作者的父親更高?!盠inus 對 Git“更走紅”的現(xiàn)象表示驚訝,一方面是因為 Git 最初只是為 Linux 內(nèi)核開發(fā)者們而建;另一方面 Git 只花費了十天(相比常年深耕 Linux 系統(tǒng))。Linus 分析總結(jié)道,對于現(xiàn)在的 CS 學生們,Git 似乎是個更棒更有趣的產(chǎn)品;這或許代表著年輕一代更熟悉更欣賞 Git。
5對話 Linus
如果重來一次,你會做什么?
所有軟件語言中,Linus 對 C 語言情有獨鐘,并認為它更趨同于機器思維、接近底層,可以讓開發(fā)者們從軟件角度去詮釋硬件。
Linus 表示自己曾經(jīng)接觸過硬件,但是這很危險,他稱自己對硬件“破壞力很強”。換而言之,Linus 很自知地沒有選擇在硬件的道路上繼續(xù)走下去。
不過,他對現(xiàn)在的 Raspberry Pi、FPGA 電路板很感興趣,如果重來一次又不可以選擇編寫 Linux 的話,他會考慮基于硬件開發(fā)版的編程。
堅持不意味著得到,去做你喜歡的事情吧
Linus 深耕 Linux 代碼二十五年如一日,InfoQ 問到 Linus,是否只要堅持到最后大概率而言都會收獲一些成果?Linus 表示他非常想告訴大家“堅持就是勝利”,但是很遺憾的是事實并非如此。最重要的是找到自己感興趣的事情去做。這二十五年來做 Linux 系統(tǒng),總會有不斷新的挑戰(zhàn)出現(xiàn),所以 Linus 稱這些年非常有趣并不是充滿重復的工作。
那么為什么 Linus 可以做這么久?
最靠譜的答案也許就是 Linus 所說的他自己深深喜歡代碼,除了代碼之外的事情,他都不希望考慮或參與,比如許可證專利,與外界公眾的溝通,或者怎么保持盈利以養(yǎng)家糊口;很多技術(shù)人都是這樣的,他們希望可以心無旁騖地做技術(shù)工作,不希望被無關(guān)的瑣事打擾。
除了盡可能地縮小和聚焦自己的工作范圍,興趣還可以讓人更主動地工作。Linus 說他也會度假很喜歡潛水,但是一旦在外面“浪”過一周,他就“心癢癢”地想回去編程。
Linus 非常強調(diào)自我驅(qū)動,他強調(diào)一定要知道自己內(nèi)心想做什么,什么是真正讓你感興趣的事情。比如,如果你對某開源項目感興趣,那你可以去閱讀學習源代碼,但是要警惕成為專家的想法:Linux 內(nèi)核那么大,沒有人了解全部、沒有人是專家,Linus 稱自己也不是面面俱到。
Linux 成功是因為足夠幸運
在媒體見面會上,Linux 中國的老王問道,“Linux 系統(tǒng)和您個人所取得的成功是一種偶然還是必然?”Linus Torvalds 回答說,這份成功的背后既有必然性也有偶然性。其中偶然性,是在于時機剛剛好。如果 Linux 出現(xiàn)再早幾年就可能趕不上互聯(lián)網(wǎng)的發(fā)展,沒有了網(wǎng)絡(luò)傳播、社區(qū)協(xié)作也就很難取得成果。如果再晚幾年,可能成功的就是另外的操作系統(tǒng)。也就是說,必然性在于大家對開源操作系統(tǒng)的需求。而 Jim Zemlin 則表示“Do the right thing”,并且成功需要有良好的模式。
推崇成功等于 99% 汗水和 1% 創(chuàng)新
Linus Torvalds 認為,科技行業(yè)對創(chuàng)新的頌揚是一種自鳴得意,沾沾自喜,以自我為中心。
他更直白地表示:“行業(yè)所說的這么多的創(chuàng)新都是扯淡,”他說,“任何人都可以創(chuàng)新,不要把‘另類思考(think different)’當成什么了不起的事情,談?wù)撃切┒际呛翢o意義的。成功的 99% 就是把工作做好,也就是說要埋頭苦干?!?/p>
Torvalds 說:“所有真正的工作并非說的如云如雨、不著邊際的天花亂墜,而是在于細節(jié)?!?/p>
Torvalds 認為成功的項目都是 99%的汗水和 1%的創(chuàng)新。
編程之外的 Linus
除了編程之外,Linus 還喜歡潛水。但是他說如果潛水超過一周,他就會感覺手癢癢想編程。
最近,Linus 在網(wǎng)絡(luò)上發(fā)布了幾塊款他推薦的好物品。首當其中是潛水裝備 Atomic Aquatics scuba regulator。還有一件是給貓貓準備的物品。
6采訪花絮碎碎語
2017 年 6 月,Linux 基金會首次在中國召開 LinuxCon,有幸參加媒體采訪,見到 Linus Torvalds 本尊。采訪環(huán)節(jié)結(jié)束后,記者們立刻將 Linus Torvalds 團團圍住,他微笑著耐心回答每個問題。在征求簽名時,他有些不好意思地說“我的簽名很丑”并在名字下面附上了“the ugliest signature ever”。我順勢詢問是否有一句話可以送給開發(fā)者們時,他遲疑之后說自己不敢給出這樣莊重的建議;但是他表示他認為做自己喜歡的、并對其他人也有幫助的事情很重要。
隨后,中國開源軟件推進聯(lián)盟主席陸首群走進采訪室,和 Linus 見面擁抱聊天。陸先生從 20 世紀九十年代就開始推動包括 Linux 基金會在內(nèi)的開源軟件組織在中國的發(fā)展。
從進入媒體視線、訪談交流到離開的三個多小時內(nèi),Linus Torvalds 一直面帶微笑。
在我看來,這種微笑不是職業(yè)訓練出來的,而是一個純粹技術(shù)人發(fā)自內(nèi)心的表達。這位名揚 IT 界二十余載的神級人物,想必早已過了恃才傲物、口沸目赤的階段,內(nèi)心充盈的更多是工作中獲得的欣慰與肩負的責任。
在他提到不想關(guān)心 Linux 技術(shù)以外的任何事情、一周不寫代碼就坐立不安的時候,我似乎看見了那個 11 歲學習 BASIC 并從此再也沒有離開自己所愛的大男孩兒,擁有一顆不老心的 Linus Torvalds 依然葆有著他的技術(shù)好奇。
評論