2018
年開源協(xié)同宣布啟動時,這項(xiàng)騰訊的“自我革命”因其與眾不同的路徑遭受內(nèi)外雙重質(zhì)疑:互聯(lián)網(wǎng)大廠基本上靠組織驅(qū)動建設(shè)技術(shù)中臺,集中人、財、物、資源做一件事,而騰訊這種從基層開放協(xié)同的路子,行得通嗎?
但
三年過去,騰訊已組建和孵化了117個開源協(xié)同小組,涵蓋了計(jì)算、存儲、數(shù)據(jù)等所有互聯(lián)網(wǎng)技術(shù)基石,涉及了微信、QQ、騰訊云等所有核心業(yè)務(wù)板塊。
全公司內(nèi)部代碼開源率達(dá)到85%,不僅給騰
訊帶來巨大的效能提升和成本節(jié)約,同時通過云不斷助力越來越多的生態(tài)伙伴。
文 / 陳其亮
程序員楊曉峰開始體會到一種前所未有的“快感”。
他所在的團(tuán)隊(duì)向Open JDK國際開源社區(qū)主分支貢獻(xiàn)的代碼名列國內(nèi)第一,受到了后者的點(diǎn)名致謝,騰訊也成為迄今為止這個社區(qū)唯一一家因顯著貢獻(xiàn)被連續(xù)點(diǎn)名致謝的中國公司。
兩位團(tuán)隊(duì)成員還獲得了社區(qū)reviewer權(quán)限。迄今為止,在國內(nèi)公司中有這種權(quán)限的程序員,不超過三人。
作為Java(一種計(jì)算機(jī)編程語言)開發(fā)工具JDK(Java開發(fā)工具包)的專家,楊曉峰的日常工作是普通人不太看得懂的基礎(chǔ)軟件研發(fā)。
2019年秋,楊曉峰沖著“協(xié)同”二字入職騰訊,牽頭JDK開源協(xié)同小組。簡單說,開源協(xié)同就是騰訊內(nèi)部源代碼全部開放,不同團(tuán)隊(duì)協(xié)同開發(fā),共建騰訊基礎(chǔ)技術(shù)平臺。
如今,他牽頭的團(tuán)隊(duì)自主研發(fā)的JDK產(chǎn)品,不僅被公司內(nèi)所有事業(yè)群使用,幫助多項(xiàng)大規(guī)模業(yè)務(wù)實(shí)現(xiàn)最高50%的性能提升,還被開源社區(qū)高度認(rèn)可。
更讓他開心的是,JDK基礎(chǔ)軟件的研發(fā)已直接打通到面對客戶的產(chǎn)品端??蛻粼鲩L量,特別是主動尋求合作的客戶增長超出了產(chǎn)品端預(yù)期,甚至一向要求嚴(yán)格的金融大客戶,近期也開始在相關(guān)產(chǎn)品底層全面使用他們團(tuán)隊(duì)自主開發(fā)的JDK產(chǎn)品。
而這一切從0到1的變化,發(fā)生在短短三年時間內(nèi)。
“被看見”
2018年之前,很少有人意識到,騰訊內(nèi)部的技術(shù)問題已經(jīng)積累到了刻不容緩的程度。
熟悉騰訊的人知道,騰訊在產(chǎn)品上曾推崇“賽馬文化”,服務(wù)各產(chǎn)品的技術(shù)團(tuán)隊(duì)也在自己“造輪子”、“建工廠”,最終導(dǎo)致內(nèi)部“煙囪”林立,雖然單個產(chǎn)品技術(shù)團(tuán)隊(duì)閉環(huán)效率高,但整體難以形成技術(shù)合力。
2018年,騰訊運(yùn)營管理部在一次梳理中發(fā)現(xiàn),公司內(nèi)部重復(fù)的技術(shù)團(tuán)隊(duì)竟有150多個。在聽到這個情況時,就連最高決策層總裁辦都震驚了。以至于騰訊高級執(zhí)行副總裁、技術(shù)工程事業(yè)群總裁盧山發(fā)出感慨:“有一天,我們離開騰訊,回頭看我們留下的東西,都是扎了一堆煙囪的殘?jiān)珨啾?,我們?nèi)心會不會痛啊?”
騰訊決心要蹚出一條自己的路。
2018年9月30日,騰訊宣布新一輪戰(zhàn)略升級和組織變革,同時發(fā)起開源協(xié)同,通過整合全公司技術(shù)能力,打破技術(shù)壁壘,消除重復(fù)建設(shè)。
和當(dāng)時業(yè)界流行的技術(shù)中臺不同,騰訊的開源協(xié)同是全公司內(nèi)部源代碼全部開放,上層設(shè)立技術(shù)委員會進(jìn)行指導(dǎo),底層推動各技術(shù)團(tuán)隊(duì)成立虛擬組織Oteam(開源協(xié)同小組),協(xié)同開發(fā)公司級的技術(shù)產(chǎn)品——這讓在騰訊工作的程序員們一下子有了被全公司“看見”的機(jī)會。
田甜是騰訊互動娛樂事業(yè)群(簡稱IEG)一名做服務(wù)網(wǎng)格技術(shù)的程序員。當(dāng)業(yè)務(wù)量增大時,需要更龐大的服務(wù)網(wǎng)格來避免資源重復(fù)浪費(fèi),為了做好服務(wù)網(wǎng)格,田甜試著發(fā)起了服務(wù)網(wǎng)格Oteam,找到公司里的“同行”一起協(xié)同。
“突然發(fā)現(xiàn),同一個領(lǐng)域有好多人和自己在做相同的事,這種感覺很神奇?!碧锾鹫f。
在田甜看來,程序員大多個性低調(diào),悶頭做事,以前服務(wù)好本部門業(yè)務(wù)就行,現(xiàn)在有了Oteam,程序員也要把目光投向外界。2019年10月,在服務(wù)網(wǎng)格Oteam每半年一次的線下沙龍上,田甜發(fā)現(xiàn),另外一個事業(yè)群的同行最關(guān)注服務(wù)網(wǎng)格的安全性和穩(wěn)定性,而不是IEG業(yè)務(wù)場景下最關(guān)心的技術(shù)架構(gòu)。“這樣的交流,拓寬了我們做服務(wù)網(wǎng)格技術(shù)的眼界和維度?!?/p>
隨著公司內(nèi)技術(shù)同行間不斷的“網(wǎng)友見面”,技術(shù)交流的氛圍逐漸熱烈起來。Oteam的企業(yè)微信群里,時不時有人拋出技術(shù)問題,很快就有其它團(tuán)隊(duì)的程序員來解答。不過,技術(shù)交流比以前多了,程序員們也不一定會彼此服氣,畢竟騰訊程序員基數(shù)龐大,有不同看法,甚至流派之爭再正常不過。
縱觀tRPC微服務(wù)框架(騰訊內(nèi)部的一個開發(fā)框架)Oteam的協(xié)同過程,也是一個“吵”的過程。吵歸吵,可以“關(guān)門、送飯”,“吵”個痛快,但事后必須有結(jié)果,出共識,“按手印”。爭吵的獲勝不是目的,對技術(shù)負(fù)責(zé),增強(qiáng)全面認(rèn)知、形成共識的才是目的。騰訊程序員們“不再孤獨(dú)”,也看到了山外有山,人外有人。
tPRC Oteam 生態(tài)日
田甜對此深有感慨:“我們以前的思維還是局限的,用技術(shù)解決業(yè)務(wù)需求后就覺得自己很牛,但有Oteam后,和其它團(tuán)隊(duì)交流時就會發(fā)現(xiàn),他們可能有更好的解決方案,通過交流和協(xié)作,不管是技術(shù)格局還是實(shí)操思路,都會上升一個level?!?/p>
統(tǒng)一代碼規(guī)范,就是程序員們的共識發(fā)展到一定程度后,自然而然達(dá)到的。
207行共享表格
2019年11月,騰訊正式成立代碼規(guī)范Oteam,統(tǒng)一輸出各大編程語言的代碼規(guī)范,號召全公司的程序員都按照規(guī)范來寫代碼。
要知道,讓程序員改變自己的代碼風(fēng)格是非常難的事情。
一位在代碼規(guī)范領(lǐng)域工作多年的資深專家剛?cè)肼汄v訊不久就發(fā)出感嘆:“騰訊在搞什么?一年對這么多門語言做規(guī)范化,簡直不可能!”
程序員們寫代碼都會有自己的習(xí)慣,這仿佛是他們默默留下的印記,或者說是個性標(biāo)簽。坊間不乏關(guān)于代碼“大神”寫作習(xí)慣的各種傳說。
但如果不同團(tuán)隊(duì)都把貼著各種“標(biāo)簽”的代碼拿出來協(xié)同開發(fā),問題就來了:寫代碼的習(xí)慣不統(tǒng)一會帶來程序編碼混亂,極大增加多人協(xié)作的成本。而騰訊曾延續(xù)多年的產(chǎn)品“賽馬”機(jī)制,催生出許多業(yè)務(wù)相似的技術(shù)團(tuán)隊(duì),這些團(tuán)隊(duì)恰恰各有各的代碼習(xí)慣。
換句話說,即使騰訊內(nèi)部源代碼全部開放了,不同團(tuán)隊(duì)之間協(xié)同開發(fā)的效率還是會受到影響。
怎么讓這些個性不同、代碼習(xí)慣各異的程序員做出改變,確立代碼規(guī)范,就變成了一件很迫切的事。
為了激發(fā)程序員們的動力,開源治理打榜賽應(yīng)運(yùn)而生。由代碼規(guī)范Oteam和騰訊負(fù)責(zé)開源協(xié)同落地的技術(shù)工程事業(yè)群(簡稱TEG)運(yùn)營管理部共同主辦,鼓勵各大事業(yè)群的技術(shù)團(tuán)隊(duì)來打榜,較量代碼規(guī)范度,比拼開源治理分?jǐn)?shù)。
姚穗斌是代碼規(guī)范Oteam的創(chuàng)始成員之一,一度為程序員不愿意配合代碼規(guī)范而煩惱。
沒想到的是,技術(shù)團(tuán)隊(duì)們的參賽熱情完全超出了主辦方的預(yù)期。這次他驚訝地看到,比賽公告剛貼出來沒多久,就有60多個部門主動來打榜。
甚至有些參賽技術(shù)團(tuán)隊(duì)在企業(yè)微信中編寫了“機(jī)器人”程序,每天提醒打榜賽的開源治理分?jǐn)?shù)。
“一開始很多團(tuán)隊(duì)的代碼得分不及格,打榜賽進(jìn)行幾個月后很多就躥到了90多分,最后竟然有10多個部門都拿到100分,我們只好數(shù)到小數(shù)點(diǎn)后兩位才評出冠軍?!币λ氡笳f。
2020年開源治理榜打榜賽頒獎現(xiàn)場
打榜賽結(jié)束時,騰訊各事業(yè)群的開源治理平均分為90.29分。而此前,在代碼規(guī)范Oteam對全公司代碼規(guī)范度的摸底調(diào)查統(tǒng)計(jì)中,各事業(yè)群的平均分僅41.05分,不及格。
姚穗斌稱,開源治理打榜賽徹底激發(fā)了程序員們參與代碼規(guī)范的熱情,“大家的勝負(fù)欲被點(diǎn)燃了”,一些原本不太關(guān)心代碼規(guī)范的技術(shù)團(tuán)隊(duì),在打榜賽中居然拿到了超高分?jǐn)?shù)。
主辦方騰訊運(yùn)營管理部總監(jiān)徐海麗介紹,開源治理打榜賽是開源協(xié)同“新代碼文化”諸多工作的一個典型,它的價值在于協(xié)助Oteam在公司內(nèi)外打造技術(shù)影響力,幫程序員們找到更多存在感和榮譽(yù)感。
“2019年底開始,代碼規(guī)范、開源治理逐漸成為我們推進(jìn)開源協(xié)同落地的關(guān)鍵詞,這說明我們的重點(diǎn)已經(jīng)不再是追求Oteam數(shù)量,而是開源協(xié)同的質(zhì)量。”徐海麗說,“開源協(xié)同走進(jìn)深水區(qū)了?!?/p>
當(dāng)初聽到代碼規(guī)范專家的感嘆時,姚穗斌雖然內(nèi)心咯噔一下,但還是覺得騰訊是可以做到。最終,事實(shí)證明他的判斷是對的。
“Oteam給了我們更大的空間?!彬v訊代碼規(guī)范Oteam C 接口人、IEG增長平臺部增長中心系統(tǒng)開發(fā)組陳峰表示。
有了Oteam后,他主導(dǎo)的代碼規(guī)范Oteam C 團(tuán)隊(duì)就具備調(diào)動全公司資源的能力,進(jìn)一步提升了產(chǎn)品能力,這樣的成就感最終反過來反哺參與人,形成正向循環(huán)。
在騰訊代碼規(guī)范Oteam最近一次成員招募中,許多參與者寫出了近千字的申請說明,活躍度大大超出了Oteam評審委員的意料。
“原以為大家參與只是隨便填一填,沒想到熱情這么高?!痹u審委員姚穗斌說。
參加招募的成員數(shù)量越來越多,騰訊文檔的共享表格很快更新到207“樓”。有志于推動公司代碼規(guī)范的程序員們可以自主報名,只要按照共享表格內(nèi)的要求逐一填入內(nèi)容,通過評審后就能成為Oteam的一員。
一位參加申請的程序員在長文建議中的第一句話就寫道:“必須讓大家理解,好的程序員都是嚴(yán)格遵循代碼規(guī)范的,不能以扼殺創(chuàng)造性為借口不執(zhí)行!”
最新數(shù)據(jù)顯示,截至目前,代碼規(guī)范Oteam已輸出C 、Java、Python等13門語言代碼規(guī)范,其中一期7門語言代碼規(guī)范及安全規(guī)范已通過開源治理體系在全公司范圍內(nèi)落地。
“英雄本色”
程序員們通過Oteam發(fā)現(xiàn)了“山外有山”,這是壓力也是動力。
2020年12月29日,騰訊舉辦開源協(xié)同峰會,會上公布了各個Oteam整體進(jìn)展的最新數(shù)據(jù)。晚上酒會后,時任終端云測Oteam負(fù)責(zé)人殷柱偉在400多人的Oteam企業(yè)微信群里發(fā)了一個大紅包。
伴隨著群里的沸騰,殷柱偉寫道:“2021年我們要還一個騰訊研發(fā)的英雄本色!”他自O(shè)team成立時就堅(jiān)信,自己的終端云測一定可以發(fā)展為公司級的技術(shù)項(xiàng)目。
不過,Oteam給了殷柱偉們一條這樣追尋“英雄本色”的路徑。
2020年開源協(xié)同研討會
2018年開源協(xié)同宣布啟動時,這項(xiàng)騰訊的“自我革命”因其與眾不同的路徑遭受內(nèi)外雙重質(zhì)疑:互聯(lián)網(wǎng)大廠基本上靠組織驅(qū)動建設(shè)技術(shù)中臺,集中人、財、物、資源做一件事,而騰訊這種從基層開放協(xié)同的路子,行得通嗎?
但三年過去,騰訊已組建和孵化了117個開源協(xié)同小組,涵蓋了計(jì)算、存儲、數(shù)據(jù)等所有互聯(lián)網(wǎng)技術(shù)基石,涉及了微信、QQ、騰訊云等所有核心業(yè)務(wù)板塊。全公司內(nèi)部代碼開源率達(dá)到85%,不僅給騰訊帶來巨大的效能提升和成本節(jié)約,同時通過云不斷助力越來越多的生態(tài)伙伴。
致力于大數(shù)據(jù)領(lǐng)域的天穹Oteam,將各事業(yè)群的大數(shù)據(jù)最佳實(shí)踐復(fù)制到了各個場景,實(shí)現(xiàn)平臺互通,功能復(fù)用,大幅提升了通用性能與資源利用率。
分布式數(shù)據(jù)庫的內(nèi)核TXSQL Oteam在 TXSQL 8.0內(nèi)核上開源協(xié)同,聯(lián)合研發(fā)數(shù)十個重大特性,性能提升30%以上,并實(shí)現(xiàn)騰訊數(shù)據(jù)庫內(nèi)核版本的統(tǒng)一。
聚焦深度學(xué)習(xí)框架和加速的云帆Oteam,曾2次刷新ImageNet(一個大型視覺數(shù)據(jù)庫,用于視覺目標(biāo)識別軟件研究)訓(xùn)練速度世界紀(jì)錄,致力于打造騰訊人的AI OS,助力游戲、視覺、推薦等AI業(yè)務(wù)降本增效。
2021年云帆Oteam生態(tài)日
在技術(shù)影響力的基礎(chǔ)上,一些開源協(xié)同項(xiàng)目開始上云,通過騰訊云對外輸出技術(shù)能力,與行業(yè)共享技術(shù)成果。Tencent JDK Oteam 則全面融入到公司的公有云和專有云產(chǎn)品中。
激發(fā)程序員這一最小技術(shù)單元的力量,就可以撬動研發(fā)效率的顯著提升和研發(fā)效果的最大化。經(jīng)過這不尋常的三年,騰訊這場實(shí)驗(yàn)可以說實(shí)現(xiàn)了“四兩撥千斤”的作用。
而技術(shù)人的理想,正在其中逐漸照進(jìn)現(xiàn)實(shí)。
騰訊ThumbPlayer Oteam之所以被冠名Thumb,表面上看是“騰訊高性能通用媒體平臺”的英文首字母縮寫,背后卻暗含著Oteam成員們對理想主義的向往——thumb的中文意思是大拇指,Oteam要做的不僅僅是一個播放器產(chǎn)品,而是要對標(biāo)業(yè)界No.1的開源社區(qū)。
“希望每個成員都把加入這個Oteam和在這個Oteam做過貢獻(xiàn),視為自己職業(yè)履歷中No.1的亮點(diǎn)?!盩humbPlayer Oteam負(fù)責(zé)人、程序員李大龍說道。
(專題)
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實(shí),本站將立刻刪除。