Google的開源之路

一年的最後一天
放個問與答
看看Google雨開源的關係為何!
----------------------------------------------------------------------------

搜尋巨人Google大量使用開放原始碼軟體,也積極參與許多開原碼程式的開發計畫,甚至是部分計畫的贊助者。

Google開原碼計畫經理Chris DiBona表示,Google的電腦系統上安裝各式各樣的開原碼軟體,例如Ubuntu。該公司最近也依據開原碼授權釋出用來開發Java軟體的 Google Web Toolkit,以協助程式設計師打造Web 2.0應用程式。

Google還出資贊助一項稱為「Net Trust」的計畫。這項開原碼程式的原始碼最近透過Google Code (Google為開原碼開發人員建立的線上協作園地)發布。Net Trust由印第安納大學的L.Jean Camp率先發起,是一項反網路釣魚(antiphishing)軟體開發計畫,其作用是根據網路使用者所屬社群的成員對網站的評價,來標註某網站值不值得信任。

日前DiBona接受CNET News.com專訪時表示,Google雖積極參與開原碼活動,但Google也篤信專屬(proprietary)軟體的價值。他提到Google偏好的開原碼程式、Java開放原始碼對Google的影響,以及有些程式碼Google絕不會對外部開發人員開放的理由。以下是訪談摘要。

問:Google支持開原碼計畫的標準何在?

DiBona答:必須考量三件事。有時,Google的工程師會拿某個計畫給我們過目,希望我們出資贊助。我們會研究看看,評估那項計畫構不構成合理的投資條件。所謂「合理」,意味如果投資的話,會不會催生更多的程式、或培育出更多的開原碼程式開發人員、或對開原碼社群作出某種別的貢獻。

我們已釋出許多程式碼,但我們比較可能參與既有的社群,而不是自己從頭建立新社群。檢視我們贊助過的活動,即可知道那些計畫都符合這三項標準中的一項,或不只一項。比方說,Net Trust基本上協助這所大學(印第安納大學)編寫更多的開原碼程式,並培養出更多的開原碼程式開發人員,因為可徵召一群學生投入此事。我們贊助這類計畫的範圍很廣。

問:Net Trust是Google從旁協助的開原碼計畫之一,來龍去脈為何?

答:約莫一年前,某個Google工程師與這個開原碼集團接觸。他的朋友在印第安納大學就讀,正在研究如何運用社交網路反制網釣問題。我們曾贊助許多的開原碼軟體,而這項計畫聽起來很有意思。後來我們跟Jean Camp面談,進一步了解她的研究計畫,覺得很有趣,所以就出資贊助。

簡單說,Net Trust是一種讓使用者互相參考意見,以確認某個網站的確是表裡如一,而不是掛羊頭賣狗肉。背後的觀念是:如果你信任你的朋友,也連帶信任你朋友的朋友,那麼你對網際網路的信任感就會增加一些。這很吸引人。

問:有很多人要求你支持開原碼計畫嗎?

答:提到開原碼跟錢,有趣的是,錢未必能轉化成程式碼。我們非常注重贊助活動會不會產生程式。意思是,當登門造訪的人想做的不是以程式為導向的活動時,我們不支持。眾所周知,如果你想寫程式,跟我們很好談;如果你要的是建立別的管理組織,就不怎麼好談。

問:Google本身可曾產生開原碼計畫?

答:我們曾經釋出許多程式碼,但我們比較可能參與既有的社群,而不是建立新的社群。我寧可在(Linux)核心之上添加修補程式,而不是另外再打造新的核心。我寧可在Apache上加入修補程式,而不是另外再創造新的Apache。我認為這樣做更好。

問:Google或Google人參與的頂尖開原碼計畫為何?

答:各種的Apache計畫,以及整體而言,Apache軟體基金會。不過,我們聘請Andrew Morton之後,也很重視Linux核心。我們曾回饋一些修補程式給MySQL,但MySQL也許擠不進前五名。我們另撥出許多人力投入OpenBSD 和OpenSSH。

問:Firefox呢?

答:喔,Firefox當然有。我不知道為什麼忘了提。

問:Firefox顯然是用戶端程式,除此之外,你們參與的其他開原碼計畫似乎都偏向伺服器方面。這是巧合呢,還是你們偏重伺服器計畫呢?

答:大致來說,的確是如此。
問:那是因為你本身也用這類軟體嗎?

答:一點也沒錯。我們極可能修補對我們重要的程式,那是很自然的事。我們曾釋出一些並不是我們謀生工具的東西,但我們專注於對我們最重要的軟體。




問:那Google本身用哪些開原碼軟體?

答:我們用Linux核心。我們取得GNU工具。我們用自由軟體基金會 (FSF)出的許多套編譯器。我們也用一些Apache程式庫(libraries)--我們不常用Apache網頁伺服器,但常常使用他們的程式庫。 OpenSSL和OpenSSH經常使用。我們用Python和C這類的程式語言。也常用MySQL。諸如此類。

問:你用什麼版本的Linux?

答:我們用Goobuntu,是我們自家版本的Ubuntu,安裝在我們自己的桌上型電腦上。我們的伺服器系統脫胎自舊的Red Hat版本,但後來程式改變得實在太多,所以現在實質上已變成我們自己的版本。就作業系統而言,我們以前曾亦步亦趨地跟隨Red Hat,但現在系統變得很精簡,很不一樣,所以情況已改觀。

問:你們的桌上型電腦選用Ubuntu,有沒有什麼理由?

答:我們真的很喜歡Ubuntu。我們覺得執行效果好,使用者很容易上手,管理起來也很容易。這是跟得上時代的版本。非常安全。程式寫得非常好。他們起初從Debian著手,改造得很棒。我認為他們的成就卓著。當然,我們也加以修改,以便在我們的網路上執行,並提供我們軟體開發人員需要使用的那類工具。

問:你們有把Google版Linux貢獻回社群嗎?還是你們不必這麼做呢?

答:我們不必這麼做。我們的確在搜尋appliance和我們的網站上用了一些東西,因為我們必須釋出。

可以談談我們的開原碼協議遵守狀況,那跟我們的開原碼推廣活動是兩回事。最重要的是遵守開原碼授權條件,這個我們優先實行。接下來才從事其他活動,像是Summer of Code,和贊助Net Trust這類計畫。

問:你在贊助Net Trust這類計畫時,你會指定採用某種特定的開原碼授權方式嗎?

答:我們通常偏好Apache授權,但也願意跟別人配合。

問:為什麼偏好Apache授權?

答:Apache授權對使用者來說容易遵守。對我們而言,要遵守GPL(General Public License)、LGPL、MPL、CPL等等授權條件很容易,但對使用者來說可能有點難。我們希望把事情化繁為簡,所以每當我們贊助計畫時,就希望使用者能利用到我們贊助計畫的成果。

問:Google對開放原始碼與封閉原始碼混用的看法如何?你們似乎是混合原始碼公司的一個範例。

答:這兩種軟體顯然和平共存。有許多軟體我們絕不會釋出;這些軟體在我們用的開原碼基礎上執行。

問:昇陽已開放Java的原始碼,對你們來說有沒有什麼差別?

答:我們也常用到Java,現在Java開放原始碼是好事。我認為,昇陽這麼做是美事一樁。對我們而言--就我們推出軟體的方式,以及我們透過Google.com向使用者展示的方式而論--Java原始碼開放與否其實差別沒那麼大。不過,我們仍然很高興他們這麼做了。

問:那賦予你們更大的彈性嗎?

答:確實賦予我們更多彈性。以往,如果我們發現Java程式有錯,事情比較棘手。若你想修補自己的Java,必須與昇陽簽訂特別協議。我們是有簽那種協議。但現在要透過昇陽釋出那些修補程式,再釋出到社群,可比以前容易多了。

問:你覺得開原碼最棒的好處是什麼?

答:對我們來說,就是彈性。開原碼軟體最棒的一點,就是我們事先不必徵求任何人的允許,就能著手修改我們用的作業系統。不必徵求任何人的允許,就能修改我們用的資料庫。我們用這些東西,也不必支付按用戶端份數計價的授權費。這一點極為重要,不僅是從節省成本的觀點來看,也從彈性和速度的觀點來看。

能夠用我們的電腦做任何我們想做的事,就極具價值。不論是競爭對手或朋友,沒有人有動機對我們說不。這實在很棒。但願更多的企業能體會這一點。購買軟體要付出的代價其實遠不止於財務成本而已。買軟體意味你必須真的信任跟你往來的人,因為他們對你瞭若指掌,而且具有影響力,能拖慢你的腳步。所以你必須謹慎挑選合作夥伴。開原碼軟體最棒的事,就是你的夥伴就是自己。

問:但Google也重視專屬軟體。對你們而言,保護商業機密很重要嗎?

答:那是當然!我們不可能公布任何排序公式(ranking functions)。不是因為藉刻意模糊來保持安全性,那很虛假,而是因為那些技術本身是作戰的一部分。

留言

此網誌的熱門文章

小裁縫之路序章:量身

Augmented Reality

作業順便PO~~宋家王朝