開(kāi)源就是不斷的奉獻(xiàn)自己,除非它將你的業(yè)務(wù)先毀掉。但是,有太多的人先入為主,將各種偏見(jiàn)灌輸給你,諸如:開(kāi)源有“毒”,開(kāi)源根本無(wú)法賺錢之類的。這個(gè)時(shí)候,你只需要默默的,轉(zhuǎn)身看看那些成功的利用開(kāi)源的公司即可。
互聯(lián)網(wǎng)的巨頭,即使如 LinkenIn,也是開(kāi)源的“專家”,讓我們先過(guò)一遍 LinkedIn 的 GitHub 賬戶, 竟然是一家發(fā)布了 75 個(gè)開(kāi)源項(xiàng)目的公司。而且其中有一些已經(jīng)是獲得巨大成功的項(xiàng)目了,有眾多的開(kāi)發(fā)者和公司參與開(kāi)發(fā)和使用。是的,沒(méi)錯(cuò),這就是 LinkedIn,外表光鮮的互聯(lián)網(wǎng)公司,主營(yíng)的業(yè)務(wù)是招聘,標(biāo)榜自己是“將全世界的專家聯(lián)系起來(lái),讓他們更具生產(chǎn)力,并變得更加的成功。”
最近被各大公司釋放開(kāi)源項(xiàng)目的新聞刷屏,Google 剛剛開(kāi)源了人工智能項(xiàng)目、FaceBook 開(kāi)源機(jī)器學(xué)習(xí)項(xiàng)目 等等,幾乎每周都有這些 IT “大鱷”們發(fā)布新的開(kāi)源項(xiàng)目,令人目接不暇。 LinkedIn 也不甘示弱,近期又開(kāi)源了其旗下項(xiàng)目 Amdry ,這是一款對(duì)象存儲(chǔ)系統(tǒng)。其實(shí),LinkedIn 已經(jīng)悄然建立了一個(gè)世界級(jí)的開(kāi)發(fā)者團(tuán)隊(duì),和開(kāi)源社區(qū)緊密聯(lián)系,從開(kāi)源中獲益、也反饋給社區(qū)。近來(lái) LinkedIn 的工程副總裁 Igor Perisic 接受了 InfoWorld 的 Matt Asay 的采訪。讓我們來(lái)了解下 LinkedIn 是如何讓開(kāi)源在公司中成功運(yùn)轉(zhuǎn)的。
將代碼開(kāi)放僅僅是個(gè)開(kāi)始
任何人都可以將自己的代碼開(kāi)放,事實(shí)上,類似 Sourceforge 上的很多項(xiàng)目經(jīng)年累月的都是只有很少的開(kāi)發(fā)者,(80%的項(xiàng)目只有兩個(gè)人或更少的開(kāi)發(fā)者)若是有人加入的話,那真是讓人興奮不已。即使是某個(gè)項(xiàng)目有多個(gè)貢 獻(xiàn)者,但是絕大多數(shù)的項(xiàng)目有超過(guò)6個(gè)月的時(shí)間沒(méi)有更新。
事實(shí)上,僅僅從 LinkedIn 開(kāi)源了75個(gè)項(xiàng)目這個(gè)角度來(lái)說(shuō),并沒(méi)有多大的意義,因?yàn)橐粋€(gè)開(kāi)源項(xiàng)目的意義在于能夠在多大程度上引起社區(qū)的興趣來(lái),而這也是 LinkedIn 的開(kāi)源故事的魅力所在。
正如 Perisic 所說(shuō):“數(shù)字通常只是表面的、虛的標(biāo)桿,我們認(rèn)為社區(qū)采用量才是成功的關(guān)鍵指標(biāo)。” 舉例來(lái)說(shuō),Pinot和 REST.li,前者是一個(gè)實(shí)時(shí)的分布式的 OLAP 數(shù)據(jù)存儲(chǔ),LinkedIn 用來(lái)交付可擴(kuò)展的實(shí)時(shí)分析,后者是一 REST 的框架,在 GitHub 上都是超過(guò)一千個(gè) Star 和 Fork 超過(guò) 200 的項(xiàng)目。
另外,一個(gè)開(kāi)源項(xiàng)目最好的健康指標(biāo)就是代碼倉(cāng)庫(kù)的貢獻(xiàn)者數(shù)量和最后的更新時(shí)間,這兩個(gè)指標(biāo)隨著時(shí)間的推移,也會(huì)為項(xiàng)目帶來(lái)更多的貢獻(xiàn)者以及更加頻繁 的更新,形成一個(gè)正循環(huán)。但是對(duì)于社區(qū)來(lái)說(shuō),這還不夠。能夠得到業(yè)界標(biāo)準(zhǔn)的承認(rèn),才是 LinkedIn 的開(kāi)源工作所取得的成績(jī),比如得到 Apache 基金會(huì)的承認(rèn)。
LinkedIn 有多個(gè)項(xiàng)目被 Apache 基金會(huì)當(dāng)選為其頂級(jí)項(xiàng)目,諸如Kafka、Samza、 以及 Helix 。還有其它項(xiàng)目,如分布式鍵值存儲(chǔ)系統(tǒng)-Voldemort 正在變得流行起來(lái)。REST.li 就不用說(shuō)了,已經(jīng)是非常受歡迎的開(kāi)發(fā)框架了??傮w而言,LinkenIn 通過(guò)在開(kāi)源的努力已經(jīng)在開(kāi)源項(xiàng)目上贏得了開(kāi)發(fā)者的認(rèn)同。
開(kāi)源現(xiàn)在已經(jīng)是一個(gè)被濫用的詞匯了,舉例來(lái)說(shuō),太多的公司所發(fā)布的代碼是對(duì)自己有用的,然后希望出現(xiàn)大規(guī)模的社區(qū)圍繞著它來(lái)進(jìn)行,然后希望這個(gè)項(xiàng)目 對(duì)自己的公司更加的有用處。其實(shí),開(kāi)源基金會(huì)也是遵循著同樣的如此的以自我為中心的邏輯,所謂的開(kāi)放治理其實(shí)是一種偽裝,不過(guò)依然是由單一的廠商控制最終 的產(chǎn)出罷了。
當(dāng)然,LinkedIn 也不是第一天就明白成為開(kāi)源社區(qū)的典范的美德的。正如 Perisic 所描述的那樣:“從早期的失敗中,我們學(xué)到的重要的一課就是你不可以將一個(gè)項(xiàng)目扔給社區(qū),然后就不再創(chuàng)新了。還有另外重要的就是,一個(gè)開(kāi)源項(xiàng)目的成功與否 取決于你如何參與到社區(qū)中來(lái)。”
Perisic 進(jìn)一步解釋,這也就是意味著,最為艱難的工作是在將剛剛將代碼開(kāi)源后的那一段時(shí)間,舉個(gè)例子來(lái)說(shuō),LinkedIn 現(xiàn)在所總結(jié)的獲得社區(qū)的反饋非常的重要,以及確保項(xiàng)目的目標(biāo)是容易理解的。這都是經(jīng)歷了很多才學(xué)到的。不過(guò),只為重要的還是團(tuán)隊(duì)的決定,如果你沒(méi)有準(zhǔn)備好 將正在進(jìn)行的工作開(kāi)源的話,最好是先不要將之開(kāi)源了。
何苦呢?
這里就有很多人提出了疑問(wèn)了,既然開(kāi)放代碼已經(jīng)困難重重了,再加上來(lái)自社區(qū)增長(zhǎng)的壓力,何必這么折騰了呢?Perisic 進(jìn)一步點(diǎn)出了其中的奧義,雖然開(kāi)源對(duì)于 LinkedIn 來(lái)說(shuō)有讓價(jià)值在外部流動(dòng)的好處,但是最重要的一個(gè)緣由還是開(kāi)源社區(qū)能夠影響到工程師。
Perisic 說(shuō)道:“我們發(fā)現(xiàn),在開(kāi)源了項(xiàng)目之后的第一個(gè)結(jié)果竟然是我們開(kāi)發(fā)者撰寫(xiě)出了質(zhì)量更好的代碼。將代碼放在自家的門后,只會(huì)成為鼓勵(lì)大家偷懶、馬虎,開(kāi)源之 后,則不一樣,這樣會(huì)激勵(lì)開(kāi)發(fā)者們,使他們更加的細(xì)心。開(kāi)源之后改進(jìn)尤為明顯的有,文檔也有人寫(xiě)了、代碼也更容易讓人閱讀了、而且非常注重每一次的測(cè)試結(jié) 果。”
將代碼開(kāi)放以后,也就意味著開(kāi)發(fā)者們要接受批評(píng)--非常公開(kāi)的批評(píng)。用 Perisic 的話就是:“當(dāng)一位開(kāi)發(fā)者將某一段代碼公開(kāi)以后,也就是將自己的聲譽(yù)放在了網(wǎng)上,其本質(zhì)上是一種類似同行評(píng)審。這樣就讓開(kāi)發(fā)者們能夠激勵(lì)自己,將他們的代 碼寫(xiě)的更好、撰寫(xiě)更完善的文檔、以及對(duì)于可重用性的重視。”
Perisic 又說(shuō)道:“當(dāng)然,開(kāi)源也不僅僅是有利于代碼質(zhì)量。它也能夠確保開(kāi)發(fā)人員的視野不至于太過(guò)于狹隘,總是盯著自己眼前那點(diǎn)事。在一個(gè)開(kāi)源項(xiàng)目下工作,也就意味 著一起共事的不僅僅是自己身邊的同事,而且還有來(lái)自其它公司的開(kāi)發(fā)者,這會(huì)幫助大家對(duì)于技術(shù)、業(yè)務(wù)方向的發(fā)展趨勢(shì)有一定的意識(shí),而且可以幫助他們學(xué)習(xí)如何 評(píng)估其他開(kāi)發(fā)者的輸入。在這個(gè)多元的世界中,開(kāi)發(fā)人員應(yīng)該學(xué)習(xí)如何更加高效的來(lái)領(lǐng)導(dǎo)自己的團(tuán)隊(duì)。”
最后,Perisic指出:”從公司的角度來(lái)看,這也有助于發(fā)展你的品牌工程,這證明在吸引新的人才和留住現(xiàn)有員工方面非常的有好處。”
“種”下你的代碼,讓它茁壯成長(zhǎng)
Perisic非常認(rèn)真的說(shuō):“我認(rèn)為在創(chuàng)建一個(gè)項(xiàng)目并將之開(kāi)源,應(yīng)該像你的內(nèi)部組織一樣去花時(shí)間用心去做。而且發(fā)布什么樣類型的代碼也是有講究 的,是蠻重要的事情。這就是為什么有一些項(xiàng)目無(wú)法發(fā)展出強(qiáng)大社區(qū)的重要原因之一,因?yàn)樗l(fā)布的項(xiàng)目是孤立的。孤立的代碼可能就是那些僅僅只是對(duì)本公司業(yè)務(wù) 有用的代碼,如果它對(duì)于外部其它公司沒(méi)有任何用處的話,那么它失敗的可能性就會(huì)很大。”
但是有的時(shí)候,最好還是在現(xiàn)有的項(xiàng)目上去投入資源和人員,即使它們可能還沒(méi)有獲得大家公認(rèn)的高度。獨(dú)立的開(kāi)源項(xiàng)目是偉大的,但是如果它是在 Apache 的羽翼下而且也蠻有意義,那就不要猶豫了。如果已有的社區(qū)的開(kāi)發(fā)者們渴望使用它,那就更不用有所猶豫了,趕緊將之開(kāi)源!
既然這樣,那么問(wèn)題又來(lái)了,當(dāng)來(lái)自 LinkedIn 外部的代碼對(duì)于 LinkedIn 毫無(wú)用處的時(shí)候是怎么處理的?Perisic 是這么回答的:“你不能只是將項(xiàng)目放棄就不管了,你應(yīng)該為原來(lái)選擇你的用戶提供相應(yīng)的替代和遷移的途徑。” 這里舉個(gè)例子,LinkedIn 曾經(jīng)放棄了一個(gè)叫做 Camus 的項(xiàng)目,這個(gè)項(xiàng)目的功能是用于將數(shù)據(jù)從 Kafka 導(dǎo)入 HDFS 的一個(gè)管道實(shí)現(xiàn),放棄歸放棄,但是 LinkedIn 另外開(kāi)發(fā)了一個(gè)叫做Gobblin的項(xiàng)目,LinkedIn 新的數(shù)據(jù)感應(yīng)框架,也可以實(shí)現(xiàn) Camus 的功能,只是更加的完善,LinkedIn 此時(shí)做的決策就是,為 Camus 的用戶提供遷移的路徑。
總結(jié)以上所有,開(kāi)源項(xiàng)目是需要付出巨大的時(shí)間來(lái)開(kāi)發(fā)、精心培養(yǎng)、并時(shí)刻留意的。Perisic 非常明白其中的涵義,但是認(rèn)為值得:“對(duì)于開(kāi)源社區(qū)來(lái)說(shuō),再大的投入都是值得的,因?yàn)榛貓?bào)也是豐厚的。”
分享到微信 ×
打開(kāi)微信,點(diǎn)擊底部的“發(fā)現(xiàn)”,
使用“掃一掃”即可將網(wǎng)頁(yè)分享至朋友圈。