跳至主要內容

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)。不是因為藉刻意模糊來保持安全性,那很虛假,而是因為那些技術本身是作戰的一部分。

留言

此網誌的熱門文章

小裁縫之路序章:量身

敝人因吃飽太閒,報名了裁縫補習班,秉持著網路分享精神,在此將所學與大家分享順便當復習,學費我來付~裁縫大家學,哈。 -- 課程內容主要是講上衣的板型設計,因此技法方面還是要靠自己,悲劇的是頭兩堂課因為要出差所以都缺課,錯過許多重要的觀念。一開始畫圖比較多,然後預計會制作一件上衣一件洋裝。 服裝制作首先最重要的就是量身了,精確地取得各部位的尺寸是很重要的,因為很多衣服需要量身才好看,這點是成衣無法與高級服裝相提並論的重點 一般常量到的記號有以下: 後頸點(B.N.P):第七節椎骨上端,低頭時的凸點。 側頸點(S.N.P):僧帽肌中點與領圍線的交叉點。 肩點(S.P):肩峰與肩胛骨的交叉點。 前頸點(F.N.P):前鎖骨連線中點。 背長(BL):側頸點沿肩胛骨至小腰線。 前全長(FL):側頸點沿B.P點至小腰線。 後肩寬:後身量肩點至肩點。 肩寬(SW):前身量肩點至肩點。 小肩:側頸點至肩點。 背寬(BW):左右腋點經肩胛骨長。 胸圍(B):兩BP點與地面水平量一圈,注意有吐氣與吸氣兩種 腰圍(WL):腰部最細軟處合身量,無褲頭減一公分(製圖時) 臀圍(HL):臀部最突出處與地面水平量一圈,從腹圍(腰下十公分)往下量最大處 領圍(NL):後、側、前頸點放一手指量一圈。 胸寬:左右前腋點間直量。 BP長:測頸點至BP點。BP寬:BP間距。 肘長:肩點至肘骨。 袖長:肩點、肘長、腕股,非直線須分開量。 乳摺份(D):依FL-BL差調整。 脇腰長:側身量WL至HL 膝長:側身量WL至膝骨距離,此值決定窄裙的活動量。 裙長、褲長、前脇:依照流行款式決定,皆以WL為基準開始量。 量身的其他小技巧:一般會先在腰線上綁一條細鬆緊帶,作為WL線基準,量一圈的要注意是否與地面平行,這樣量到的才會是正確的。量背寬與胸寬將衣服夾在一下看摺線位置就是量取點,良好需要的身體尺寸後,就可以依照尺寸來製版。 製圖上有以下常見符號,但照習慣可以更改 總歸來說,要做衣服一般是以下步驟 畫設計圖,選擇布料 量身體尺寸 分析車縫步驟、縫製方式 準備製版(尺寸、配件),左右不對稱要同時製版 上衣、洋裝:後片 → 前片 →領子 →袖子 →配件。 褲子與裙子:前片 →後片 →配件 剪裁(注意馬克圖、布紋方向) 縫製(後面...

巨大船舶螺旋槳

好久沒寫了~來分享很無聊的東西,翻譯DRB上面的文章。 大船的螺旋槳,這是平常看不到的,不過是非常宏偉有力的巨物 喝~想當時在1834-5年Rev. Edward Lyon Berthon發明這種螺旋的推進器時,在上面的當局可是戲稱這精美的玩具-永遠不能也不會-推動一艘船。 當然現在多數船舶都是靠這玩具推的,相關的研究與技術發展也越來越多,後來發現要做好還真是相當困難啊! 現在精巧的高級品大約直徑30公分就要幾百萬了~這些大船用的就更不用說多麼價值不斐啦! 左下角是由 Stone Marine Propulsion 做的85噸螺旋槳,上面和右下是 MMG 的 -- 世界最大的螺旋槳之一,泡菜現代重工做給赫伯羅特一艘7200 TEU的貨輪,直徑9.1米,六葉重101.5頓。 但是呢~上圖並不是這隻螺旋槳,是另外一隻72噸的。 -- 目前最大的應該是德國Mecklenburger Metallguss公司做的,總重131頓,裝在Maersk最大的貨櫃輪上,一艘可以上14770個20呎櫃的巨獸,397米長,56米寬跟68米高, 詳細如此 圖片來源 上圖則是大西洋破冰船- Palmer 的螺旋槳,旁邊有保護罩避免"冰刀"。 下面是一些Holland America Line的Eurodam號的螺旋槳圖。 下面這張是正在裝"新阿姆斯特丹號"的螺旋槳 -- 鐵達尼號應該是全世界最有名的一艘船,她的螺旋槳同樣也很巨大~三個獨立的引擎推動三組銅製的螺旋槳,兩邊的重38頓而中間的是17頓 鐵達尼號或許是那個時代最優秀的船,但是下面這個海洋綠洲號大概有她的五倍那麼大~也是目前最大的客船,當然這樣的大船也需要巨大的螺旋槳把她從芬蘭的出生地送到佛羅里達的工作地~ 不過這艘船竟然也是韓國船STX造船廠的作品~泡菜造船真強。 另外一艘Carnival Cruise Lines 的船 Elation,也是芬蘭製然後送到美國,目前待在聖地牙哥 她的螺旋槳一樣讓安裝的工人看起來像小人國的傢伙。 下面則是一個在舊金山港船塢的螺旋槳 這些是另外一家渡輪公司Norwegian Epic的黃銅螺旋槳 Celebrity Solstice的螺旋槳,一樣可以看出到底有多大~ 這個則是鼎鼎大名的...

Firefox 字體平滑 設定

算是筆記一下 Firefox 6之後有個重要(對我來說)的功能就是設定Cleartype的選項,還蠻強大的,算是半套GDI++的功能包含其中。啟動方式很簡單,就是到about:config然後在filter中打入gfx,就會出現像是色彩管理及畫面輸出等相關設定 個人設置如下 gfx.font_rendering.cleartype.alway_use_for_content=ture /*對所有內容打開*/ gfx.font_rendering.cleartype.use_for_downloadable_fonts /*預設開啟*/ gfx.font_rendering.cleartype.params.cleartype_level gfx.font_rendering.cleartype.params.enhanced_contrast /*這兩者依個人喜好設定,數值0-100,個人沒將cleartype_level開滿因為會覺得有點糊*/ gfx.font_rendering.cleartype.params.force_gdi_classic_for_families /*類似GDI++可以依字型設定輸出平滑方式,但是只有分系統預設方式及Fx自己的方式,若覺得系統方式渲染更好的字型就加進來*/ gfx.font_rendering.cleartype.params.force_gdi_classic_max_size /*用系統cleartype輸出字型最大尺寸,大於本尺寸的字型不用cleartype輸出*/ gfx.font_rendering.cleartype.params.gamma /*gamma值,一般2.2=2200,1.8的就設定1800*/ gfx.font_rendering.cleartype.params.pixel_structure /*液晶螢幕的陣列,一般都是RGB所以設定1,0 = flat, 1 = RGB, 2 = BGR */ gfx.font_rendering.cleartype.params.rendering_mode /*重點項目,0 = default 自動選擇, 1 = aliased 不平滑輸出, 2 = GDI Classic 普通的,用整個像素控制, 3 ...