6月21至22日,“云+未來”峰會在深圳召開,騰訊向外界進一步展示了開放的誠意:充分開放騰訊的數據能力,包括智能推薦、數字營銷等重量級服務,讓行業真正感受到數據的價值。
騰訊的開放是一個漫長的過程。許勇指出,騰訊曾經是一個較為封閉的環境,技術研發也不例外。2010年的3Q大戰后,騰訊開始擁抱“開放”戰略,技術研發也正是在這種環境下,開始向共享、復用和開源邁進。
騰訊內部的開源社區,給大家提供了從輕度到重度參與開源的途徑;而從2016年開始,騰訊外部開源也開始進入了快節奏時代。
在AI方面,深度計算的基礎平臺能力不斷迎來開放,一個是Angel的開源,作為高性能的機器學習計算平臺,Angel目前應用于騰訊內部包括廣告推薦,視頻推薦,微信公眾號等業務場景。另外一個NCNN的開源,是騰訊優圖實驗室前向卷積神經網絡的實現,在手機QQ、手機Qzone、微信、天天P圖等騰訊業務中廣泛使用。
越來越多的業務團隊開始擁抱開源,把自己的項目開源出來,在接下來,還有更多經過騰訊眾多明星業務檢驗的項目開源出來。相對于google,facebook這樣的科技公司,騰訊的開源,目前還是處在一個追趕者的階段,但我們看到了騰訊的工程師們已經被開源的力量喚醒,騰訊希望和外部開發者一起,砥礪前行,創造中國開源的未來。
以下為許勇演講實錄:
Hi,大家下午好,簡單介紹一下自己,我是騰訊研發管理部的許勇,目前任職騰訊的研發平臺,主要致力于推動騰訊內部開源社區建設和外部開源項目的管理工作。今天,我以“騰訊開源,在路上”為題,分享騰訊內部如何打造工程師文化和外部開源的情況。
曾經的騰訊比較保守,什么事情都是關起門來自己做,內部的技術研發也是如此,各業務和產品都會重復開發很多類似的功能,比如5~6個不同版本的二維碼掃描,7~8個功能類似的熱補丁組件等等。2010年,隨著3Q大戰,變革來臨,騰訊開始“開放”戰略,同時前google的一批工程師加入騰訊做搜索,雖然搜索沒有做起來,但他們帶來的google的工程師文化卻得到了很多認同,正是在這種大環境和背景下,騰訊的技術研發開始由封閉向共享,復用和開源邁進。
我們從2011年開始,在內部提倡以公共組件的形式共享和復用代碼;2012年,嘗試發布了騰訊第一個對外開源項目,一個構建系統BLADE;2013年,旨在鼓勵和推進騰訊內、外部開源落地執行的騰訊代碼文化項目啟動;2014年,制定和發布了騰訊的開源策略和具體流程,并發布第一批的6個官方開源項目;2015年,在騰訊技術管理委員會下成立騰訊開源聯盟(TOSA),整體指導和管理騰訊開源工作;截止到2016年底,騰訊正式發布的開源項目共計36個。這是騰訊開源6年的發展歷程。
然而騰訊開源的起步還是比較艱難的,即使是先從內部開源做起也是如此。公司是希望通過開源,減少內部消耗,更多的復用同事的工作成果,這樣不僅能提高代碼質量和效率,還可以為外部開源積累經驗;然而騰訊的研發模式是業務和產品驅動,這里會存在三個方面的問題。第一,工程師會先去考慮能更快的滿足業務需求,因此代碼的實現與業務耦合性很強,這樣好處就是對業務和產品側的反應會很快,很到位,但很難復用到別的類似業務和場景中去,而解耦的難度更大。第二,就是每個大公司都會遇到的KPI問題,做開源不是KPI的內容,那么時間投入和對工程師的重要性方面就會弱很多。第三,就是部門墻,有些業務甚至存在內部競爭的問題,比如最初做類似微信類產品的團隊就有3~4個,競爭很激烈,這樣去開源代碼的阻力更大。
因此騰訊內部開源的工作主要是圍繞著如何解決這三個問題展開的。
現有代碼開源比較困難,但是如果從分享一段代碼片段開始呢?微碼這種低門檻的代碼分享方式應運而生了,這讓工程師很快感受到了用代碼交流的魅力,吸引和培養了內部開源社區的第一批用戶,至今,微碼分享的活躍度還是非常可觀。
突破KPI的難題,如果把開源當做是一個好玩,很酷或者是情感訴求的事兒,那么是不是能夠吸引到工程師去積極參與和貢獻呢?我們內部開源社區的定位和運營上,在這方面做了許多嘗試,比如騰訊員工最關注和期待的每年的圣誕晚會,有圣誕大獎的抽獎環節,在每次遺憾自己與大獎失之交臂的同時,工程師都會很關心算法是否真正體現公平,自己的名字是否在隨機算法的盲區等技術問題,由此,騰訊內部最長壽,參與工程師最多的開源項目-圣誕抽獎項目誕生了,也成為騰訊內部開源的樣板;還有樂高EV3機器人編程大賽,基于AI預測2016年歐洲杯等等活動,讓工程師以碼會友,同場PK,感受到了技術社區可以很酷,很好玩;每年的代碼統計報告,不是冰冷的數據統計,而是試圖描繪工程師在代碼世界中的生活,感受到技術社區是有溫度的,是溫暖的。
對于部門墻的問題,當工程師對于分享和開源有了認識和實踐以后,追求更高的技術價值和成就感驅動大家,突破部門業務的局限性去開源項目,從給與中獲得滿足。
技術社區必須靠開源項目和貢獻說話,而非Title或者資歷,因此我們保持了社區草根化的特質,比如區別于公司內部官方的優秀評選,社區的優秀項目的評選完全取決于項目的客觀數據,工程師的票選和一部分專家評選三者結合的總成績,這獲得了工程師的極大認可。
因此,騰訊內部的開源社區,給大家提供了從輕度到重度參與開源的途徑,你可以僅僅只是輕量化的分享代碼片段,或者是貢獻公共組件,或者開源項目去實現技術價值的最大化和建立技術影響力,截止2016年,內部的組件和開源項目數達到了1600+,內部開源社區的DAU在3000+。技術研發由最初的封閉,到現在工程師普遍認可開源,并積極參與其中。
有了一定的內部開源基礎,我們開始嘗試外部開源,然而發現,同樣不簡單。由于公司性質的對外開源,所以需要把控的方面特別多。55這個數字,是我們開源一個項目之前,需要對項目做的檢查項的數量,包括安全,商標,專利,協議等等各方面;8是我們做一個開源項目所涉及的部門和業務領域的數量;3是一個開源項目從發起到最終正式開源的周期-3個月。因此可以看到,開源一個項目的投入是巨大的,還不包括開源之后,項目團隊投入的維護資源。所以騰訊開源的節奏開始很慢,至今開源的數量僅僅是36個項目,但我們看到,從2016年開始,這個節奏快了起來。
同時騰訊也在以其他三種方式參與開源,積極參與知名開源社區、運營自己開源項目的社區以及為開源項目貢獻。
騰訊云在今年5月份,宣布加入CNCF和Linux基金會,騰訊云是國內最大的基于Kubernetes提供容器服務的公有云服務商,也是擁有國內最大規模KVM集群的企業,將在容器服務、KVM虛擬化等重大開源項目貢獻力量。
6月,騰訊云加入MariaDB基金會,釋放騰訊云數據庫CDB的內核積累。
騰訊在去年,也成為OpenDaylight項目的白銀會員,兩次主辦全球SDN&ODL技術實踐峰會。
另外騰訊也獨立運營了一些自己項目的開源社區,例如Alloyteam,開源了騰訊許多優秀的前端項目,并舉辦了3屆WEB前端大會,工具類的Bugly和游戲的藍鯨平臺等,都有不錯的口碑,并聚集了一批熱心的開發者。
騰訊積極貢獻知名的開源社區和項目,過去一年,產生一名docker項目maintainer,一名ceph項目的maintainer,35個patch到docker,17個patch到ceph,31個patch到Hadoop,2個patch到OpenContainer/runc,1個patch到linux kernel等等,騰訊正在以不同的方式,積極參與到開源活動中來。
騰訊目前大多數的官方開源項目,都已經放在Github上來管理,下面簡單做一些介紹。
RapidJSON,騰訊游戲專家工程師的一個開源項目,是一個C++ JSON解析/生成器,目前有4800+star和1300+fork,被包括守望先鋒等許多游戲采用。
Tinker,微信前端團隊的Android熱補丁方案,目前有9000+star和1900+fork,是騰訊第一個占據GITHUB全球周榜冠軍的開源項目。
WEUI,微信設計團隊開源的同微信原生視覺體驗一致的基礎樣式庫,目前有17000+star和4100+fork,是騰訊最具影響力的一個開源項目。
MSEC,QQ后臺團隊開源的毫秒服務引擎,來自于QQ后臺團隊10年的運營思考。
可以看到,越來越多的業務團隊開始擁抱開源,把自己的項目開源出來,在接下來,還會有更多的經過騰訊眾多明星業務檢驗的項目開源出來。
在AI方面,2個項目即將開源,一個是高性能的機器學習計算平臺Angel,它的目標是讓模型訓練能夠在千萬級別、億級別、乃至十億級別維度的模型上,自如的展開,加速各種機器學習算法。目前騰訊包括廣告推薦,視頻推薦,微信公眾號等業務場景,都有Angel應用的Case。另外一個NCNN,是騰訊優圖實驗室前向卷積神經網絡的實現,是優圖基于深度學習算法,如人臉檢測,五官定位,配準跟蹤等Android / iossdk使用ncnn框架實現,在手機QQ,手機Qzone,微信,天天P圖等app中使用。
Weflow,基于TMT-WORKFLOW的前端工作流開發工具,應用于微信游戲、微信廣告等項目的第三方合作團隊前端構建工作
SOTER,騰訊生物認證組件,應用于微信Android客戶端的指紋支付業務,以及公眾平臺H5頁面的指紋授權。
還有小程序相關的一些項目……
相對于google,facebook這樣的科技公司,騰訊的開源,目前還是處在一個追趕者的階段,甚至相對于國內的其他開源先行企業,也還有很大差距,但我們看到了騰訊的工程師們已經被開源的力量喚醒,更有熱情的投入到了開源中來,去追求更大的技術價值,騰訊開源也會與騰訊云緊密結合,為開發者提供更多便利的基礎服務和工具,以及開源項目使用,我們希望能和外部開發者一起,砥礪前行,創造中國開源的未來。
(圖:騰訊研發管理部總監 許勇)