為何開發者應推動公司開源? 發表于2013-04-08 17:20| 次閱讀| 來源CSDN| 0 條評論| 作者王然 開源 摘要:無論出於何種目的,企業常常會考慮開源一些內部專案,但企業為何應該開源、應該開源哪些專案是讓人頭疼的問題。 微軟工程師Ahmet Alp Balkan對此作出了建議,並強調這不僅是企業高管的問題,更與開發者自己息息相關。
IT界有一句俗語——「如果老二無法戰勝老大,那麼就把老大賴以生存的東西開源。 」企業常常會考慮將某些內部專案開源出去,不論是因為崇尚開源還是為了提升公司形象,又或者是為了打擊競爭對手。 但應該開源什麼樣的專案確實是個難題,開源了合適的應用可以為公司帶來好名聲,但開源了錯誤的專案甚至可能將公司帶向險境。
微軟工程師Ahmet Alp Balkan在博客上發表文章 《What should you open source in your company》,深得開發人員認可。
Balkan認為,大多數工程師都會在公司發現有價值的代碼或者是好用的內部工具,這些都是值得自己保留的東西;另一方面,你也會在工作中花費很多人力去開發可重用的輔助工具以及類庫,這些免于遭受截止日期壓力的作品往往更富有創造力。 如果能把它們以開放原始碼協定發佈出去,無論是對自己還是其他開發者都是非常有意義的事情。
對於企業,開源幾個不涉及核心功能的類庫或者輔助工具並不會為自己帶來負面影響,但是通過大家共同的努力,一定可以説明它變得更好,IBM開源Eclipse正是為此。 此外,如果企業並不處於行業的領先地位,甚至考慮開源核心技術以打擊競爭對手,但對整個行業的技術發展能起到很大的推動作用,Yahoo!開源自己的DFS與Map-Reduce實現, 以及微軟支援開源地圖服務OpenStreetMap都是很好的例子。
最差的情況下也不過是專案無人問津,但至少還能為公司的GitHub頁面充實門面。
以下面這些名企為例,他們開源了那些技術可以作為企業的參考:
Linguist——GitHub:一個檢測原始程式碼以及二進位檔案是由何種語言編寫的類庫。 Guava——Google:JAVA擴展功能類。 MoSQL——Stripe:MongoDB到PostgreSQL流式複製的類庫。 PonyDebugger——Square:使用Chrome Dev Tools的遠端iOS調試工具。 Rogue——Foursqure:型別安全的Scala DSL。 Brackets——Adobe:基於Web的Web代碼編輯器。 Twitter的Finagle、Bower、Zipkin等等。
這些公司開源的工具雖然非常有名、實用,但都沒有涉及自己的核心,因為對於技術公司來說,將關鍵技術開源相對於把武器送給了競爭對手,這是非常危險的舉動。 比較例外的是Facebook,它開源了Corona、Cassandra等眾多核心技術,甚至Google也對其Open Compute Project讚賞不已。 但不得不承認的是,作為強使用者粘性的社交網站,其最有價值的財產還要數多至10億的使用者,即時是這些核心技術也得略遜一籌。
Balkan還指出,對於開發者,很多時候會經常重用之前開發的元件,尤其當你在更換了工作之後,也會更願意使用老東家熟悉的工具。 出於這些目的,你也應該推動開源公司內部的開發工具或者類庫開源。 如果你還是該工具的開發者,在專案被其他IT公司看中之後,這些公司也一定會認可你的技術實力,因此成為你的潛在雇主。
同樣的道理,支付寶前端負責人玉伯也曾在CTO俱樂部活動中宣導IT公司之間擯棄成見,在業界建立一個前端的生態圈、共用部分開發模組。 這一舉措不僅能夠降低各公司的開發成本,員工在離職後也可以享受好處,同時圈內開發者能夠更好地協作。
此外,還有件需要注意的事——公司開源某個專案多非大發善心,通常這都得感謝某個/些人在背後所做的努力,他們提出想法、說服高管,最終造福全體開發者。
如果你正有此打算,首先需要做的就是整理出可重用的代碼、編寫測試和文檔,以及說服各位企業高管。