對(duì)個(gè)人來說尝苇,開源是方法;對(duì)公司來說,開源是契約糠溜。
by 梁辰曄淳玩,華為開源能力中心專家。
本期訪談嘉賓介紹
梁辰曄非竿,華為主任工程師蜕着,從事容器相關(guān)的開發(fā)以及社區(qū)組織工作。現(xiàn)為華為容器社區(qū)(EulerOS iSula)的負(fù)責(zé)人红柱,擁有10多年的社區(qū)布道承匣、社區(qū)開發(fā)和商業(yè)產(chǎn)品的交付經(jīng)驗(yàn)。先后活躍于 GNOME 社區(qū)锤悄、openSUSE 社區(qū)韧骗,對(duì)開源開發(fā)、開源到商業(yè)的轉(zhuǎn)換有深入的理解零聚。
公司介紹:華為是全球領(lǐng)先的信息與通信技術(shù)(ICT)解決方案供應(yīng)商袍暴,專注于 ICT 領(lǐng)域,堅(jiān)持穩(wěn)健經(jīng)營隶症、持續(xù)創(chuàng)新政模、開放合作,在電信運(yùn)營商沿腰、企業(yè)览徒、終端和云計(jì)算等領(lǐng)域構(gòu)筑了端到端的解決方案優(yōu)勢(shì),為運(yùn)營商客戶颂龙、企業(yè)客戶和消費(fèi)者提供有競(jìng)爭(zhēng)力的 ICT 解決方案、產(chǎn)品和服務(wù)纽什,并致力于使能未來信息社會(huì)措嵌、構(gòu)建更美好的全聯(lián)接世界。?
職業(yè)發(fā)展經(jīng)歷
孫遠(yuǎn):辰曄芦缰,你好企巢。謝謝你接受本次采訪,能否介紹一下你的職業(yè)發(fā)展經(jīng)歷让蕾?我相信這會(huì)對(duì)其他人有借鑒意義浪规。
# 畢業(yè)之后從事開源工作 #
梁辰曄:我現(xiàn)在在華為工作,工作內(nèi)容涉及到容器探孝、云計(jì)算相關(guān)的開源軟件開發(fā)笋婿,以及開源社區(qū)的運(yùn)營。來華為之前顿颅,我在 SUSE 工作了8年多的時(shí)間缸濒,從事 SUSE Linux 企業(yè)版的開發(fā)工作,也參與了一些架構(gòu)設(shè)計(jì)和需求分析等工作。
畢業(yè)之后我接觸開源社區(qū)的機(jī)會(huì)比較多庇配。在工作之外斩跌,我積極地參與了國內(nèi)和國際上的一些開源活動(dòng),這包括線上和線下的活動(dòng)捞慌。在國內(nèi)主要是參與了國內(nèi)一些開源社區(qū)的建設(shè)耀鸦,有時(shí)去做一些技術(shù)分享。
# 剛開始接觸開源時(shí)的感覺 #
孫遠(yuǎn):畢業(yè)后能夠有這么多機(jī)會(huì)參與開源啸澡,組織了那么多活動(dòng)袖订,真是不錯(cuò)。能否介紹一下你是什么時(shí)候開始接觸開源的锻霎,剛開始接觸開源時(shí)有什么感覺呢著角?
梁辰曄:其實(shí)最早接觸開源是在大學(xué)的時(shí)候,我們學(xué)校的 Linux 氛圍很好,學(xué)校的教授對(duì) GNU/Linux 特別推崇,同學(xué)里面也有一些癡迷的愛好者旋恼。大學(xué)的時(shí)候我覺得這些東西比較神秘吏口,相比較 Windows 傻瓜式的點(diǎn)擊操作界面,感覺 Linux 更像一個(gè)極客要做的事情冰更,所以誤打誤撞就進(jìn)了開源社區(qū)产徊。畢業(yè)之后找的就是與 Linux 相關(guān)的工作。
孫遠(yuǎn):那我理解是不是因?yàn)閷?duì) Linux 開源的這種熱愛蜀细,才能驅(qū)動(dòng)你這些年一直在不斷的投入到開源社區(qū)的貢獻(xiàn)當(dāng)中舟铜?
梁辰曄:對(duì),可以這么說奠衔。這個(gè)東西其實(shí)純粹就是工程師的一些偏好谆刨,對(duì)于就業(yè)考慮得會(huì)偏少一些。
# 從 Suse 到華為 #
孫遠(yuǎn):你以前在 Suse 工作归斤,后來跳槽去了華為痊夭,這次工作的轉(zhuǎn)換是出于什么考慮呢?
梁辰曄:由于 IT 發(fā)展階段不一樣脏里,國內(nèi)公司絕大多數(shù)是“使用者”她我,包括現(xiàn)在很多技術(shù)比較前沿的創(chuàng)業(yè)公司,精力也都投在集成迫横、方案部署方面番舆,真正參與甚至主導(dǎo)開源項(xiàng)目的鳳毛麟角。這些年矾踱,國內(nèi)開源方面做的比較純正恨狈、能保留原汁原味上游社區(qū)玩法的還是一些外企,包括英特爾中國介返、Suse 中國等等拴事。國內(nèi)能和上游社區(qū)真正接洽的企業(yè)多是一些大公司沃斤,如華為、阿里刃宵、百度等衡瓶。
為什么選擇國內(nèi)公司呢?第一個(gè)就是外企天花板有限牲证,國內(nèi)公司發(fā)展很快哮针。從發(fā)展規(guī)律來看,國內(nèi)的 IT 公司一直在跟隨國外坦袍,如果這個(gè)規(guī)律對(duì)于開源也成立的話十厢,在2020年開源會(huì)成為國內(nèi)公司的一個(gè)常態(tài),被理性捂齐、廣泛的認(rèn)可蛮放。所以我想來國內(nèi)的公司試一試,和國內(nèi)的開源一起成長(zhǎng)奠宜。
為什么選擇華為呢包颁?華為的軟件服務(wù)重點(diǎn)圍繞基礎(chǔ)軟件展開,開源的土壤比較好压真∶浣溃基礎(chǔ)軟件的特點(diǎn)是通用、標(biāo)準(zhǔn)化滴肿,對(duì)接更多的上下游軟件岳悟,當(dāng)然現(xiàn)在大家都喜歡說“生態(tài)”,所以泼差,基礎(chǔ)軟件比較適合開源贵少。事實(shí)也是這樣,我們現(xiàn)在能想到的火熱的開源項(xiàng)目多半是基礎(chǔ)軟件堆缘。
給讀者的啟示:
國內(nèi)的企業(yè)在開源方面發(fā)展的潛力更大春瞬。
# 華為運(yùn)作開源社區(qū)的方式 #
孫遠(yuǎn):你在華為開源能力中心工作,能否介紹一下華為是怎么運(yùn)作開源社區(qū)的套啤?
梁辰曄:華為的開源跟社區(qū)的開源有不一樣地方,以商業(yè)為導(dǎo)向随常。如果開源了一個(gè)項(xiàng)目講不清商業(yè)價(jià)值潜沦,那從公司角度來說會(huì)觀望,不提倡把這樣的開源當(dāng)成公司行為。華為相對(duì)來說比較的謹(jǐn)慎绪氛。
華為有一套比較嚴(yán)謹(jǐn)?shù)拈_源軟件方法論唆鸡,從“為什么某某項(xiàng)目要開源”、“為什么要參與某某項(xiàng)目”枣察、到“怎么投入開源”争占、“投多少人燃逻、什么人”,都有對(duì)應(yīng)的流程和方法臂痕。其實(shí)這些流程不是專門針對(duì)開源伯襟,其他事情的決策也是這樣。
給讀者的啟示:
在商業(yè)公司中握童,投入開源是為了服務(wù)公司的商業(yè)利益姆怪,不能為了開源而開源。
# 在華為參與的開源社區(qū) #
孫遠(yuǎn):你現(xiàn)在在華為主要參與哪些開源項(xiàng)目呢澡绩?
梁辰曄:我現(xiàn)在在參與華為操作系統(tǒng)的一個(gè)叫 iSula 的容器社區(qū)稽揭。我的微信和好友的頭像,就是我們社區(qū)的一個(gè)標(biāo)志肥卡,這是我們?nèi)A為自己的一個(gè)社區(qū)溪掀。當(dāng)然也希望未來能夠成為大家認(rèn)可的一個(gè)去公司化的純社區(qū)。除了這個(gè)以外步鉴,我也會(huì)參與一些上游容器社區(qū)揪胃,比如 OCI 社區(qū),Kata 社區(qū)唠叛, CNCF 社區(qū)只嚣。
印象最深刻的開源的事情
孫遠(yuǎn):你參與了很多開源項(xiàng)目,哪些開源的事情讓你印象最深刻艺沼?
梁辰曄:我講下親身經(jīng)歷的幾件事情吧册舞,其實(shí)都不是大的事情,那我按照時(shí)間順序來講障般。
# 不應(yīng)一視同仁的對(duì)待公司開源和社區(qū)開源 #
先講第一件事调鲸,我剛工作那會(huì),我跟很多人都分享過這件事挽荡。有次國外的老板過來檢查我們的工作藐石,我就把我的問題單給他列了一下,有一些是我們內(nèi)部的一些 Bugzilla 的問題單,有些是社區(qū) Bugzilla 中的問題單定拟。他當(dāng)時(shí)就很有點(diǎn)不是特別高興地問我于微,為什么你要改社區(qū)的一些問題?這個(gè)事情一下子就把我剛畢業(yè)的心態(tài)稍微地轉(zhuǎn)了轉(zhuǎn)青自。因?yàn)閯偖厴I(yè)的時(shí)候株依,我覺得參與開源時(shí),公司開源和社區(qū)的開源應(yīng)該都是一視同仁的延窜。但那次之后呢恋腕,我覺得即便你是一個(gè)以開源產(chǎn)品為基礎(chǔ)的商業(yè)公司,對(duì)內(nèi)跟對(duì)外的一些工作逆瑞,還是不一樣的荠藤。
后來我跟其他前公司的同事也交流過伙单,這些同事的工作是針對(duì)公司內(nèi)部的,但他們工作之余可能會(huì)比較多的參與社區(qū)開發(fā)哈肖。所以吻育,回想起來這件事,我覺得我當(dāng)時(shí)應(yīng)該給老板看的是一些公司內(nèi)部的工作牡彻,社區(qū)參與方面的內(nèi)容可以在私下里和老板交流扫沼,這樣更合適一些。
孫遠(yuǎn):公司運(yùn)作開源是需要有商業(yè)利益的庄吼,和開源愛好者參與開源是有很大不同的缎除。
梁辰曄:對(duì),這個(gè)肯定要弄清楚的总寻。拿現(xiàn)在比較火的 Docker 社區(qū)舉例器罐,你參與 Docker 社區(qū)的開發(fā),貢獻(xiàn)了一些特性渐行。但這未必是公司想要的轰坊,即便你的貢獻(xiàn)很多,給公司在社區(qū)的名聲有一個(gè)比較好的積累祟印。公司想要的是你在 Docker 上面的開發(fā)工作能夠支持公司的一些業(yè)務(wù)肴沫,這個(gè)才是公司想要的。所以這里面會(huì)有一些細(xì)微的差別蕴忆。
給讀者的啟示:
在公司中自己投入開源社區(qū)時(shí)要與公司的業(yè)務(wù)方向相一致颤芬。?
# 要及時(shí)向社區(qū)反饋?zhàn)约旱拇a #
第二個(gè)事情是在公司繼續(xù)工作一段時(shí)間后,我對(duì)公司的一些工作已經(jīng)上手了套鹅,但又被公司領(lǐng)導(dǎo)說了枕荞。領(lǐng)導(dǎo)說嗅绰,你為什么在公司項(xiàng)目中做了這么多開發(fā)工作,卻沒有直接回饋到社區(qū)里面待逞?每次社區(qū)版本升級(jí)碌嘀,你不得不基于最新的社區(qū)版本重新適配你早先已經(jīng)完成的開發(fā)工作⌒椴瑁現(xiàn)在剛好是自己在維護(hù)這幾個(gè)升級(jí)版本俐末,今后如果別人來接管這項(xiàng)工作芥永,他怎么來維護(hù)你的 patch?這樣工作量會(huì)越來越大杰妓。
公司內(nèi)其他同事大多是直接參與社區(qū)開發(fā)的肥隆,他們會(huì)覺得“你改了一些軟件功能,卻沒有將代碼回饋到社區(qū)里面的事情”挺不可思議的稚失。我當(dāng)時(shí)也沒有多想,等到現(xiàn)在回過頭看恰聘,就是社區(qū)里面的開發(fā)其實(shí)是最好的一個(gè)開發(fā)方式句各,需要往社區(qū)里面提交一些代碼吸占。這樣做對(duì)公司不會(huì)有太大影響,同時(shí)有利于社區(qū)的發(fā)展凿宾。
所以一些工作上的補(bǔ)丁需要及時(shí)向社區(qū)里回饋或者是往社區(qū)的 bug fix 版本去提交矾屯,這是一個(gè)比較明智的做法。這種方式也是紅帽公司提倡的初厚,它認(rèn)為運(yùn)作開源只有一種方式件蚕,就是向社區(qū)里回饋,任何拿私有代碼去進(jìn)行維護(hù)的方式产禾,都不會(huì)得到紅帽公司的認(rèn)可排作。紅帽的模式未必適合所有公司,但值得借鑒亚情。
# 保留有核心競(jìng)爭(zhēng)力的私有代碼 #
接下來說下第三個(gè)事情妄痪,等到再過一段時(shí)間又會(huì)發(fā)現(xiàn)一些思想上的轉(zhuǎn)變。每個(gè)公司基于開源社區(qū)方面的運(yùn)作楞件,都有一些比較明顯的業(yè)務(wù)場(chǎng)景作為導(dǎo)向衫生。因此比較現(xiàn)實(shí)的情況是,不是所有人都能夠往社區(qū)合入代碼土浸,尤其有些代碼的合入是講策略的罪针。
舉個(gè)例子,A 公司黄伊、B 公司和 C 公司的開源策略都不一樣泪酱。那社區(qū)怎么辦?如果社區(qū)項(xiàng)目的特性比較好解耦當(dāng)然是最完美的毅舆,更多情況下沒法解耦西篓,社區(qū)只能選擇其中一個(gè)比較通用的策略。在這種情況下憋活,你需要私有保存一些代碼岂津。
首先這導(dǎo)致了一些私有代碼沒法完全社區(qū)優(yōu)先。其次悦即,雖然我之前理解一些帶有商業(yè)屬性的自研特性吮成,往社區(qū)合入是沒問題的。但是在一些場(chǎng)景中辜梳,我們研發(fā)的特性會(huì)涉及到公司的創(chuàng)新投入粱甫,而且在許可證允許的情況下,客戶還是很認(rèn)可這些特性的作瞄。因?yàn)檫@些自研特性還是具有一些競(jìng)爭(zhēng)力茶宵。
所以從商業(yè)公司角度來講,投入這么大的精力去做一個(gè)有核心競(jìng)爭(zhēng)力的特性宗挥,如果純粹的貢獻(xiàn)給上游社區(qū)乌庶,是不可接受的种蝶。這種情況不光在華為存在,我跟其他公司的朋友也了解了一下瞒大,如果他們將有核心競(jìng)爭(zhēng)力的特性代碼直接貢獻(xiàn)給開源社區(qū)螃征,就會(huì)被老板直接一棒打死。老板會(huì)問透敌,為什么我們辛苦研發(fā)的代碼就直接拱手讓給社區(qū)了盯滚。
所以,對(duì)于開源社區(qū)的運(yùn)作酗电,需要根據(jù)你的商業(yè)模式進(jìn)行一個(gè)取舍魄藕。有些特性代碼可以往社區(qū)合,有些東西還需要保留著顾瞻。對(duì)于如何有效的保留私有化代碼泼疑,這就屬于開源方面的一個(gè)硬能力了。
孫遠(yuǎn):好的荷荤。這是不是說在運(yùn)作開源時(shí)既要保持社區(qū)影響力又要保持核心競(jìng)爭(zhēng)力退渗?
梁辰曄:我認(rèn)可核心競(jìng)爭(zhēng)力,但參與開源未必是為了保持開源社區(qū)影響力蕴纳。這個(gè)就涉及我剛才提到的開源理解階段的三個(gè)事情会油。這是向社區(qū)貢獻(xiàn)代碼和保存私有代碼的兩種方式能否結(jié)合起來的問題,向開源社區(qū)貢獻(xiàn)代碼構(gòu)建影響力是一個(gè)過程古毛。開源更多是一個(gè)方法翻翩,你做了一個(gè)開源的貢獻(xiàn),是一個(gè)雙贏的事情稻薇。影響力的構(gòu)建是過程中自然積累的嫂冻。如果是為了構(gòu)建影響力而開源,這個(gè)可能會(huì)走偏塞椎。
如何理解開源
孫遠(yuǎn):你是如何理解開源的桨仿?
梁辰曄:我理解開源經(jīng)歷了幾個(gè)過程。
# 開源很厲害案狠,自己不敢碰 #
在第一個(gè)過程中服傍,我覺得開源很厲害,自己不太敢碰骂铁。我相信很多人在剛剛接觸開源時(shí)也是這樣的吹零。早先的開源社區(qū)里面會(huì)有一些傳奇的故事,包括 Linus 和 RMS拉庵,他們都是有鮮明的個(gè)性灿椅,技術(shù)上非常厲害,他們開發(fā)一個(gè)軟件時(shí)可以很快做出原型,并被大家認(rèn)可和推崇阱扬。
在工程師圈子里泣懊,擁有這種能力是很難得的。工程師其實(shí)跟文人一樣麻惶,有一些自尊心,很少會(huì)直接說自己心服口服的覺得自己比別人差信夫。但是有些大牛在社區(qū)里面窃蹋,就不得不承認(rèn)的確不如人家,這種與大牛的差距包括各方面能力静稻。尤其在剛畢業(yè)的時(shí)候警没,會(huì)覺得這個(gè)社區(qū)特別神秘,我只能遠(yuǎn)觀振湾。發(fā)郵件都有些戰(zhàn)戰(zhàn)兢兢杀迹,自己不是那么有自信。因此有些想法可能不是特別敢跟別人去講押搪,這就是第一個(gè)階段树酪。
# 開源社區(qū)中的那些人不過如此 #
下面說一下第二階段,就是如果不碰開源了大州,那反過來純做一些軟件產(chǎn)品续语。在這一階段中,感覺開源社區(qū)中的那些人厦画,有點(diǎn)傻乎乎的疮茄。你做的開源軟件總是有些漏洞,而且你做開源社區(qū)時(shí)根暑,你的貢獻(xiàn)并不能夠直接轉(zhuǎn)換成金錢力试。而我們?cè)诨谏鐓^(qū)版本做一些改進(jìn)、改良的時(shí)候排嫌,我們產(chǎn)品質(zhì)量可以超過社區(qū)的軟件版本畸裳,并且可以賣給用戶。這個(gè)時(shí)候就會(huì)產(chǎn)生一種錯(cuò)覺躏率,覺得開源貢獻(xiàn)者的技術(shù)也不過如此躯畴,我可以做的比他們更好。
# 開源就是開發(fā)方法 #
經(jīng)歷了第二個(gè)階段之后薇芝,尤其在參與了多個(gè)開源項(xiàng)目之后蓬抄,我就進(jìn)入了第三個(gè)階段。開源對(duì)開發(fā)者來說夯到,就是一種開發(fā)的方法嚷缭。不存在我用開源模式進(jìn)行軟件開發(fā)就比不開源的開發(fā)模式要強(qiáng)的情況。軟件開發(fā)代碼的能力好和不好,完全是個(gè)人能力決定的阅爽,跟開源本身是沒有任何的關(guān)系的路幸,開源軟件和閉源軟件的開發(fā)都會(huì)對(duì)個(gè)人的技能有一個(gè)提升。
不一樣的地方是付翁,開源代碼有很多雙眼睛看著简肴。有一些對(duì)代碼近乎偏執(zhí)的人會(huì)要求提交者反復(fù)修改,而企業(yè)里面有時(shí)為了趕進(jìn)度犧牲質(zhì)量百侧。這種折磨下砰识,代碼能力的確會(huì)提高的快。另外佣渴,社區(qū)人群不一樣辫狼,大家的技能各有所長(zhǎng),能夠?qū)W到的東西更多辛润。而公司一個(gè)團(tuán)隊(duì)的人其實(shí)看什么書會(huì)什么方法都趨同膨处。
如何選擇開源項(xiàng)目
孫遠(yuǎn):面對(duì)眾多的開源項(xiàng)目,你是如何選擇的砂竖?
梁辰曄:開源選型會(huì)有很多評(píng)判標(biāo)準(zhǔn)真椿,我們看它的成熟度、質(zhì)量晦溪、用戶量等瀑粥;另外也要看它未來的發(fā)展,這個(gè)開源項(xiàng)目是不是在可預(yù)見的未來是否能夠持續(xù)的有人或公司在推動(dòng)三圆。
因此比較偷懶的一個(gè)方法是看這個(gè)開源項(xiàng)目背后主導(dǎo)的人或公司是不是可信賴的狞换。對(duì)于小公司或者在開源方面投入比較短的公司,他們推出的開源項(xiàng)目可能會(huì)發(fā)展的很快舟肉,但是指不定什么時(shí)候會(huì)因?yàn)樽陨淼臉I(yè)務(wù)變化而中斷開源項(xiàng)目修噪。
相反對(duì)于大公司,其主導(dǎo)的開源項(xiàng)目本身就是跟他們業(yè)務(wù)強(qiáng)相關(guān)的路媚,只要他們的業(yè)務(wù)不倒黄琼,開源項(xiàng)目會(huì)一直做下去。選擇開源項(xiàng)目時(shí)整慎,需要考慮它開源背后的主導(dǎo)者脏款。如果你覺得主導(dǎo)者比較靠譜,那你可以選擇這個(gè)開源項(xiàng)目裤园。反之就需要進(jìn)行風(fēng)險(xiǎn)評(píng)估撤师,例如他是否會(huì)長(zhǎng)期維護(hù)這個(gè)項(xiàng)目。
參與開源需要的能力
孫遠(yuǎn):參與開源的人員應(yīng)該具備哪些能力或特質(zhì)拧揽?
# 從內(nèi)心熱愛開發(fā) #
梁辰曄:參與開源需要的第一個(gè)特質(zhì)就是剃盾,你喜歡開源這個(gè)事情腺占。開源社區(qū)主要還是開發(fā)者社區(qū),大家聚到一起是共同完成一個(gè)項(xiàng)目的痒谴。社區(qū)里面光說不做的大有人在衰伯,很難脫穎而出,所以還是老老實(shí)實(shí)的提交 commit 吧积蔚。如果打算參與開源意鲸,首先你自己要有一定的動(dòng)手能力,能夠把一個(gè)想法實(shí)踐出來尽爆。這個(gè)實(shí)踐很難立刻轉(zhuǎn)換成收入临扮,所以如果把開源當(dāng)成尋求利益的手段,會(huì)很痛苦教翩。
我看到這樣一種現(xiàn)象,國外的一些參與開源的技術(shù)人員會(huì)真的做一些東西贪壳,即使年齡較大(40歲以上)但仍然會(huì)一直寫代碼饱亿。之前我跟他們一起出去玩或出去開會(huì)回到酒店后,看到他們還記著寫代碼闰靴,并且寫的代碼不一定是工作要求的彪笼,而是自己的興趣愛好。他們寫代碼就跟我們刷微博蚂且、發(fā)朋友圈一樣配猫,當(dāng)成了一種習(xí)慣。所以對(duì)于第一個(gè)特質(zhì)杏死,我認(rèn)為是對(duì)代碼的熱愛吧泵肄。如果一個(gè)團(tuán)隊(duì)工程師文化不好,那么開源肯定做不好淑翼。
給讀者的啟示:
參與開源需要那代碼說話腐巢,而不是只提想法而不去實(shí)踐。?
# 需要可以在社區(qū)中與其他人順暢的交流 #
第二個(gè)特質(zhì)就是能夠比較順暢的跟別人交流玄括,這種交流是依托于你對(duì)項(xiàng)目的理解冯丙。這個(gè)時(shí)候不妨可以主動(dòng)去交流,沒有什么好害羞的遭京,反正我的感覺是社區(qū)的人一般比商業(yè)的人要更加的友好胃惜。
你去跟社區(qū)里的人交流、請(qǐng)教問題哪雕,或者給他們一些反饋船殉,他們?cè)诖蟛糠智闆r下還是樂意的,至少他們會(huì)覺得自己的技術(shù)能力被認(rèn)可了热监。不會(huì)像我們商業(yè)公司里面捺弦,你找一個(gè)人問問題時(shí),別人有時(shí)一下子就冷臉貼過來了或者愛搭不理的。因?yàn)榛貜?fù)你不是他們的KPI列吼。
所以第二個(gè)特質(zhì)就是可以進(jìn)行比較好的主動(dòng)交流幽崩,而這個(gè)交流不僅僅是在開源社區(qū)中,公司工作等其它方面也是需要主動(dòng)交流的寞钥』派辏總體來講,工程師往往有一些劣項(xiàng)理郑,所以如果你在劣項(xiàng)里面可以主動(dòng)跟別人交流蹄溉,你就會(huì)很快補(bǔ)上短板。
我之前看過一些心理學(xué)教授的研究過一個(gè)問題您炉,一個(gè)團(tuán)體里面交流的問題是不是需要“深思熟慮”柒爵,“蠢”問題太多好不好。我記得研究的結(jié)論就是過于謹(jǐn)慎的團(tuán)體氛圍不利于個(gè)人和整體的提高赚爵。保持一個(gè)有錯(cuò)誤但是活躍的社區(qū)棉胀,對(duì)個(gè)人對(duì)社區(qū)都是有好處的。當(dāng)然問的話要真誠一點(diǎn)冀膝、禮貌一點(diǎn)唁奢。這涉及到社區(qū)禮節(jié),通過網(wǎng)上搜索可以獲取更多的內(nèi)容窝剖,比如問問題的藝術(shù)麻掸、社區(qū)參與的藝術(shù)都會(huì)有的。如果你能夠合理的問問題赐纱,大家都會(huì)愿意幫助你的脊奋。你是在一兩個(gè)人面前暴露了自己的缺點(diǎn),但是馬上你就會(huì)把這些知識(shí)變成自己的千所,往往之后你在更多人面前展現(xiàn)的就是一個(gè)全能的形象狂魔。
# 需要進(jìn)行良好的社區(qū)合作 #
下一個(gè)特質(zhì)是能夠與社區(qū)進(jìn)行很好的合作。開源社區(qū)是合作的淫痰,而不是競(jìng)爭(zhēng)的最楷。不是說我們同時(shí)有不同的設(shè)計(jì)方案,那我們兩個(gè)就是競(jìng)爭(zhēng)者待错,我必須把你 pk 下去籽孙,我就要把我的代碼提交上來,這樣做肯定不可取火俄。通過合作犯建,我們共同把這個(gè)事情做好,因此在社區(qū)里交流相對(duì)來說就應(yīng)該要友好一點(diǎn)而不是你死我活的瓜客。社區(qū)肯定需要犧牲适瓦,所以第三個(gè)特質(zhì)就是合作態(tài)度要好竿开。
如何在 Github 中拼出一片天地?
孫遠(yuǎn):對(duì)于剛接觸開源的人玻熙,如何在 Github 中拼出一片天地否彩?
梁辰曄:我覺得最主要的是堅(jiān)持,并且是堅(jiān)持一兩個(gè)方向嗦随,這樣才可以列荔。以前經(jīng)常有句話這樣講,“傷其十指不如斷其一指”枚尼。是說你的方向要始終堅(jiān)持下去贴浙。
社區(qū)不缺熱點(diǎn)和追熱點(diǎn)的人,熱點(diǎn)出來后署恍,各個(gè)社區(qū)崎溃、會(huì)議會(huì)雨后春筍般出現(xiàn),曇花一現(xiàn)盯质,大贏家其實(shí)是會(huì)務(wù)組”康欤現(xiàn)在國內(nèi)一些 Github 上比較厲害的都是在一兩個(gè)方向上始終如一,包括像 Go 語言的一些開發(fā)者或者容器的一些開發(fā)者唤殴,包括數(shù)據(jù)庫的開發(fā)者,都是這樣子的到腥。所以朵逝,我覺得可能堅(jiān)持加專注是必要的。因?yàn)槟壳皝砜聪绶叮挥袚碛羞@兩個(gè)特質(zhì)的人和公司才能良性發(fā)展配名。
# Github 對(duì)程序員的影響 #
再來說下 Github 對(duì)程序員的影響,我2014年的時(shí)候就跟一些人在研究 Github晋辆,當(dāng)時(shí)很多人預(yù)測(cè) Github 會(huì)成為程序員未來的個(gè)人簡(jiǎn)歷的一個(gè)天然的場(chǎng)所∏觯現(xiàn)在看呢,這真的會(huì)慢慢成為一個(gè)趨勢(shì)瓶佳,這個(gè)原因是因?yàn)闊o論是互聯(lián)網(wǎng)還是傳統(tǒng)行業(yè)里面芋膘,開源軟件的使用越來越多了,你是避不開的霸饲。
大部分公司會(huì)要求你對(duì)某項(xiàng)技術(shù)为朋,比如說云計(jì)算、人工智能等有一定的深入理解和改造能力厚脉。改造能力體現(xiàn)在你在 Github 上的一些參與习寸,包括上游社區(qū)代碼貢獻(xiàn)。我認(rèn)識(shí)一些大公司的招聘團(tuán)隊(duì)傻工、獵頭霞溪,選擇候選人時(shí)就直接看 Github孵滞。因?yàn)槠渌膶傩允峭耆豢蓽y(cè)的,你不能只聽別人做幾次演講鸯匹,就說他特別好或不好坊饶。還是用代碼來說話最靠譜。
如何運(yùn)作開源技術(shù)社區(qū)
孫遠(yuǎn):能否講下你是如何運(yùn)作開源技術(shù)社區(qū)的忽你?
梁辰曄:我在以前的公司和華為都在參與社區(qū)的運(yùn)作幼东。這還是跟如何在 Github 中打拼一片天地的想法是一樣的。就是你要比較專注的做一件事情科雳。社區(qū)比較忌諱的是根蟹,投入一段時(shí)間后就撤了。這樣做對(duì)你的損害會(huì)非常大糟秘,因?yàn)樯鐓^(qū)相對(duì)于公司最大的優(yōu)勢(shì)简逮,你可能會(huì)在社區(qū)中走遠(yuǎn)一點(diǎn)。
從這個(gè)角度來講尿赚,運(yùn)作一個(gè)開源社區(qū)散庶,你就得報(bào)著起碼持續(xù)投入四五年以上的這個(gè)態(tài)度和決心參與到里面去。不然的話凌净,就肯定會(huì)失敗悲龟。
在國內(nèi),我自己參與過的比較成功的開源社區(qū)就是 Gnome Asia 社區(qū)冰寻,從2008年開始到現(xiàn)在须教。當(dāng)然定義開源社區(qū)成功與否是比較難的。按照社區(qū)同仁的說法斩芭,如果一個(gè)社區(qū)能夠在創(chuàng)始人完全不參與的情況下轻腺,時(shí)刻保持一定的活力,這就是一個(gè)成功社區(qū)划乖。
目前很多社區(qū)是由商業(yè)或媒體宣傳組在推廣贬养,所以火的會(huì)更快一點(diǎn),這屬于新形勢(shì)下開源社區(qū)一個(gè)方式琴庵,原來的開源運(yùn)作方式比較慢一些误算,這種商業(yè)跟開源結(jié)合的方式能夠更快的推廣開源社區(qū)。
如何成為開源社區(qū) maintainer?
孫遠(yuǎn):你現(xiàn)在是 OCI 社區(qū)的 maintainer迷殿。能否分享一下你從開始接觸 OCI 社區(qū)到成為 OCI maintainer 的奮斗過程尉桩?
梁辰曄:成為 maintainer 的時(shí)候還是有點(diǎn)開心的,但仔細(xì)想想也沒什么可以炫耀的贪庙,maintainer 就是一個(gè)社區(qū)角色蜘犁,總會(huì)有人是 maintainer,也不是離了我就不行了止邮。我參與的 OCI 項(xiàng)目也是公司的一個(gè)投入这橙,所以是利用工作時(shí)間投入社區(qū)的奏窑,這就比大多數(shù)利用自由時(shí)間投入開源的人占優(yōu)勢(shì)。投入這個(gè)社區(qū)既讓自己攢點(diǎn)社區(qū)影響屈扎,同時(shí)完成了公司的任務(wù)埃唯,劃算。
現(xiàn)在大部分的開源社區(qū)還都是由公司投入的開源鹰晨,你自己私下的時(shí)間去投入開源的情況逐步在減少墨叛。這不是我拍腦袋想的,根據(jù) Github 統(tǒng)計(jì)的熱點(diǎn)項(xiàng)目模蜡,80-90%以上的參與者都是公司的投入漠趁,純個(gè)人愛好少,這是一個(gè)明顯的標(biāo)志忍疾。
我個(gè)人建議是闯传,想投入開源的人,要么你在學(xué)校的時(shí)候或者是自由時(shí)間多的時(shí)候可以參與進(jìn)去卤妒,要么你就加入那些開源氛圍比較好的一些公司甥绿,比如華為、阿里则披、百度或者一些外企共缕,這樣才能在時(shí)間上有充分的保證。
我是在 OCI 項(xiàng)目啟動(dòng)后不久參與到這個(gè)項(xiàng)目中的士复。我之前只知道一些技術(shù)骄呼,但是對(duì) OCI 這個(gè)項(xiàng)目到底是什么也不是特別的清晰,所以參與的過程也是一個(gè)從零發(fā)展的過程判没。在這個(gè)過程中我們同事和我也經(jīng)常大量討論,遇到一些問題不恥下問隅茎,就是前面說的稍微主動(dòng)一點(diǎn)〕畏澹現(xiàn)在回過頭來看有些問的問題或有些想法,是明顯錯(cuò)誤的辟犀,但很多 OCI 社區(qū)中的人及時(shí)糾正了我的錯(cuò)誤俏竞。后面我們團(tuán)隊(duì)幾個(gè)人都可以跟上社區(qū)的節(jié)奏,理解社區(qū)在做什么以及未來的方向堂竟。參與社區(qū)是個(gè)人提升的一個(gè)手段魂毁,反正從我個(gè)人角度來講,參與社區(qū)真的是非常值得的出嘹。
在社區(qū)里面席楚,是否能夠成為 maintainer 會(huì)看你的一些關(guān)鍵性貢獻(xiàn),那就不是經(jīng)常不恥下問就能夠獲得 maintainer 的税稼,需要你至少能夠積極的參與這個(gè)項(xiàng)目的開發(fā)與維護(hù)烦秩,尤其希望你能夠給這個(gè)項(xiàng)目帶來方向垮斯。另外需要花時(shí)間與精力真正認(rèn)真的看待這個(gè)項(xiàng)目,理解這個(gè)項(xiàng)目只祠,使項(xiàng)目的發(fā)展方向能夠跟社區(qū)想要的方向一致兜蠕,這樣就可以名正言順的成為 maintainer 了。
對(duì)開源軟件前景的看法
孫遠(yuǎn):能否分享一下你對(duì)開源軟件前景的看法抛寝?
梁辰曄:開源作為一種開發(fā)方法熊杨,我認(rèn)為它的未來是非常光明的。因?yàn)橹辽傥铱吹降氖窃絹碓介_放盗舰、更越來越合作晶府。從一個(gè)軟件開發(fā)者的角度來講,開放式的開發(fā)應(yīng)該是未來的一個(gè)主流岭皂,原因也比較簡(jiǎn)單郊霎,是因?yàn)榇蟛糠值幕A(chǔ)工作是可以共同來做的,不需要去重復(fù)造輪子爷绘。
對(duì)于使用開源軟件賺錢的問題是有爭(zhēng)議的书劝。因?yàn)橹拔覀円部催^社區(qū)中有一些文章講到在公有云場(chǎng)景下利用開源賺錢是比較難的,因?yàn)楣性频娜肟谑枪就林粒芏嘀Ц盾浖家獨(dú)w它受控的购对,不像以前私有云的時(shí)候可以基于開源軟件做一套方案出來賣錢。現(xiàn)在基于 Linux 賺錢都很難了陶因,因?yàn)槿肟诒还性平o占走了骡苞。
小結(jié)
1. 不應(yīng)一視同仁的對(duì)待公司開源和社區(qū)開源。公司想要的是你在社區(qū)的開發(fā)工作能夠支持公司的一些業(yè)務(wù)楷扬。
2. 從商業(yè)公司角度來講解幽,投入這么大的精力去做一個(gè)有核心競(jìng)爭(zhēng)力的特性,如果純粹的貢獻(xiàn)給上游社區(qū)烘苹,是不可接受的躲株。
3. 開源代碼有很多雙眼睛看著。有一些對(duì)代碼近乎偏執(zhí)的人會(huì)要求提交者反復(fù)修改镣衡,而企業(yè)里面有時(shí)為了趕進(jìn)度犧牲質(zhì)量霜定。這種折磨下,代碼能力的確會(huì)提高的快廊鸥。
4. 參與開源需要的能力:從內(nèi)心熱愛開發(fā)望浩、可以在社區(qū)中與其他人順暢的交流、需要進(jìn)行良好的社區(qū)合作惰说。
5. 你去跟社區(qū)里的人交流磨德、請(qǐng)教問題,或者給他們一些反饋吆视,他們?cè)诖蟛糠智闆r下還是樂意的剖张,至少他們會(huì)覺得自己的技術(shù)能力被認(rèn)可了切诀。
6. 想在 Github 中拼出一片天地,就需要在一兩個(gè)方向上堅(jiān)持。國內(nèi)一些 Github 上比較厲害的開發(fā)者都是在一兩個(gè)方向上始終如一的堅(jiān)持搔弄。
7. Github 會(huì)成為程序員未來的個(gè)人簡(jiǎn)歷的一個(gè)天然的場(chǎng)所幅虑。一些大公司的招聘團(tuán)隊(duì)、獵頭顾犹,選擇候選人時(shí)就直接看 Github倒庵。
8. 想投入開源的人,要么你在自由時(shí)間多的時(shí)候可以參與進(jìn)去炫刷,要么你就加入那些開源氛圍比較好的一些公司擎宝,比如華為、阿里浑玛、百度或者一些外企绍申,這樣才能在時(shí)間上有充分的保證。
9. 是否能夠成為 maintainer 會(huì)看你的一些關(guān)鍵性貢獻(xiàn)顾彰,需要你至少能夠積極的參與這個(gè)項(xiàng)目的開發(fā)與維護(hù)极阅,能夠給這個(gè)項(xiàng)目帶來方向,使項(xiàng)目的發(fā)展方向能夠跟社區(qū)想要的方向一致涨享。
本篇摘自孫遠(yuǎn)《贏在開源》訪談系列筋搏,開源社獨(dú)家首發(fā)。轉(zhuǎn)載請(qǐng)注明出處厕隧。
孫遠(yuǎn)奔脐,阿里巴巴測(cè)試開發(fā)專家,目前在阿里巴巴從事阿里開源容器 pouch 的質(zhì)量保障工作吁讨。參與編寫了《Docker 進(jìn)階與實(shí)戰(zhàn)》髓迎,曾多次受邀在國內(nèi)技術(shù)會(huì)議上發(fā)表演講。曾先后就職于美國風(fēng)河系統(tǒng)公司和華為技術(shù)有限公司建丧。