天天看點

内部開源:如何在企業内部發揮開源的魔力

将開源開發的方法應用于企業内部可以提高創新能力,縮短産品上市時間,并使員工和客戶感到滿意。

各行各業、規模各異的公司都在實施内部開源的工作方式,以推動更高水準的開發協作和代碼重用。他們的最終目标是提高創新力,縮短上市時間,培養、保留和吸引人才,當然,還有讓他們的客戶滿意。

本文将介紹内部開源和其中的一些重點,還有内部開源可以幫助解決哪些問題。我還會讨論包括名額在内的内部開源流程中的一些組成部分。

什麼是内部開源?

内部開源是把開發開源軟體中學到的經驗教訓應用到公司内部開發軟體的實踐。因為它是在公司環境中完成的,是以内部開源是在公司内部網絡中發生的。

在内部開源中,開發人員将會有相應的回報和付出。

回報:

其他人的代碼可重用或直接拿來使用(而不是以不同的方式重寫同一個項目) 來自更多人對代碼的測試,補充和修複。

付出:

代碼供他人重用或使用 在其他人的項目中進行協作,補充,測試或修複代碼。

看到這裡,你可能會問,這不就是協作開發嗎?的确是這樣,但是,對于團隊相對孤立的大型公司而言,它的作用是極大的。這時就需要補一補開源相關的課程了。

有了内部開源,開發人員不僅可以與他們在特定領域内的團隊成員進行協作。他們還有機會在特定領域之外的代碼和項目上進行協作。一切都是開放的,這就預設了開發人員能夠閱讀所有内部源代碼和文檔,不用再為了閱讀它們而唯命是從。

在内部開源項目中,圍繞代碼的所有決策都将記錄在案并公開。這樣會建立一個非常全面的日志,新的參與者或團隊可以使用該日志來快速了解并了解項目的曆史。

内部開源可以解決什麼問題?

封閉或孤立的開發模式所産生的問題,讓他們開始追求内部開源。

重複開發

多次以不同方式建構同一事物的成本很高。将代碼寫完後重用,或者在此基礎上建構新的代碼,這會具有更高的成本效益。它可能導緻相同産品矩陣中外觀和感覺不同的産品。客戶期望且理應得到同一産品矩陣中的産品能夠提供無縫,一緻的體驗。重複開發也可能意味着你的産品與産品之間無法無縫結合使用或根本無法結合在一起。如果你的目标是提供統一內建的解決方案,那麼對不起。如果你不花時間在重新造輪子上,完全可以可以更快地進入市場

産品上線時間變慢

重複開發導緻産品上線時間變慢,但也可能是由于封閉和孤立的開發環境所帶來的依賴性。如果你的産品需要與另一個你沒有發言權的産品內建,則必須等待有人同意添加你的功能或修複某個 Bug,這意味着你需要花費較長時間才能進入市場。你會因為速度變慢而錯過市場機會嗎?其他公司會趁機擊敗你嗎?

局限性

如果你的開發環境是孤立的或封閉的,你的測試人員也僅限于你那個特定的小組。在漏洞響應和解決問題的資源方面,你也可能會受到限制。擁有更多不同經驗和觀點的外部人員可以找到并解決多少個問題?這會對産品的品質産生什麼影響?

許多開發者在和聰明,敬業的人們一起工作,他們為出色的産品建構功能,提供支援,這非常棒。但是在封閉或孤立的環境中,你可能隻與三五個人或十來人一起工作,建立聯系、互相信任并向他們學習。

你如果能和20或30個,或更多傑出的開發者一起工作,那不是會更好嗎?你能成就些什麼?你能在這個過程中學到什麼?如果你可以從其他項目和領域中學習,将會獲得什麼新技能?你難道不想在這樣的地方工作嗎?

一切如何融合在一起?

讓我們看一下内部開源流程的一些關鍵點。我與50多個開發者聊了聊,詢問他們需要什麼。以下是他們的回答:

給予我們:

較低的準入門檻 正确的環境(比如,如果不必要,不要讓我們更改工具包) 以指導為主,而不是強制要求

我們可以:

掌握自己的命運,管理和控制我們自己的項目高效的溝通,并且把事情簡單化,不要讓過程或程式變得繁重複雜。

以下是需要主要注意的事項:

文化相關

Opensource 社群内部已經達成共識,即内部開源更多地是關于管理和文化上的轉變,而非是否能夠共享代碼和擁有正确的工具。為了正确的進行内部開源,公司需要在内部培養開放性和透明性的文化和環境。對于許多公司而言,這就意味着轉型。

信任是所需文化的重要組成部分。使用團隊内部的開發模式,開發者将與自己的團隊成員建立信任,并且他們對團隊代碼的完整性充滿信心。内部開源會讓這些團隊對外開放以征詢團隊外部的意見,是以他們自然會對品質和風險感到擔憂。是以就必須建立信任,這就需要一個允許協作和開放溝通的環境,這對于健康的内部開源工作至關重要。

輔導制度是文化健康的另一個關鍵方面。簡而言之,在内部開源的環境中的思維定式是:“讓我們讨論一下怎麼将這些代碼提高到可以合并的水準”,而不是:“我們并不了解你,是以我們不信任這些代碼,是以我們拒絕接受它們。”

法律相關

根據公司的性質,建構内部開源的最大步驟之一就是修訂政策和流程,以使

手機遊戲賬号出售平台

開發者能夠内部通路大多數代碼。與公司法務部門緊密合作,在不損害系統應用程式和保護内部代碼的安全性的前提下确定政策,這一點很重要。

教育訓練相關

在為開發者提供的資訊太少與提供的授權過于嚴格之間尋求平衡。為他們提供清晰易懂的入門資訊,相關準則以及基本的操作方法資訊。根據協作開發的成熟度級别,一些團隊可能需要更多的深入教育訓練或實操教育訓練。在這些情況下,它有助于确定在早期的參與者中哪些人可以指導和帶領其他同僚。

工具相關

内部開源需要一個能夠實作在高安全級别中通路,協作,通信和易于查找的環境。如果開發人員已經在使用強大而安全的協作工具進行域内開發,可以考慮繼續使用。不管你使用哪種工具,都要為代碼傳輸或從其他工具轉移代碼提供清晰的過程。

機會

尤其是在剛剛開始時,内部開源可能需要投入大量精力進行綜合的實施、代碼審查、修訂,還要尋找合适的協作機會。為這些活動配置設定時間和資源對于成功至關重要。

名額

内部開源會大量提高團隊的活躍度。新成員的加入,他們之間的協作,他們中的一些人将做出自己的貢獻。在以上這些活動中将産生許多東西。建立各種項目,随之而來的就是各種釋出、送出代碼、編譯和請求代碼合并(PR)。

這些是在内部開源早期階段易于衡量的資料點,看到它們呈上升趨勢可能會令人鼓舞。但是,要記住它們隻是資料點。他們并沒有完整地呈現出價值。

是以專注于最終目标至關重要。采用内部開源後你可能會尋求實作以下一個或多個目标:

提高品質,員工和客戶的滿意度,創新和(或)整合

縮短上市時間,降低成本和(或)減少缺陷

繼續閱讀