1. 程式人生 > >聽Linux之父Linus Torvalds談談Linux和他的故事

聽Linux之父Linus Torvalds談談Linux和他的故事

譯者簡介:

嚴睿

嚴睿(@RiboseYim)

工程師。開源粉、深度閱讀患者。

目前就職於中盈優創,從事運營商網路系統專案技術運營,致力於高可用架構改進、DevOps團隊建設。

Linux之父Linus Torvalds

2016年2月 TED Talk , Linux之父Linus Torvalds.

呆萌嬌羞至尊寶,火力全開段子手。

TED官方沒有提供中文字幕,忍不住翻譯出來,Just for fun!

開場:神之總部

(主持人)Chris Anderson:
這是一件多麼奇怪的事情。你的軟體-Linux,執行在許多計算機上,它可能控制了大部分網際網路,還不包括15億部活躍的Android裝置。

你的軟體執行在所有這些裝置上面,某種程度上說真是不可思議。你一定有驚人的軟體總部來控制它們。當我看到這張照片的時候,我驚呆了。這就是Linux的全球總部嗎?

Linux

God’s bedroom and office

Linus Torvalds: 它看起來真的不怎麼酷。不得不說,這張照片最有趣的部分,人們最容易關注的部分,是那個走步機。它是我的辦公室最有趣的部分,而且我實際上從來不用它。我相信這兩件事是有聯絡的。

我工作的方式,我不想有任何外部的刺激。你可以看到,牆上的顏色是淺綠色。我聽說,精神病院的牆上也用這些顏色。在某種程度上,它們寧靜、溫和,不會刺激你。

那些你不能看到的東西是計算機,圖上你只能看到顯示屏,關於我的計算機,我主要擔心的是—它的體型和功率都不夠大,儘管我希望那樣,但它必須保持絕對安靜。

據我所知,有些為Google工作的人,在家裡就擁有自己的小型資料中心,我不這樣做。

我的辦公室應該是你見過最乏味的。我獨自呆在一片寧靜之中。如果貓走進來,它會坐在我的大腿上。我希望能聽到貓的呼嚕聲,而不是計算機的風扇聲。

CA: 所以基於這樣的工作方式,你能夠運營如此龐大的技術帝國,它是一個帝國,這就是一個驚人的證明,關於開源的力量。

話題一:Linux

跟我們說說你是怎麼理解開源 ? 開源是怎樣引導Linux開發的?

LT: 我的意思是說,我依然一個人工作。真的——我一個人在我的家裡,通常是穿著睡衣。當攝影師出現時,我得打扮,然後換上衣服。

其實這就是我過去工作時的情況。我的意思是說,我開啟Linux的時候也是這樣的。我開啟Linux的時候,它並不是一個團隊合作的專案。

它只是作為眾多的、為我自己服務的一系列專案之一,在一定程度上是因為我需要最終成果,但是更多的原因在於我只是喜歡程式設計而已。所以它的目標,25年之後,我們依然沒有到達。

事實上,我只是為自己在尋找一個專案,這裡無關開源,事實上,我完全沒有這個目標。

接下來發生的事……專案成長起來,變成了某些你希望向人們炫耀的事情。事實上,比這還要複雜,“哦,快來看我做了什麼!” 請相信我——它當時並沒有那麼美好。

在那個階段,它的原始碼是開放的,但是背後沒有使用一種開源方法,類似於我們今天改進專案的手段。它更類似於,“看吶,我已經在上面工作半年了,我希望能收到一些反饋意見。”

這時另外一些人開始跟我接洽。在赫爾辛基大學,我有一個朋友,來自開源的一個分支——它後來被稱為“自由軟體”——確切的說,他介紹了一種概念給我:你能使用流行的開源許可證

對此,我想了一會兒。我確實對商業的因素參與進來感到擔憂。我的意思是說,當人們開始參與的時候,這是一個值得憂慮的事情,他們擔心一些人趁機搗亂,影響他們的工作,不是嗎?

CA:與此同時,正如你所想的那樣,有些人貢獻了一些程式碼,“噢,這太有趣了,我從來沒有想過可以這樣。竟然真的可以讓專案獲得改進。”

Linux

作業系統簡譜

21歲的Linus在Minux上寫出了Linux的0.1版,一系列商業公司在開源專案的基礎上賺了大錢。

LT: 開始的時候,人們並不是貢獻程式碼,人們更多的是貢獻想法。

事實上,有一些人只是看了一眼你的專案,並且我敢肯定別的一些事也是如此,但是關於程式碼部分,很顯然,有一些人會對你的程式碼感興趣,到一定程度上就會給你反饋資訊,給你提出自己的想法。對我來說這一點至關重要。

那時我21歲,我很年輕,但是我已經用一半的人生來程式設計了。

在此之前完成的每一個專案都是出於個人目的,這完全出乎我的意料。當人們開始評論、對你的程式碼提供反饋資訊的時候,甚至於他們已經開始反饋程式碼,那時我想,作為最重大時刻之一,我會說,“我愛這幫人!”。

千萬別誤會,我真不是一個擅長社交的人。我不是真的愛某些人—

但我愛計算機,我喜歡和其他人通過電子郵件交流,因為這種方法可以為你提供某種緩衝。但是我也喜歡那些發表評論、在我的專案中獲益的人。Linux專案使得這些事數不勝數。

所以是否有一個時刻,在專案構建過程中你發現,它突然開始失控了,這時你想:

稍等下,實際上這可能關係重大,不僅僅是作為個人專案獲得好的反饋,而是在整個技術世界出現一種爆炸式的發展?

事實並非如此。我是說,對我來說這不是一個大問題,真正的大問題不是說Linux變得龐大,而是它變小了。對我來說,專案變得龐大意味著不只是我一個人,而是10個,或者100個人參與進來,那確實變大了。

然後所有的其它事情都變得緩慢了。從100人發展到一百萬人並不是一筆大買賣,對我來說。如果你希望出售你的成果,它就是一筆大買賣。

如果你只是對技術感興趣,對這個專案感興趣,大部分的工作其實是發展社群。當社群逐漸成長起來,就不像只有我一個人的時候了,相對而言,發展社群需要很長的時間

話題二:Git

CA: 我訪談過的所有技術專家們,無一例外都極力讚揚你,你改變了他們的工作方式。不僅僅是Linux,還有Git,用於軟體開發的管理系統。簡單跟我們談談Git,你在這個專案裡的角色是怎樣的。

Git

Git協作模式

LT:我們曾經遇到的問題之一就是,剛開始的時候,當你的專案的參與人數從10個或者100個增長到10,000個的時候。

我的意思是,我們剛剛在核心專案上就遇到了這種情況,每一個單獨的發行版本都有1000人蔘與,每兩、三個月就要釋出更新。他們中的許多人並不需要做很多工作。許多人只是做了非常、非常小的變更。

Git

版本控制系統演進

但是為了維持這個過程,你不得不維護大規模的變更。我們經歷了一個非常痛苦的過程。而且這還只是整個專案原始碼維護的部分。

CVS曾經是用來管理程式碼最通用的工具之一,我非常討厭CVS,並且拒絕使用它,每一個體驗過其它純粹、有趣工具的人都討厭它。

LT:我們曾經身處困境之中,當時有成千上萬的人希望參與到專案裡面來,但是在很多情況下,我自己就是臨界點,有了Git之後我就可以突破這個臨界點,我可以和成千上萬的人一起工作。

所以 Git 是我的第二個大專案,而它只是被創造用來服務我自己維護的第一個大專案。我其實就是這樣工作的。

我程式設計只是為了有趣,我希望能為一些有意義的事程式設計,我完成的每一個專案,在某種程度上說,都是我所需要的。

CA: 實際上,Linux 和 Git 這類東西的出現只是一個意外結果,你其實並沒有希望它們能為這麼多人服務。

LT: 當然。是的。

CA: 這很驚人。

LT: 是的。

話題三:憶童年

CA:到目前為止,作為曾經改變技術世界的人,你已經做到了不止一次而是兩次,我們試圖理解你什麼能夠做到這一點。你給我們提供了一些線索,但是……這裡有一張你小時候的照片,拿著一個魔方。

你曾提到說,在只有10或11歲的時候,你已經成為程式設計師,相當於你人生的一半。

linux

魔方少年

你是那種計算機天才嗎?正如你所知,übernerd,你是學校裡的全能明星嗎?你小時候是什麼樣的?

LT: 呃,我想我屬於那種典型的書呆子。我的意思是,我那時不是一個喜歡社交的人。那是比我小的兄弟。我可以肯定地說,那時我對魔方的興趣比對小兄弟大。

我更小的妹妹,沒有在這張照片上,當我們召開家庭會議的時候,那不是一個龐大的家庭,但是我有幾個兄弟姐妹,她會提前完成家庭作業。例如,當我進入房間之前她會說,“好吧。那是so-and-so …”

我是一個極客。我沉浸在計算機,數學,物理學,我擅長這些。我不認為自己是故意為了顯得與眾不同。但是,我妹妹說過,我最大的異常特徵是我從不參與眾人的行動。

CA:好吧,那我們就來討論這點,因為這很有趣。你不從眾。所以這不是關乎成為一個極客,也不關乎成為一個聰明人,這是關於固執?

LT: 那確實關於固執,就像,開始做某些事情的時候,並不會說,“好吧,讓我們來做些別的事——看,噹噹噹當!”

我想在我人生中的其它部分也是如此。我曾經在矽谷生活了7年多。在矽谷,我為同一家公司全職工作。這是難以置信的。這不是矽谷的工作方式。矽谷的共識是人們需要在不同的職位上跳來跳去。但那不是我這種人的風格。

CA:但是實際在Linux的開發過程中,固執的性格有時也會讓你和其他人的關係陷入緊張狀態。談談這點吧。這是維持構建質量的必要因素嗎?你是如何來判斷事態發展的?

LT:我不確認它是否完全必要。回到剛才說到的“我不是一個善於社交的人”,有時“我的淺薄”會影響其他人的感受,就像你剛才所說的情況會傷害其他人。並且,我並不以此為榮。

但是,與此同時,有些人告訴我說我應該更友好一些。然後我試圖向他們解釋說,也許你們是友好的,也許你應該更好鬥些,他們和我一樣變得不友好了。

我試圖表達的想法是我們每一個人都是不一樣的。我不是一個社交達人;這不是我特別為之自豪的事情,但這是我的一部分。並且我真心覺得,開源的理念之一就是非常鼓勵不同的人一起合作。

我們不見得需要互相喜歡對方,並且有時我們真心互相瞧不上。我們經常會有非常、非常熱烈的爭論。但是你能夠,事實也確是如此,你會發現——你不必特意消除分歧,這只是因為你們感興趣的事情不同罷了。

回到我早期說過的觀點:我擔心商業人士會利用你的工作成果,它已經發生,那些商業人士是非常、非常可愛的人。

他們完成了我完全不感興趣的事情,他們完全是基於不同的目標。他們使用開源的方式只是我剛好不想走的路。但是因為專案是開源的,所以商業人士可以那樣做,這實際上使得大家可以完美並存。

事實上,我認為它們的工作方式相同。你需要有善於和人溝通的交流者,像那些熱情和友善的人。

我真想把你拉進開源社群。但不是每個人都做得到,那樣就不是我了。我關心技術,也有些人關心圖形介面。我不會去做圖形介面來拯救我的人生。

我是說,如果我被困在島嶼上,同時唯一的脫困方式是做一個漂亮的圖形介面,那我肯定會死在那兒的。

需要有不同風格的人,我也不是為了找藉口,我只是嘗試做一些解釋。

話題四:論品味

CA: 當我們上週交流的時候,你談到自己有一些別的特質,有些我發現真的非常有趣。你管它叫品味。

我這裡剛剛拿到一些圖片。我想這是一個例子,關於在程式碼領域缺乏好的品位,這個品位更好,那個能立刻看出來。這兩個程式碼之間有什麼區別?

程式碼 程式設計師

LT: 這裡有多少人真的寫過程式碼?

CA: 天哪!

LT: 我向你說明一下,每一個舉起手的人,已經完成的動作,我們稱之為單向連結串列。它的呼叫——這裡,第一種方式不代表好的品位,當你開始程式設計的時候,完成動作是基於它被告知如何做。而且,你不得不去理解這段程式碼。

對我來說最有趣的部分是最後的if語句。因為發生的事情在一個單向連結串列裡面——這是試圖從列表裡移除一個已經存在的實體,第一個或者中間的實體,這裡是不同的。

因為如果它是第一個實體,你不得不將指標移到第一個。如果它在中間,你不得不將指標移動到它的前一個實體。所以它們是兩種完全不同的情況。

CA: 所以哪個更好?

LT: 這個更好。它沒有這個if語句。其實它不是真的很要緊,我不期望你能理解為什麼它沒有這個if語句,但是我希望你能理解,當碰到一個問題,通過不同的方式可以被重寫,以至於一個特殊的情形被移除,然後變成了一個常規的的情形。

這就是好的程式碼,但這是簡單的程式碼。這是CS 101。這些不是重點,雖然,細節非常重要。

對我而言,我真正希望能在一起工作的人,他們的標誌是有好的品位,怎麼說呢。。。我舉這個其實不相關的例子。

好的品位要比這些範圍大得多。好的品位是真的能看見大格局,並且本能地知道最佳實現方式。

CA: 好的,所以我們把這些卡片都放在一起。你有品位,在某種程度上,這對於軟體界人士意義深刻。

LT: 我想它對這裡的一些人意義深刻。

話題五:論遠見

CA: 你是一個非常聰明的計算機程式設計師,同時你極端地固執。但肯定有一些事情除外。我是說,你已經改變了未來。你一定有能力看到那些未來的巨集偉藍圖。你是一個有遠見的人,對嗎?

LT: 實際上,在TED的最近兩天,我感覺略有不適,因為這裡有很多眼睛盯著你,不是嗎?其實我不是一個有遠見的人。我甚至沒有一個5年計劃。我是一名工程師。

並且我覺得它真的,我是說——我非常開心和所有人一起,盯著雲彩和星星,說,“我想要去那兒。”

但是我看了看地面,我只想去修復那些坑,它們就在我眼前,我快要掉下去了。我就是這樣的人。

話題六:評論特斯拉和愛迪生

CA: 上週我們談到的兩個傢伙。你如何評價他們?

LT: 好的,其實這是科技界的老段子,對位元斯拉和愛迪生,特斯拉是有遠見的科學家、有瘋狂創意的人。人們愛特斯拉。我是說,特別那些以特斯拉冠名公司的人們。

另外一個人是愛迪生,是一個常常被批評為乏味的人,並且我的意思是,他最有名的格言:

天才等於百分之一的靈感加上百分之九十九的汗水

而且我是屬於愛迪生陣營的,儘管人們不是一貫都喜歡他。因為如果你的確對比這兩個人,特斯拉在那個時代抓住了一些創意,但是,是誰實際上改變了這個世界?

愛迪生也許不是一個很好的人,他做過一系列事情,他也許沒有那麼高智商,也不夠有遠見。但是我想我更像愛迪生而不是特斯拉。

CA: 我們TED本週的主題是夢想——巨集偉的,醒目的,大膽的夢想。你還真是這些夢想的解毒藥。(藥不能停啊,哈哈)

LT: 我正在試圖給這些夢想降降溫,是的。

CA: 非常好。

(滿堂歡笑) 我們熱烈歡迎你,熱烈歡迎你。

話題七:開源&商業&未來

類似Google和許多其它一些公司,利用你的軟體,據估算,大概賺了 10億美元。這惹你生氣了嗎?

LT: 不。不,它沒有惹我生氣,有幾個原因。其中之一是,我乾得很好。我真的乾得很好。

但是其它原因是——我是說,如果沒有全力投入到開源,並且真得放開手,Linux永遠也不可能是現在的樣子。並且它帶來的一些經歷我真的不喜歡,如公眾談話,但是與此同時,這也是一種經驗。相信我。

因此,有一系列事情的發生使我保持快樂,我想我做出了正確的選擇。

CA: 開源的理念——就是這些——現在開源的理念在全世界都充分發揮作用了嗎,或者說它還可以做得更多,還有哪些事是可以做的?

LT: 關於這方面,我有兩個想法。時至今日,開源機制能夠運轉良好,其中一個緣故是程式碼可以將所有的事情都轉化為黑和白。通常這樣利於作出決定,這樣做是正確地,這樣做是不好的。

程式碼要麼執行,要麼不執行,因此意味著更少的爭議空間。儘管我們有許多爭議,對嗎?

在很多其它領域,人們討論的關於開明政治之類的事情——有時就很難說得這麼簡單,是的,你也能將同樣的原則應用到其它領域的一些地方,因為黑色和白色一起不只是變成灰色,而是很多不同的顏色。

很顯然,開源理念在科學領域已經掀起一場復古運動。科學一開始就是這樣的。但是後來科學變得非常封閉,伴隨著非常昂貴的期刊以及其它一些東西。

但是開源理念在科學領域掀起了一場復古運動,比如arXiv和open journals(開放、自由的學術成果釋出平臺)。Wikipedia 也改變了這個世界。還有其它的很多案例,我相信將來還會有更多。

CA:但是你不是一個有遠見的人,所以還輪不到你來給它們命名。

LT: 不是的。

該輪到你們來創造它,對嗎?

CA: 的確如此

Linus Torvalds, 感謝你對 Linux ,對網際網路的貢獻,感謝你對Android 手機的貢獻。感謝你來到TED ,感謝你的坦率,感謝你的真誠。

LT: 謝謝。

軟體 linux linux linux linux linux linux

文章出處:高效運維