DHH漫談Ruby on Rails的文化
08年8月,Ruby on Rails創(chuàng)始人DHH在芝加哥接受了Oreilly記者的采訪(DHH當(dāng)時住在芝加哥而不在其老家丹麥),談?wù)摿艘恍㏑uby on Rails的技術(shù)和趨勢。
原文在:http://news.oreilly.com/2008/08/interview-with-david-heinemeie.html
以下是JavaEye編輯罒呍唲對訪談內(nèi)容的翻譯(部分內(nèi)容經(jīng)51CTO編輯校訂修改過):
====================
上周,在芝加哥我采訪了David Heinemeier Hansson,談?wù)摿艘恍㏑uby on Rails的技術(shù)和趨勢。一開始我詢問他對芝加哥的看法,而后就詢問了他一些有關(guān)Rails的文化和社會不斷變化的問題。我們討論到敏捷,以及許多技術(shù)在追趕他們。
【采訪開始】
DHH:您好,我是David Heinemeier Hansson,Ruby on Rails 的創(chuàng)始人,37signals的合作伙伴。我將會出席12月的柏林 RailsConf Europe。
Tim O'Brien:我們正在芝加哥的Wicker公園,居民區(qū)也叫Wicker,這是遞歸?
DHH:這是一種遞歸。我認(rèn)為居民區(qū)的名字本身是根據(jù)公園的名字而來。因此我認(rèn)為這就是它如何開始的。不管它是所謂的bucktown或是所謂的Wicker,甚至大多數(shù)人使用更長的版本:“我住在bucktown/Wicker公園”。
TOB:談到芝加哥,是什么原因是您遷往芝加哥?為什么要從丹麥搬來?
DHH:幾乎我所有的生活都是在丹麥度過的,提出搬到芝加哥來是在三年前,因為37signals。公司在芝加哥成立,有一半以上的雇員都居住在芝加哥。我的伙伴Jason Fried也居住在這里。我的女朋友要就讀于這里的一所大學(xué),所以我有機會來這,一切都是這么的順理成章。
TOB:你是如何發(fā)現(xiàn)芝加哥的技術(shù)和創(chuàng)新?是否有豐富的文化和技術(shù)呢?跟舊金山比較呢?
DHH:我認(rèn)為它非常不同于舊金山,它的偉大也在于它不同于舊金山。對我來說,并不是看中了它的科技,我不認(rèn)為一個城市科技的強大是一件好事,這就是為什么我覺得它好。
芝加哥更多地是處在一個中立區(qū)。沒有太多的高科技,但我可以在飯后跟您一起散步,這都是它的好處。芝加哥給人的感覺更“真實”,少了虛假,少了喧囂……
TOB:你最近為Y-Combinator開辦了start-up學(xué)校。
DHH:Paul Graham ,我不知道他是不是自稱VC,可能不會。在每年春季和秋季的時候,他們運用早期階段的天使基金。start-up學(xué)校開始用Y Combinator的錢來運營新的公司。
我被邀請在那發(fā)言。對我來說,這是一個偉大的機會。當(dāng)然我也參加了其他類似的會議,在我心目中的想法是“let's get to VC, let's get eye-balls, let's get big, let's get bought”。所以我提供了一個候補的想法,如何建立一個公司,如何讓公司成長,如何能不出售您的公司,如何使它變?yōu)楦鼘嶋H的東西。在這個基礎(chǔ)的前提上我們要考慮的是如何獲得更多的在線人數(shù)-這里有三個因數(shù):有一個理想的產(chǎn)品,為產(chǎn)品制定一個合理的價格,無需從所有對立的路線賺取利潤。你也可以采用VC的錢,靠廣告或其他任何的方法,只向最終用戶收取費用。
TOB:我們來談?wù)凾witter。您覺得人們將Twiteer作為Rails scaling的例子這樣公平嗎?您能不能講一講為什么有人會說:Rails不可擴展因為Twitter不能擴展,它們之間有什么間接的聯(lián)系?證明或反駁。 (51CTO編者注:當(dāng)時由于Twitter規(guī)模越來越大,性能問題也變得多了起來。有評論說是Rails難以擴展的關(guān)系導(dǎo)致Twitter的性能問題?,F(xiàn)在Twitter的后臺有一部分已經(jīng)轉(zhuǎn)而使用Scala,原計劃今年年底應(yīng)該會大部分后臺由Scala驅(qū)動)。
DHH:任何應(yīng)用程序,不管是否能夠擴展,通常都不會有一個整體的大量的工作要做,導(dǎo)致它與框架或編程語言或其他任何的高新技術(shù)陷入孤立的地步。有些人認(rèn)為Twitter不可擴展,這是不正確的,它顯然是可以擴展,并且每天都在成長。我每天都要使用到它,有很多人每天也同樣要使用到它。它存在缺陷是肯定的,但是卻不是不可擴展。Twitter從來就沒有如今天這般強大,也從來沒有如今天這般發(fā)展如此之快。
關(guān)于這些問題是否涉及到Rails的網(wǎng)絡(luò)框架或其他,它始終只是一個不相干的問題。對于我來說,它只是作為一個過濾器。如果人們固執(zhí)的認(rèn)為是Twitter導(dǎo)致Rails不能擴展,我也無話可說。我不會深入的去解釋,我只想說,他們根本就沒有真正的了解這門技術(shù)。
TOB:我們做了一個關(guān)于消極和積極情緒的民意調(diào)查。Rails是笨重的企業(yè)系統(tǒng)的反面。你怎么面對不愿使用Rails的人,他們會說,看Twitter吧?
DHH:總體來說,Twitter的性能問題只是給了長期以來對Rails有惡意的人一個攻擊的工具而已。而另外有很多人很喜歡Rails,不管反對者怎么說,Rails正在迅速普及,所有我們做的都是非常有趣的事情。
如果有人憎恨這些,那么就是他們害怕做有趣的事情,或者不敢面對反對常規(guī)的事情。宇宙有一種平衡機制,我們有大量的熱情開發(fā)者每天開發(fā)Rails的工具和插件,因此有幾個反對者不奇怪,這是一種平衡。
TOB:什么是Rails的文化?從外部來看,它顯示出一種波西米亞式的隨意,打敗偶像崇拜的沖動。Rails在意識文化方面的引導(dǎo)和挑戰(zhàn)是非常成功的?,F(xiàn)在Rails開始進入穩(wěn)定期,說一說現(xiàn)在它的文化和它如何改變的?你看到它的改變了嗎?它面對的意識文化方面的挑戰(zhàn)少了,革新減少,是否進入傳統(tǒng)的波西米亞文化的套路,以及如何在文化上的團結(jié)?
DHH:我認(rèn)為你非常正確。Rails一開始象一群叛亂份子,它拒絕教條,拒絕其他語言的僵化思路,因此出現(xiàn)了很多觀念上的沖突和爭論?,F(xiàn)在Rails已經(jīng)獲得它的地位,在很多方面被證明是正確的,被更多的人接受,也就意味著Rails開始不那么邊緣化了。但是我認(rèn)為事情都是在發(fā)展的,總會有新的爭論出來,Rails能夠始終保持反傳統(tǒng)的挑戰(zhàn)地位。
現(xiàn)在,就有一個關(guān)于Web Services的,業(yè)界一直使用極其龐大繁重的SOAP和WS-Deathster方案,而Rails會尋找更加輕便簡單的道路。
TOB:我不得不打斷你,是否能夠通過Soap4R在Rails中使用SOAP?這是一個驚人的實踐。
DHH:是的,我不希望把這種方式當(dāng)作我最大的敵人。我們做的很多工作,讓人們來選擇,我不會鄙視那些使用SOAP或者其他繁重框架的人,因為這也是他們的工作。雖然選擇新系統(tǒng)的人們或者使用其他技術(shù)方案的人們,他們選擇的技術(shù)很多時候我不能理解。
Rails會繼續(xù)采納意見和繼續(xù)成為爭論焦點。同時,我認(rèn)為Rails的內(nèi)心就如同從外部看到的一樣,因為這是很個在很短時間建立的新技術(shù)。
同時有很多很多的開發(fā)者使用C#, Java, PHP等等,比使用Rails的開發(fā)者多的多。雖然,在Rails發(fā)布的5年來,我們積累了大量的用戶。通過各種方式來為已經(jīng)確立的Rails技術(shù)添磚加瓦是必要的,還有很多事情需要做。
如果我們和身邊的接觸的人都使用同一個博客,同一個聊天室,參加同一個技術(shù)會議等,你會趨向認(rèn)為:每個人和我都很象,每個人都使用Rails,這是確定的。但是這是錯誤的,我們所處的環(huán)境只是整個大環(huán)境的一個小部分。我們必須接受很多其他的人和觀點。
TOB:你能談?wù)処ron Ruby或者JRuby是否是Ruby的替代技術(shù)?
DHH:這個很有趣,因為在很多情況,在實踐和工具以及推送技術(shù)給用戶的方式,Sun公司象一個邪惡的帝國。
TOB:很多方面稱Sun公司為邪惡帝國?
DHH:我認(rèn)為他們是。但是我意識到技術(shù)領(lǐng)域不止一個帝國,而且帝國也不是鐵板一塊。Sun的內(nèi)部有很多部門,他們的工作非常棒。我認(rèn)為Charles Nutter 和整個 JRuby團隊(51CTO編者注:這幾位現(xiàn)在已經(jīng)離開Sun,跳槽到了Engine Yard)就是。我和他們在一起不短時間,經(jīng)常在不同的技術(shù)會議遇到,他們是令人敬畏的開發(fā)者,做了很多有趣而優(yōu)秀的工作,他們的工作可以形容為:“Ruby 和 Java的對抗”。
而且,我認(rèn)為他們在做很實用的工作,很多開發(fā)者使用Java環(huán)境,Java是成名已久應(yīng)用廣泛的技術(shù),擁有巨大的應(yīng)用基礎(chǔ),他們不得不在Java環(huán)境下工作,有時候技術(shù)領(lǐng)域不是看起來的那樣有很多種選擇。
TOB:在你的起始營地談話中,你特別提到技術(shù)公司雇傭開發(fā)者來設(shè)計框架和APIs——這是一個巨大的錯誤?
DHH:我認(rèn)為是的。我認(rèn)為這個事情和一般認(rèn)為的不一樣。例如:在Java中重新應(yīng)用Ruby不是一個設(shè)計實踐,不是和設(shè)計一個API庫的設(shè)計方式一樣。我認(rèn)為當(dāng)你做這類的事情,不要重新應(yīng)用,不要重新修改技術(shù)規(guī)格,也就是說,重新設(shè)計架構(gòu)不是一個好方法。我不喜歡這樣。但是在J-Ruby中重新應(yīng)用Ruby我認(rèn)為相當(dāng)好。當(dāng)你沒有在真正開始做一件事情的時候,我認(rèn)為視野決定了你不得不選擇最難的方式來做。
這是一個抽象的差異,但是我肯定的相信類似Ruby和Rails的框架不能被那些全職工作的人所創(chuàng)立。(譯者注:DHH反對全職工作啊,呵呵。) 你不能設(shè)計這類事務(wù)如果你并沒有真正開始工作,同時面對真正的系統(tǒng)環(huán)境。同時成為客戶和開發(fā)者這種感覺非常棒。你能夠做更好的決定,并同時擁有更多樂趣。
TOB:Robert Lefkowitz 三周前在開源大會(OSCON)上做了演講,他闡述了關(guān)于技術(shù)和慣例的區(qū)別,實際工作和領(lǐng)導(dǎo)工作的區(qū)別,工程技術(shù)和藝術(shù)以及科學(xué)之間的不同。Rails和其他成功的技術(shù)被歸類于工程技術(shù),有實際的需求和真實的產(chǎn)品來支持。那么設(shè)計一個API庫或者設(shè)計一個抽象框架,是不是科學(xué)范疇的?
DHH:我肯定的說,在我的內(nèi)心,我在科學(xué)中成長,技術(shù)也是如此。我認(rèn)為他們舉了錯誤的例子,類似Rails和API開發(fā),我認(rèn)為這兩個更像藝術(shù)和技巧……我不認(rèn)為我是工程師,我更愿意用工匠(Craftsman)來形容自己。
TOB:下一步你打算做什么?有什么技術(shù)抓住你的眼球,有沒有雖然和你現(xiàn)在做的工作無關(guān),但是你愿意仔細(xì)看看的技術(shù),看能不能帶來關(guān)于Rails的靈感?
DHH:現(xiàn)在出現(xiàn)了很多新的技術(shù)很吸引我。最近我對CouchDB和BigTable很感興趣,另外一個就是Memcached,特別是整個使用鍵值過期和生成鍵值的方式。
TOB:BaseCamp和Write Board,你都是水平擴展,對不對?
DHH:是的,我們使用同一方式,在應(yīng)用方向和web方向,我們水平擴展。如果我們需要更多容量,我們添加更多的應(yīng)用服務(wù)器,更多mongrels,更多web服務(wù)器等等。在數(shù)據(jù)庫方面,我們也在擴展。我們剛購買了一個更大的服務(wù)器群集來容納BaseCamp的數(shù)據(jù)庫。
TOB:你們在兩個中間做了二級制復(fù)制?
DHH:是的,只是用來備份。所有讀寫操作都在單一的"big ass"機器上,而且我們這樣做只是因為這樣容易,而且經(jīng)濟?,F(xiàn)在仍然是。這是一個有128GB RAM的機器,如果需要我們會擴展到256GB,并繼續(xù)擴展。如果不是在一個機器上擴展會很痛苦。
【編輯推薦】