Linus Torvalds曾經(jīng)小看Mac OS X
編者按:本文主要講述了關(guān)于Mac OS X在其發(fā)展過程中,Linus Torvalds對其的看法。本文中的故事來源是Linus Torvalds的自傳《Just for Fun: The Story of an Accidental Revolutionary》。
Steve Jobs對Mac OS X的考慮
1997年,Steve Jobs回歸,開發(fā)下一代操作系統(tǒng)的工作被提上日程。此刻的時代背景是像Linux這樣的開源軟件大行其道。隨著網(wǎng)絡(luò)的發(fā)展,使得像Red Hat、VA Linux之類的企業(yè)成為爆發(fā)戶,把泡沫越吹越大.steve Jobs承認Linux的好處,甚至在若干年后介紹Mac OS X底層的Darwin時還不忘在幻燈片上寫道:Darwin是類似Linux的系統(tǒng)。而當時精明的Steve Job在考慮下面幾個問題。
***,NeXTSTEP的內(nèi)核和外圍工具中,BSD代碼維護起來需要大量人力,而且各分支的BSD發(fā)展顯然不如Linux快。很多功能都沒有,需要Apple自己做。
第二,像Apple這樣的小公司,需要借力打力.apple的主要競爭對手是Microsoft,而開源軟件的矛頭也是Microsoft,如果聯(lián)合起來干革命,不但能讓自己得到一個好名聲(Apple事后一直自稱是***的開源軟件公司),也可以獲得可觀利益,從而對Microsoft造成壓力。
第三,也是最重要的,聯(lián)合各開源組織能夠推動Mac OS的發(fā)展。畢竟開源軟件中像GCC之類都是很成熟的項目,Apple用起來省時省力,投點錢就有大效益,多好。
所以,把Linux內(nèi)核作為Mac OS X的重要組成部分的想法被這位偉大的智者想了出來.apple之前也有開發(fā)Linux的經(jīng)驗,比如在Steve Jobs回歸之前,Apple就和OSF合作開始把Mach內(nèi)核移植到PowerPC上(Apple是***的PowerPC玩家,而OSF是***的 Mach玩家),并把Linux作為服務(wù)跑在Mach上。這個系統(tǒng)就是MkLinux,我們在后續(xù)的連載中還會提到這個系統(tǒng),因為它不但對Linux的移植性作出了重要的貢獻,也對后來的Mac OS X的XNU內(nèi)核技術(shù)起到了相當重要的作用。
如果可以采用Linux作為系統(tǒng)重要組成部分,并且這個構(gòu)想能夠取得在開源軟件界呼風(fēng)喚雨的Linus Torvalds的認同,就能靠他在社區(qū)鼓動一大群開發(fā)者皈依Apple麾下,這是Apple很想看到的給力結(jié)局。有了這個指導(dǎo)思想,他便讓秘書給 Linux的開發(fā)者Linus Torvalds發(fā)了一個郵件,問他是不是有一到兩小時的時間和Steve Jobs會面。不明真相的Linus Torvalds收到郵件后相當高興,因為這是他***次有機會去硅谷觀摩。
無果而終的會面
Apple 總部Infinity Loop終于迎來了這位稀客,Steve Jobs親自接見,而先前任NeXT技術(shù)總監(jiān)的Avie Tevanian也參加了這次會談。不用多說,這次討論的內(nèi)容自然是還處于未知狀態(tài)的Mac OS X。討論算不上正式,但Linus Torvalds的憤青個性,卻讓談判陷入僵局。
Steve Jobs自然搬出他1997年回歸之際在MacWorld講話時的那套理論,Apple雖然很頹,但骨子里是個牛逼的公司。全世界桌面領(lǐng)域的真正玩家就兩個,一個是Apple,另一個是Microsoft,兩者加起來,構(gòu)成***的桌面用戶群。所以,Linus同學(xué),你就從了我們吧,如果你從了我們,讓我們把Mac架在Linux上,一大批桌面用戶就是Linux用戶啦,前景可是一片大好!
而Linus Torvalds那時候牛啊,諸多大公司如IBM、Red Hat都圍著他轉(zhuǎn)。他可是企業(yè)家中的大紅人,像Apple這樣的企業(yè)根本就不在他眼里。作為一個開源軟件的革命家,在他的想象中Linux的潛在用戶應(yīng)該比Apple還多。他始終相信,按照目前開源軟件的發(fā)展態(tài)勢,自己很快就能在桌面領(lǐng)域分到一杯羹。而且這個命題在他這種古怪性格下的直接推論是,即使我能占領(lǐng)桌面領(lǐng)域,我也要擺出一副不在乎這個領(lǐng)域的態(tài)度來。所以實際上Steve Jobs的開場白就失敗了。
接著,Avie Tevanian向Linus Torvalds介紹了整個計劃。他們想把Mach和Linux內(nèi)核合并起來作為Mac OS X的基礎(chǔ),我估計Linus Torvalds是聽錯了(因為Avie Tevanian很早就意識到相比于微內(nèi)核,混合內(nèi)核有明顯優(yōu)勢),他以為Apple想把Linux作為Mach的一個服務(wù)來跑(當然我個人認為,即使是合并Mach和Linux成為混合內(nèi)核,依Linus Torvalds的憤青性格,依然是不可能接受的),這正讓他回想到先前和Tanenbaum教授的筆戰(zhàn)。并且,他也知道Apple和IBM合搞的失敗項目Taligent正是用Mach的。
Linus Torvalds對于微內(nèi)核有他自己的看法,之前也曾在不同的地方表述過。若把關(guān)于微內(nèi)核的筆戰(zhàn)去掉限制級敏感詞的話可概括成兩方面。一方面,設(shè)計一個微內(nèi)核和相關(guān)的服務(wù),可能造成各種設(shè)計上的災(zāi)難.gNU/Hurd早在八十年代末就考慮嘗試在Mach上寫一系列Unix的服務(wù)層,結(jié)果他們始終無法搞明白到底是讓這些服務(wù)先發(fā)消息到另幾個服務(wù)呢,還是考慮其他方案。所以直到2011年我寫這篇文章時,Hurd項目依然處于半死不活的狀態(tài)。而另一方面,微內(nèi)核的效率無法和傳統(tǒng)內(nèi)核相比,最簡單的系統(tǒng)調(diào)用會涉及一系列底層服務(wù)的互相通信。所以很多研究者著手研究如何把微內(nèi)核的效率提上去,結(jié)果就導(dǎo)致微內(nèi)核變得更加復(fù)雜。能提高微內(nèi)核效率的很多研究成果都已在Mach項目中實現(xiàn)了。而在Linus Torvalds看來這恰使Mach成為了一個非常復(fù)雜的項目,并且效率也不怎么高。
會談時坐一旁的Avie Tevanian事實上是Mach最早的開發(fā)者之一,他熱情地給Linus講述Mac OS X系統(tǒng)藍圖。而Linus實際上早就不耐煩了。比如,Mac OS X中,有一個模擬層,可讓用戶使用經(jīng)典的Mac OS程序。這個技術(shù)極類似于現(xiàn)在跑在Unix系統(tǒng)上執(zhí)行Windows程序的Wine.apple當時的考慮是這樣,因為老的Mac OS在設(shè)計API時,就沒有考慮到類似內(nèi)存保護之類的問題,所以這層API必須廢掉,Mac OS X中所有的新程序必須采用NeXT的那套更先進的API(根據(jù)我的考證,當時還沒有Carbon這樣的想法,而且事實上Carbon不管在API還是 ABI上都和經(jīng)典Mac OS不兼容)。而短期內(nèi)已有的軟件又不可能快速重寫遷移至Mac OS X。所以,如果用戶需要使用老版Mac OS的第三方應(yīng)用程序,就可以使用Apple提供的這個兼容層。但是由于剛才提到的原因,老版程序并不享受新版程序的待遇,因為模擬器本身運行多個老 Mac OS任務(wù)時,和原先老版Mac OS一樣,實際上只有一個進程,沒有內(nèi)存保護。這樣做的好處是明顯的,因為一方面老的程序在Mac OS X發(fā)布之初還能用,另一方面Apple又和老技術(shù)劃清了界限,逼著開發(fā)者使用新技術(shù),技術(shù)方面的原因是最重要的。但這個看似很正確的技術(shù)在Linus Torvalds看來是古怪的,他想當然地認為,完全可以運行多個不同的模擬器進程,來執(zhí)行不同的任務(wù),使得每個任務(wù)都可以享受內(nèi)存保護。這種浪漫主義情調(diào)讓他無比鄙視Apple員工的智商。而事后當筆者使用早期版本的Mac OS X時,發(fā)現(xiàn)Linus Torvalds的想法完全是不切實際的。因為這個模擬層本來就要占用不少的內(nèi)存和CPU,在處理器速度不及今日手機、內(nèi)存無比精貴的90年代末,跑一堆模擬器進程無異于是和自己過不去。
Steve Jobs考慮到Linus Torvalds是開源軟件的領(lǐng)軍人物,便繼續(xù)以開源為話題,動之以情,曉之以理。他告訴Linus Torvalds,我們這個系統(tǒng)做出來后呢,所有的Unix層(非圖形界面層),都會開源,所以事實上你加入我們,也是在給開源做貢獻啊!而由于在開源圈子混久了,Linus Torvalds對此絲亳不領(lǐng)情,他認為,有誰會想用一個底層是開源而圖形界面是不開源的系統(tǒng)呢?所以,像筆者這樣的用戶被“代表”了。
Mac OS X與Linux分道揚鑣
總之,這次會面完全談崩,兩人站在不同的角度去看問題,加上Steve Jobs和Linus Torvalds都是個性鮮明、唯我獨尊的人,技術(shù)和商業(yè)上的考慮都不同,所以會談中雙方簡直就是雞同鴨講。這次討論也使得Apple放棄Linux,轉(zhuǎn)而采用FreeBSD技術(shù),并在2001年任命FreeBSD的發(fā)起者、領(lǐng)軍人物Jordan Hubbard為BSD技術(shù)小組的經(jīng)理,并在后來升為Unix技術(shù)總監(jiān)。至于Apple的內(nèi)核技術(shù)后來走向何方,我們下期再講。
筆者認為,Apple和Linus Torvarlds的商談破裂,以今天的眼光來看,是因Linus Torvarlds的自命清高和短視造成的。他不懂得尊重其他開發(fā)者的意見,并且不斷抬扛。包括后來關(guān)于C++的論戰(zhàn).mac OS X發(fā)布后,Linus Torvalds又數(shù)次嘲笑Mac的技術(shù)落后,并說這些他在當年和Steve Jobs開會時就預(yù)料到了。直到最近,他終于有些成熟,對Mac OS X的觀點開始緩合,但還是不忘批評Mac的文件系統(tǒng)就是垃圾(事實上,Linux的也沒好到哪去,至少Apple還搞過一陣ZFS)。這種性格最終導(dǎo)致在 Mac OS X和iOS大行其道的時候,Linus Torvalds連兔子湯都不曾分到。
而事實上這對Apple也是件好事.apple重要的是利益而不是折騰,即使是開源也是利益驅(qū)動。像類似Linux開發(fā)組那樣自以為是但代碼又寫得差的開源項目,Apple事后也遇到不少,比如GCC編譯器項目組。雖然大把鈔票扔進去,在先期能夠解決一些問題,但時間長了這群人總和Apple過不去,并以自己在開源世界的地位恫嚇之,最終Apple由于受不了這些項目組人員的態(tài)度、協(xié)議、代碼質(zhì)量,覺得還不如自己造輪子來得方便,因此Apple推動了類似LLVM這樣宏偉的項目,并且在短短幾年內(nèi),使其成為最領(lǐng)先的開源軟件技術(shù)。這無異于扇了Linux小組、GCC小組一記響亮的耳光。
原文:http://www.programmer.com.cn/6617/
【編輯推薦】