從GitHub到“GitLab plus” —— 用開源的方式做“內源”
說起GitHub,資深開發者可能都如數家珍。
作為全球***的社交編程及代碼托管網站,GitHub以其開創性的軟件開發方式,吸引了大量程序員和開源項目入駐。“Social Coding(社交化編程)”是其引以為傲的特性。
如果你的代碼屬于開源項目,那公布到GitHub的好處不言自明。全世界的開發者都能幫你Review代碼,幫你擴展功能。哪怕萍水相逢也沒關系,只要他們對這個項目感興趣即可。
從技術上講,在GitHub為一個項目貢獻代碼非常簡單。點擊項目首頁的“fork”按鈕,然后將修改后的代碼加入到剛才保存的代碼庫中,***通過“pull request”機制向項目負責人申請代碼合并。只要項目負責人同意,別人遞交的代碼就在主庫中生效了。
GitHub的***執行官Chris.Wanstrath說過:“在我理想的世界里,協同工作將比獨立工作簡單的多。在那個世界中,軟件開發會是一個充滿欣喜的過程,我認為GitHub正在推進這一愿景的實現。”
OK,一群陌生人為了同一個目標協同工作的確很Cool,但那些私有項目怎么辦?比如那些不便公開,只能在同事之間交流的代碼。
有的朋友可能會說了,可以購買GitHub的Private repositories(私有倉庫)版本啊。
那我們的代碼特別敏感,而且我們公司有防火墻屏蔽GitHub怎么辦?
在上海站的華為開發者沙龍上,講師們不約而同的提到了一個名叫“GitLab”的東西。
GitLab是一個自托管的開源倉庫軟件。和GitHub的用法類似,程序員只要會Git這樣的版本控制系統,就可以輕松管理自己的代碼。它還提供問題列表、Wiki等功能,并且支持Markdown,相當于內網版本的GitHub。
聽上去不錯,很多創業公司都部署了這個GitLab。這樣既不用在GitHub上花錢買私有倉庫,又可以享受Git一貫的便捷體驗,安全度還很高。
But……
我們是一個追求開發效率的大廠怎么辦?我們不光要托管和維護大量的代碼,還要讓開發人員更有積極性,讓整個生產環境更加智能化……那就不是單純裝一個GitLab能做到的了。
這時,華為的架構師又向大家提出了一個“內源平臺”概念。
在參加華為上海站的開發者沙龍之前,筆者也沒聽過“內源平臺”的說法。
經過華為的幾個講師布道后終于明白,原來他們說的“內源”是指在內部開放的閉源代碼平臺,或者說是專門對內的“開源”。
原來,他們的理念是“用開源的方式做內部開發平臺“。
乍一聽好像沒什么,但再認真想一下GitHub的***亮點就明白了 。和傳統的內部開發平臺相比,Social Network對開發者的激勵作用太強了。你的代碼只有你的組長或老板看時,你可能只是應付一下差事;而你的代碼被一群人看,一群人討論,甚至一群人修改時,那這勁頭就完全不是一個量級了 —— Yep, you are the Rockstar.
華為就是這樣干的。
據了解,華為現在有兩套內源平臺,分別叫做“Code Club”和“iSource”,幾乎都引入了 “Social Coding”概念,其創始人分別是胡智勇和莊表偉。
比如路由器研發團隊在內源平臺上公布了一套代碼,防火墻團隊的開發者看到后發現有可以擴展的地方,馬上就可以把自己實現的功能代碼遞交過去。然后路由器團隊的負責人經過審核發現這個功能很好,就可以合并到主庫。這個遞交代碼的防火墻團隊開發者ID也將被加到這套代碼的貢獻者列表里。
又或者防火墻團隊的開發者想要加入一個新功能,看到路由器研發團隊已經實現了。那這個時候他完全可以直接把代碼拿過來用,避免重復開發,加快研發進度。
按照iSource創始人莊表偉的說法,內源平臺的一個重要的作用就是互通有無,降低研發成本。
當然,除了“Social Coding”之外,華為的內源平臺還和生產環境緊密連接。比如智能的軟件測試,自動化部署,持續集成等等。這就不再是簡單的GitLab可以搞定了,至少得二次開發或是重構,以達到“GitLab plus”級別。
看到這里大家可能已經明白了,“內源”也是可以做成一個生態的。
目前,華為的“Code Club”已有17,000+用戶,14,000+項目倉庫,并且對接到公司其他研發工具平臺和系統。而“iSource”支持的都是動輒2000人以上的Big Team,發展勢頭也很迅猛。其“內源”熱度可見一斑。
兩套平臺雖然有相似之處,但兩個創始人打造產品的風格倒是完全不同。胡智勇傾向于“自下而上“的變革,而莊表偉更傾向于“從上而下”的推進。當然,兩人都是在為內源開發更有效率、更有活力這一愿景在努力,各有各的好處。
需要注意的是,這樣的內源平臺比較適合產品線較多的大中型企業。出于成本和復雜度的考慮,可能不太適合產品線較少的創業型公司。畢竟這么有意思的平臺,人多才能玩的起來。
用開源的方式做內源,不僅要在技術方面下功夫,還要運營和溝通等方面花很多心思。如何說服各團隊開放自己的代碼,如何設定內部訪問的權限,如何頂住高并發,如何獎勵那些貢獻度較高的員工,如何讓平臺把大量用戶和不同的生產環境連接在一起……這都是值得探討的問題。
內源之路并不平坦。用Code Club創始人胡智勇引述的一句《馬太福音》來說:“引到永生,那門是窄的,路是小的,找著的人也少。”
但我們不能輕易放棄,對嗎?
華為開發者社區