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