騰訊悄悄做了一年的開源協(xié)同,現(xiàn)在怎么樣了?
2018 年 9 月 30 日,騰訊迎來成立 20 年以來最具變革意義的組織架構調整——至今已經(jīng)整整一年的時間。
在這次架構調整中,騰訊宣布了技術委員會即將成立的消息。100 天后,騰訊技術委員會正式成立;下設「開源協(xié)同」、「自研上云」兩個項目組及「對外開源管理辦公室」,計劃發(fā)力內(nèi)部代碼的開源和協(xié)同,并推動業(yè)務在云上全面整合。
由此,開源協(xié)同成為騰訊在技術發(fā)展層面的一個關鍵詞。
開源協(xié)同:為打破內(nèi)部壁壘而來對于開源協(xié)同,騰訊在集團決策層面有著非常深入的思考;騰訊高級執(zhí)行副總裁、技術工程事業(yè)群總裁盧山表示:
提出開源協(xié)同,就是希望以開源的手段來改善過去協(xié)同不好的問題。參考開源社區(qū)的組織方式,將同類項目的不同技術團隊聚合在一起,開源共建。能合當然好,不能合也互通有無,開源坦誠相見,接受使用者的自然選擇。
從騰訊技術自身發(fā)展的層面來說,開源協(xié)同也是一個自然而然的結果。
騰訊技術委員會 PMO 成員、開源協(xié)同項目負責人鄭亞峰在接受記者采訪時透露, 2018 年,騰訊在技術層面遭到了一系列來自外界的質疑和批評,騰訊內(nèi)部論壇也出現(xiàn)了一些匿名吐槽,這件事情真正地觸動了騰訊技術人員。鄭亞峰表示:
過往我們有很多引以為豪的技術,為什么到了去年,外界突然開始質疑騰訊的技術實力?我們一直在反思這個問題。之前公司內(nèi)部確實有一些技術壁壘,部門與部門之間的隔閡太多了,同樣的技術有多個團隊在做。因此,我們做開源協(xié)同的初衷就是要打破壁壘,最主要的是形成開放的技術氛圍和代碼文化,開源協(xié)同是實現(xiàn)這個目標的手段。
顯然,騰訊技術委員會的正式成立成了騰訊開源工作的一個轉折點。
記者(公眾號:記者)了解到,在技術委員會成立之前,騰訊的開源文化是自下而上的,公司層面對此沒有硬性規(guī)定,技術人員通常會自發(fā)推進關于前端的,或是工具類的一些開源項目;但這種方式很難推動和業(yè)務捆綁緊密、更底層的重量級項目開源——而騰訊技術委員會成立后,自上而下的開源協(xié)同機制建立,恰好能解決這一問題。
不過,在具體的運作方式上,所謂自上而下的開源協(xié)同,其實并沒有專門的團隊來負責,內(nèi)部開源也不分項目,除了需保密的業(yè)務邏輯,所有的代碼都要開放,算得上是“傾全公司之力”在做(全騰訊兩萬多名技術人員全員參與)。換句話說,技術人員仍在做自己的本職工作,只是工作的方式發(fā)生了變化——開源方面,之前代碼對小組/部門開放,現(xiàn)在是對全公司開放;協(xié)同方面,之前是同一個技術是幾個團隊各做各的,現(xiàn)在是各團隊一起協(xié)同開發(fā)。
這樣一來,整合資源就變得更加容易,研發(fā)效率和代碼質量進一步提升,同時運營成本也得到了優(yōu)化。
不過,騰訊協(xié)同開源的路也并非走得一帆風順。
鄭亞峰告訴記者,騰訊在開源協(xié)同方面遇到各種問題,其中,最大的困難是統(tǒng)一人心。在開源協(xié)同的過程中,難免會涉及到一些利益相關問題。在這種情況下,就需要上層來決定什么項目應該貢獻出來,哪些團隊應該參與;當然,上層并不會使用強硬的手段把大家捆綁在一起,而是通過協(xié)調和溝通來解決問題。
新代碼文化:開源是手段,協(xié)同是結果開源協(xié)同的推進不僅打破了騰訊各個部門之間堅硬的技術壁壘,極大地提升了研發(fā)效率;更重要的是,它還帶來了更有意義的改變,比如說代碼文化的升級。正如騰訊副總裁姚星在騰訊內(nèi)部技術社區(qū)碼客上回應一位普通開發(fā)者提出的問題時所言:
開源協(xié)同是目前騰訊研發(fā)體系升級很重要的一個方法,開源是手段,協(xié)同是結果。開源的目的是減少‘重復造輪子’,權限開放、代碼相互可見。協(xié)同的目標是‘去中心化’, 能使用開源組件,能復用必復用;開源組件去 BG 部門屬性,共同擁有騰訊屬性;開發(fā)人員是開源組件的共同的參與者和創(chuàng)作者,不是甲方和乙方,從而保持快速的響應。
實際上,騰訊代碼文化的誕生,可以回溯到 2013 年;當時,在公司 “開放” 戰(zhàn)略升級的背景下,騰訊提出了代碼的 “開放、復用和合力開發(fā)”。在 2018 年進行 930 變革之后,“新代碼文化” 的概念應運而生,即:開源,協(xié)同,云上生長。
為了切身解決研發(fā)人員遇到的問題,推動新代碼文化的發(fā)展和快速落地,騰訊內(nèi)部技術社區(qū)的建設也開始走上正軌。
2019 年 1 月 2 日,在技術委員會的指導下,名為“碼客”的技術社區(qū)上線,騰訊員工可以在此交流技術問題、學習編程知識。記者了解到,在近 10 個月的時間內(nèi),每個月有超過 80% 的技術人員訪問碼客社區(qū)進行技術討論,社區(qū)上提問數(shù)量近 3000 個,回答與評論達 15 萬次,94% 的技術難題都得到了回復。
值得一提的是,2019 年 6 月,騰訊還開了一次 “吐槽大會”,辯論雙方就 “開源協(xié)同是否有助于提高公司研發(fā)水平” 的問題展開了討論;無論是從現(xiàn)場投票的結果來看,還是騰訊在 CI、大數(shù)據(jù)、編碼器等方面的實際情況來看,吐槽大會的主題問題已經(jīng)得到了肯定的回答。同時,這場吐槽大會也為技術委員會與公司技術人員創(chuàng)造了直接對話的機會,技術人員在現(xiàn)場提出的 70 多個問題,現(xiàn)在基本全部解決。
鄭亞峰表示:
開源協(xié)同也是為了解決內(nèi)部同事尋求技術幫助的訴求。我們做了一些技術工具,除了碼客,還有技術圖譜和工蜂 Git(記者按:騰訊工蜂 Git 負責承載騰訊全公司的軟件工程代碼管理,功能涵蓋代碼倉庫、代碼評審、研發(fā)動態(tài)和開源協(xié)作)?,F(xiàn)在,技術人員能夠在固定的地方找到之前開源或者不開源的技術,然后直接拿來用。Talk is cheap,show me the code(什么話都不要說,把代碼擺出來亮一亮)的氛圍也越來越濃。
在騰訊內(nèi)部,曾有人調侃騰訊就像技術的迷宮,但在開源協(xié)同的大背景下,騰訊技術人員有了不一樣的感受。開源協(xié)同項目騰訊 CI 負責人、騰訊藍鯨產(chǎn)品中心總監(jiān)黨受輝表示,最大的變化是團隊更穩(wěn)定了,也更有活力了;以前,很多工程師只是把寫代碼當成工作,倡導內(nèi)部開源之后,這就從一份工作變成了帶有感情的事業(yè)。
開源協(xié)同項目天穹、騰訊大數(shù)據(jù)負責人劉煜宏也表示:
對外開源:前人栽樹,后人乘涼開源協(xié)同之后,技術人員的參與感提升了,以前平臺是個黑盒子,現(xiàn)在有了一個公開的渠道可以讓所有開發(fā)者參與平臺建設,大家很多好的 idea 和代碼,都可以往里面貢獻了。另外,以前可能有好幾個團隊都做同一個事情,重復造輪子,現(xiàn)在可以整合資源,資源更集中了,可以聚焦解決很多問題。
當然,騰訊在花大力氣做內(nèi)部開源協(xié)同的同時,對外開源的腳步也一刻沒有停歇。
騰訊在對外開源始于 2016 年,主要是將內(nèi)部開源出來的優(yōu)質項目在 GitHub 上發(fā)布;到了 2019 年,伴隨技術委員會的成立,騰訊開始耕耘更具影響力的項目,包括萬億級的大數(shù)據(jù)項目 TubeMQ,與 TensorFlow 互補的機器學習 Angel 平臺等,以及最近開源的物聯(lián)網(wǎng)操作系統(tǒng) TententOS tiny。
那么,一個項目從內(nèi)部開源走向對外開源,中間會經(jīng)歷什么樣的考量?
對此,騰訊方面表示,一個項目要對外開源,首先都要在內(nèi)部開源 “試水”,進入評選機制,結合客觀數(shù)據(jù)和專家的評定,達到優(yōu)秀項目的水平才會對外開源;除此之外,還要考慮業(yè)界的因素,如果業(yè)界同類的產(chǎn)品不多,對外開源才更有價值。不過,并不是所有對外開源的項目都需要很高的技術含量,因為很少有企業(yè)或用戶能達到那種量級,因此,通用性也是一個重點考慮因素。
騰訊開源聯(lián)盟主席、騰訊開源管理辦公室委員堵俊平還提到了另一個考慮因素——看人。他說:
每個開源項目背后都需要團隊的支撐,如果大家只是為了開源而開源,團隊本身沒有推動開源或者社區(qū)運營的能力和意志,我們并不鼓勵。因為對外開源就意味著對用戶負責。我們始終堅持“社區(qū)優(yōu)于代碼”,代碼不好可以優(yōu)化,但沒有“好的人”,代碼再好也可能石沉大海。
雖然騰訊在對外開源方面取得了可觀的成果,但這數(shù)年背后的艱辛也不可忽視。騰訊副總裁王巨宏對此深有感觸:
每次對外開源,人力物力的耗費是一方面,團隊還要頂著巨大的壓力。當時,TARS 團隊表示想做開源,我們配合他們牽頭推進,花了巨大的精力,甚至把相關專利捐贈給基金會,這是前所未有的(記者按:TARS 是騰訊 2018 年 4 月開源的一款微服務框架)。我們還把散落在外面的開源項目回收,重新規(guī)劃和宣傳。除了技術人員,我們的安全團隊、法務團隊、知識產(chǎn)權管理團隊等都付出了非常多的努力。
當然,騰訊的外部開源其實還反過來促進了內(nèi)部開源協(xié)同的發(fā)展。
王巨宏表示,騰訊在對外開源方面走過的每一條彎路,遇過的每一個挫折都沒有白費,而是以寶貴經(jīng)驗的形式回饋到了內(nèi)部的開源協(xié)同上;如果沒有騰訊多年來對外開源的積累,內(nèi)部在開源協(xié)同的管理及制度建設方面可能還要摸爬滾打很長一段時間。
記者小結對于迎來 930 變革一周年的騰訊來說,無論是內(nèi)部開源協(xié)同還是對外開源,其表現(xiàn)都可圈可點。在內(nèi)部的開源協(xié)同方面,騰訊已經(jīng)開展了 8000 個開源項目和 50 個協(xié)同項目,其中的代表性項目有騰訊 CI、TianQiong(天穹)、視頻處理等;而在對外開源方面,截止 2019 年 9 月,騰訊已在 Github 上發(fā)布 84 個開源項目,累計獲得的 Star 數(shù)超過 24 萬 。
但顯然,伴隨著騰訊全新戰(zhàn)略的向前推進,騰訊在開源這條路上有更長的路要走——正如騰訊開源協(xié)同項目負責人鄭亞峰所言:
“開源” 本身操作起來很簡單,但要把騰訊過往 20 年的代碼都開放出來,需要花費巨大的時間和精力……我們給自己設定了一個目標,用 3-5 年的時間去建設開源文化和氛圍;由于新技術會不斷出現(xiàn),所以協(xié)同是一個持續(xù)性問題,需要花更長的時間。