Perisic 說(shuō)道:“我們發(fā)現(xiàn),在開源了項(xiàng)目之后的第一個(gè)結(jié)果竟然是我們開發(fā)者撰寫出了質(zhì)量更好的代碼。將代碼放在自家的門后,只會(huì)成為鼓勵(lì)大家偷懶、馬虎,開源之后,則不一樣,這樣會(huì)激勵(lì)開發(fā)者們,使他們更加的細(xì)心。開源之后改進(jìn)尤為明顯的有,文檔也有人寫了、代碼也更容易讓人閱讀了、而且非常注重每一次的測(cè)試結(jié)果。”
將代碼開放以后,也就意味著開發(fā)者們要接受批評(píng)--非常公開的批評(píng)。用 Perisic 的話就是:“當(dāng)一位開發(fā)者將某一段代碼公開以后,也就是將自己的聲譽(yù)放在了網(wǎng)上,其本質(zhì)上是一種類似同行評(píng)審。這樣就讓開發(fā)者們能夠激勵(lì)自己,將他們的代碼寫的更好、撰寫更完善的文檔、以及對(duì)于可重用性的重視。”
Perisic 又說(shuō)道:“當(dāng)然,開源也不僅僅是有利于代碼質(zhì)量。它也能夠確保開發(fā)人員的視野不至于太過(guò)于狹隘,總是盯著自己眼前那點(diǎn)事。在一個(gè)開源項(xiàng)目下工作,也就意味著一起共事的不僅僅是自己身邊的同事,而且還有來(lái)自其它公司的開發(fā)者,這會(huì)幫助大家對(duì)于技術(shù)、業(yè)務(wù)方向的發(fā)展趨勢(shì)有一定的意識(shí),而且可以幫助他們學(xué)習(xí)如何評(píng)估其他開發(fā)者的輸入。在這個(gè)多元的世界中,開發(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)目并將之開源,應(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ú)立的開源項(xiàng)目是偉大的,但是如果它是在 Apache 的羽翼下而且也蠻有意義,那就不要猶豫了。如果已有的社區(qū)的開發(fā)者們渴望使用它,那就更不用有所猶豫了,趕緊將之開源!
既然這樣,那么問(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 另外開發(fā)了一個(gè)叫做Gobblin的項(xiàng)目,LinkedIn 新的數(shù)據(jù)感應(yīng)框架,也可以實(shí)現(xiàn) Camus 的功能,只是更加的完善,LinkedIn 此時(shí)做的決策就是,為 Camus 的用戶提供遷移的路徑。
總結(jié)以上所有,開源項(xiàng)目是需要付出巨大的時(shí)間來(lái)開發(fā)、精心培養(yǎng)、并時(shí)刻留意的。Perisic 非常明白其中的涵義,但是認(rèn)為值得:“對(duì)于開源社區(qū)來(lái)說(shuō),再大的投入都是值得的,因?yàn)榛貓?bào)也是豐厚的。”