為什么開源適合LinkedIn

mx64 9年前發布 | 4K 次閱讀 開源
 

開源軟件不再局限于解決小問題、底層問題,否則也不會有公司花代價去創建開源軟件。如今,創建、部署開源軟件的社區日漸成熟,他們代表著世界上最大的幾個技術公司。為什么有此變化?為什么公司應該把一些精力花在開源軟件上?為何要開源?

初衷就是開源軟件能使你的工程師變得更強。隨著他們的作品呈獻給整個社區,他們的技藝也在精進。

他們能寫出更好的軟件

為別人工作,比起為自己公司工作,更能寫出好軟件,這聽起來有點矛盾,但事實上卻很有道理。當開發人員寫一個“內部”軟件的時候,他們傾向于在一些環節上偷工減料——我也是如此——尤其是在文檔、代碼的可讀性和可重用性,以及編寫完善的測試用例方面。但開源社區有多種選擇,如果你的代碼太晦澀,他們不會有耐心去搞明白它究竟在干什么。而公司內部則沒得選。

在開源項目中,開發人員的名字會和他們創建的軟件綁在一起,整個社區都在審視他們。這就好像給網上的代碼和聲譽配上一張面孔,每個人都能看到他們的設計取向和bug。這大大激發了他們去完善自己的軟件。開發人員都希望自己的名字和設計精良的美好事物聯系在一起。

每個優秀的工程師永遠在不停地學習,他們想跟上自己專業領域的發展步伐。直面那些自己公司之外的開發社區,能幫助他們看到最新的趨勢,以及幫助他們學會如何利用社區帶來的價值。而且,如果他們自己是一個開源項目的所有人,他們的“技術領導”技能也能得到長足的進步,因為他們必須要選擇接受或拒絕來自社區的補丁。一個成功的項目,應該是貢獻者齊聚,各種觀點爭鳴的社區。但不是所有的問題都有更簡潔更好的技術解決方案的。他們必須決定選擇什么,放棄什么,這很難,但在這種困難中,他們鍛煉了新的技能。很多開源項目的留言板上充斥著偏激言論,口水戰經常處于一觸即發的邊緣。

從公司的角度看,它能幫助打造“研發品牌”

研發品牌意味著一種公司特有的開發能力的烙印,就好像給產品貼個標簽,上面寫著“這是我們制造的”。打造這種品牌有很多方法。開源是一種很好的和其他開發者共享代碼的方式。它可能無法完全揭示一個公司的內部運作機制,但肯定能展現出跟這個項目相關的各個方面。這也是資深員工給應聘者的一個展示窗口,一個企業向未來雇員發出的明確信號,即,如果他們來這兒工作,不僅能獲得個人技能的提升,并且能充分利用那些他們喜歡的軟件系統,而不用重新發明它們。

當然,在那么多支持的觀點之外,也有一個反對的聲音,那就是,開源并不適用于所有公司,也無法解決所有問題。

不要因為缺少人力而開源

在早期這是個常見的錯誤觀點。這個觀點的邏輯是,如果我有一個優秀的項目需要額外的幫助,那么開源它會吸引全世界的開發者為它做貢獻。這是錯誤的,原因有二:如果項目成功了,它會從外部社區收到無數的需求,需要耗費額外的精力和時間把代碼寫出來,而這些需求很有可能跟公司創立這個項目的初衷相悖。如果項目沒有成功,前期花了大量的資源去包裝它就全部白費了。而且,要判斷為項目寫代碼和提交補丁的個人或社區的能力好壞也很困難。畢竟在外部世界什么都有可能。要做出成功的開源項目,需要投入大量的時間來開發、監管和培育。

不要為了開源而開源

這個問題我通常稱之為:“做個好公民”,多做做功課。在創立任何項目前,做個好公民,調查一下是否已經有社區在致力于開發類似的解決方案了。然后花點精力去評估一下,是否給已有的項目貢獻代碼會更好?通常,使用現有的項目并做出自己的貢獻,價值遠勝于重復發明輪子。

把糟糕的項目拿出去開源,會產生負面影響。人們審視這個項目后會疑惑,既然已經有了一個很棒的開源解決方案,為什么這個工程師或團隊還要搞出這么一個水平低劣的東西來。這對于上面所說各種開源的好處,都是一種傷害。

如何創建成功的開源項目

這很不容易。老實說,LinkedIn早期在這上面也是磕磕絆絆。我們早期學到的一個教訓就是,開發團隊不能為了開源,簡單把代碼丟給社區,然后就停止創新了。很多人認為只要一開源,社區會幫你帶領這個項目繼續前進,這種情況偶爾也會發生。但大多數情況下,你作為項目的締造者,有責任保障它在開源的模式下繼續發展好,并且你要盡可能多花時間在上面,就把它當作還是你公司內部的項目。

我們學到的另外一個教訓是,多半的小型項目,應該集成到大型項目中去。LinkedIn的第一批開源項目是一些小型的搜索組件,我們從自己基于“ Lucene ”項目的主搜索引擎之上創建了它們,但我們卻沒有和Lucene項目的開發者社區保持同步,大多數組件都沒有集成到Lucene中,最終被丟棄——其實它們中的很多項目都很出色。Apache社區則是一個極好的正面例子。單獨的開源項目是不錯,但是如果你能讓這個項目抱上Apache這條大腿,那么請不要猶豫。一個成熟社區中的開發人員如果有激情去開創新的項目,成功率要高得多。

后來我們創建Kafka項目時,從過去所犯的錯誤中吸取了教訓,明智地選擇了投入資源,最終它成了我們的最佳開源項目。

最后,如果一個公司決定開源某個軟件,他們必須要有心理準備,最后不得不跟這個項目分道揚鑣。我第一次不得不給我的一個項目單獨拉出分支的時候,感覺就像是殺死了自己的孩子。做出這個決定后,我整個周末都沒睡好,感覺很慚愧……感覺自己像個叛徒。但是后來我明白了:一個項目一旦開源,它就有了自己的生命力。它很有可能演進成為一個你根本不想要的東西,并且不再和你的軟件系統兼容。這一刻到來時,你別無選擇,只能拉出分支單干了。這是一個自然現象,時不時會發生。你的孩子長大成人了,讓大人重新過回他們自己的生活吧。

但這不應該把誰嚇跑。開源是一件非常值得去做的事情,創建、管理、參與開源項目,其樂無窮。

查看英文原文: Why Open Source Works for LinkedIn

 本文由用戶 mx64 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!