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