? ? ? ? ?3Q大戰(zhàn),當(dāng)年這場“明星產(chǎn)品”之間的“互掐”轟動了整個互聯(lián)網(wǎng)拷橘,騰訊當(dāng)時“一個艱難的決定”直到現(xiàn)在仍被網(wǎng)民樂此不疲地調(diào)侃局义。事實上,騰訊當(dāng)時不止做了一個艱難的決定冗疮,這場3Q大戰(zhàn)使得有著深入骨髓的“封閉”基因的騰訊選擇了打開大門萄唇,擁抱“開放”戰(zhàn)略。技術(shù)研發(fā)也是在這種環(huán)境和背景下术幔,開始向共享另萤、復(fù)用和開源邁進。本文將和大家一起看看騰訊的開源之路诅挑。
雖然騰訊的技術(shù)積累比較深厚四敞,然而騰訊開源的起步卻是十分艱難。因為騰訊由業(yè)務(wù)和產(chǎn)品驅(qū)動的研發(fā)模式拔妥,使得它在開源之路上走得并不平坦忿危,從業(yè)務(wù)和產(chǎn)品,到 KPI没龙,再到部門之間的壁壘铺厨,這些因素都構(gòu)成了騰訊開源路上的“攔路虎”。
因此兜畸,從內(nèi)部開源做起的騰訊努释,在其內(nèi)部開源社區(qū)的定位和運營上,會更多地從工程師的角度去考慮問題咬摇,這樣的方式給大家提供了從輕度到重度參與開源的途徑伐蒂。
有了內(nèi)部開源基礎(chǔ)的騰訊,開始嘗試外部開源肛鹏,但是發(fā)現(xiàn)外部開源同樣比較困難逸邦。因為公司性質(zhì)的對外開源需要把控的方面特別多,從對開源項目進行安全在扰、商標(biāo)缕减、專利和協(xié)議等各方面的檢查,到項目涉及到的部門和業(yè)務(wù)領(lǐng)域芒珠,可以看到桥狡,開源一個項目的投入是巨大的,這還不包括開源之后,項目團隊投入的維護成本裹芝。因此部逮,騰訊早期開源的節(jié)奏非常緩慢,截止到 2016 年底嫂易,騰訊正式發(fā)布的開源項目共計 36 個兄朋。
騰訊開源 6 年的發(fā)展歷程
開源一個項目投入的工作
下面簡單介紹一下截止到 2017 年騰訊正式發(fā)布的開源項目:
Blade:https://www.oschina.net/p/blade
一個現(xiàn)代構(gòu)建系統(tǒng),期望的目標(biāo)是強大而好用怜械,把程序員從構(gòu)建的繁瑣中解放出來颅和。Blade?主要定位于?Linux?下的大型 C++ 項目,密切配合研發(fā)流程缕允,比如單元測試峡扩,持續(xù)集成,覆蓋率統(tǒng)計等灼芭。
Appecker:https://www.oschina.net/p/appecker
一款用于 iOS 系列系統(tǒng)的自動化測試框架有额。
QcloudMna:https://www.oschina.net/p/mna
追風(fēng)移動加速是騰訊云平臺為移動應(yīng)用開發(fā)者提供的基于網(wǎng)絡(luò)的加速服務(wù)。
Ctaxis:https://www.oschina.net/p/ctaxis
云排序用于提供海量數(shù)據(jù)排序服務(wù), 采用可擴展的分布式存儲方案彼绷。
APT:https://www.oschina.net/p/apt
安卓性能測試工具巍佑,安卓平臺高效性能測試套件,用于安卓平臺的基準(zhǔn)測試寄悯、競品測試萤衰。
Koala:https://www.oschina.net/p/tencent-koala
跨平臺圖形編譯工具,用于快速生成前端?CSS?和 JS猜旬。
TDW:https://www.oschina.net/p/tdw
騰訊分布式數(shù)據(jù)倉庫脆栋,用于幫助企業(yè)低成本構(gòu)建大數(shù)據(jù)分析系統(tǒng)或數(shù)據(jù)倉庫。
TscanCode:https://www.oschina.net/p/tscancode
靜態(tài)代碼掃描工具洒擦,針對 C/C++ 代碼的靜態(tài)代碼掃描解決方案椿争。
RapidJSON:https://www.oschina.net/p/rapidjson
一個 C++ 的高性能 JSON 解析器及生成器,同時支持 SAX/DOM 風(fēng)格的 API熟嫩。
Key-N-Value:https://www.oschina.net/p/knvprotoengine
KNV 是一個模式自由的高性能樹型協(xié)議處理引擎秦踪,是對 Key-Value 的一個通用結(jié)構(gòu)化擴展。
WeTest助手:https://www.oschina.net/p/wetest-assistant
基于手機端的輔助測試工具掸茅,包括性能測試和遠程調(diào)試兩大功能椅邓,并提供云端真機在線調(diào)試。
QT4i:https://www.oschina.net/p/qt4i
iOS 開發(fā)自動化測試工具昧狮,全面兼容 iOS 真機和模擬器景馁,基于分布式技術(shù),高效并發(fā)執(zhí)行測試逗鸣。
QT4A:https://www.oschina.net/p/QT4A
基于 QTA 提供面向?Android?應(yīng)用的 UI 測試自動化測試解決方案合住。
Fanvas:https://www.oschina.net/p/fanvas
SWF 轉(zhuǎn)?HTML5?Canvas?動畫绰精。Fanvas 可以把 SWF(包括矢量和位圖)完美地轉(zhuǎn)化為?Canvas?動畫,讓美術(shù)妹子一次制作聊疲,到處運行茬底。
HaboMalHunter:https://www.oschina.net/p/habomalhunter
Habo Linux 惡意軟件分析系統(tǒng),用于在 Linux 平臺下進行自動化分析获洲、文件安全性檢測的開源工具。
QTAF:https://www.oschina.net/p/QTAF
QTAF 是一個跨平臺的測試自動化工具殿如,適用于后臺贡珊、原生或混合型客戶端應(yīng)用的測試。
WeDemo:https://www.oschina.net/p/wedemo
微信團隊開源的項目涉馁,用于微信開發(fā)者進行微信登錄门岔、分享功能開發(fā)時的參考 Demo。
GAutomator:https://www.oschina.net/p/gautomator
針對 Unity 手游的 UI 自動化測試框架烤送。
MSEC:https://www.oschina.net/p/msec
毫秒服務(wù)引擎是騰訊的一個開源框架寒随,適用于在廉價機器組成的集群上開發(fā)和運營分布式后臺服務(wù)。
Behaviac:https://www.oschina.net/p/behaviac
行為樹(Behavior Tree)解決方案帮坚。該方案包括編輯器(Designer)和運行時庫(Runtime)妻往。
Blueking?CMDB(藍鯨配置平臺):https://www.oschina.net/p/blueking-cmdb
一款面向應(yīng)用的 CMDB,在 ITIL 體系里试和,CMDB?是構(gòu)建其它流程的基石讯泣,而在藍鯨智云體系里,配置平臺就扮演著基石的角色阅悍,為應(yīng)用提供了各種運維場景的配置數(shù)據(jù)服務(wù)好渠。
GT(隨身調(diào)):https://www.oschina.net/p/_gt
安卓/iOS 手機端調(diào)測組件,用于安卓平臺的性能測試节视、競品測試及僅憑一臺手機進行 App 測試的場景拳锚。
weui-wxss:https://www.oschina.net/p/weui-wxss
WeUI for 小程序,為微信小程序量身設(shè)計寻行。
weui.js:https://www.oschina.net/p/weui-js
WeUI 是由微信官方設(shè)計團隊專為微信移動 Web 應(yīng)用設(shè)計的 UI 庫霍掺。weui.js是 WeUI 的輕量級 js 封裝。
Teaf:https://www.oschina.net/p/teaf
基于 ACE 的高性能服務(wù)端框架寡痰,單進程多線程抗楔,支持 select/epoll 等模型。
SQLCipher:https://www.oschina.net/p/sqlcipher
SQLCipher 提供了對 SQLite 數(shù)據(jù)庫的傳輸層進行全面加密的工具拦坠,而通過使用 SQLCipher 连躏,整個加密過程對客戶端是透明的,無需改動應(yīng)用程序贞滨。(該項目是騰訊 fork Zetetic 公司的開源項目)
Tars:https://www.oschina.net/p/tars
基于名字服務(wù)使用?Tars?協(xié)議的高性能 RPC 開發(fā)框架入热,同時配套一體化的服務(wù)治理平臺拍棕,幫助個人或者企業(yè)快速的以微服務(wù)的方式構(gòu)建自己穩(wěn)定可靠的分布式應(yīng)用。
Mars:https://www.oschina.net/p/wechat-mars
微信官方的終端基礎(chǔ)組件勺良,是一個使用 C++ 編寫的業(yè)務(wù)性無關(guān)绰播、平臺性無關(guān)的基礎(chǔ)組件。目前已接入微信 Android尚困、iOS蠢箩、Mac、Windows事甜、WP 等客戶端谬泌。
WeFlow:https://www.oschina.net/p/WeFlow
一個高效、強大逻谦、跨平臺(macOS & Win)的前端開發(fā)工作流工具掌实,核心基于 tmt-workflow 工作流,代碼開源可定制邦马。
Pebble:https://www.oschina.net/p/pebble-rpc
分布式開發(fā)框架贱鼻。基于該框架滋将,可以讓開發(fā)者只需專注于業(yè)務(wù)邏輯的實現(xiàn)邻悬,而不需要關(guān)注基礎(chǔ)功能的開發(fā),如網(wǎng)絡(luò)通信耕渴,數(shù)據(jù)存儲拘悦,集群管理等。
tmt-workflow:https://www.oschina.net/p/tmt-workflow
基于 Gulp(v4.0)橱脸、高效础米、跨平臺(macOS & Win)、可定制的前端工作流程添诉。
WeUI:https://www.oschina.net/p/weui
一套同微信原生視覺體驗一致的基礎(chǔ)樣式庫屁桑,為微信 Web 開發(fā)量身設(shè)計,可以令用戶的使用感知更加統(tǒng)一栏赴。包含
WCDB:https://www.oschina.net/p/wcdb
騰訊開源的一個高效蘑斧、完整、易用的移動數(shù)據(jù)庫框架须眷,基于?SQLCipher竖瘾,支持 iOS、macOS 和 Android花颗。
xLua:https://www.oschina.net/p/xlua
xLua 為 Unity3D 增加 Lua 腳本編程的能力捕传,進而提供代碼邏輯增量更新的可能。
Tinker:https://www.oschina.net/p/tinker
微信開源的 Android 熱修復(fù)框架扩劝,支持在無需升級 APK 的前提下更新 dex, library 和 resources 文件庸论。
Libco:https://www.oschina.net/p/libco
協(xié)程組件职辅,將現(xiàn)有多進程同步網(wǎng)絡(luò)訪問改造成協(xié)程的基礎(chǔ)組件,是微信后臺大規(guī)模使用的 C/C++ 協(xié)程庫聂示。
PhxRPC:https://www.oschina.net/p/phxrpc
微信后臺團隊推出的一個簡潔小巧的 RPC 框架域携,編譯生成的庫只有 450K(編譯只依賴第三方庫 Protobuf)。
PhxPaxos:https://www.oschina.net/p/phxpaxos
微信后臺團隊自主研發(fā)的一套基于 Paxos 協(xié)議的多機狀態(tài)拷貝類庫鱼喉。
PhxSQL:https://www.oschina.net/p/phxsql
PhxSQL 是一個兼容 MySQL秀鞭、服務(wù)高可用、數(shù)據(jù)強一致的關(guān)系型數(shù)據(jù)庫集群蒲凶。
這些開源項目來自騰訊的各個部門气筋,其中包括微信團隊、藍鯨平臺和騰訊云平臺等旋圆,項目的規(guī)模有像?weui.js 這樣輕量的 JavaScript 庫,也有像 MSEC麸恍、WCDB 等一些重量級的開源框架灵巧。其中有不少項目可以直接應(yīng)用于類似的業(yè)務(wù)場景。
同時騰訊也在以其他三種方式參與開源抹沪,積極參與知名開源社區(qū)刻肄、運營自己開源項目的社區(qū)以及為開源項目貢獻。
騰訊云在今年 5 月份融欧,宣布加入 CNCF 和 Linux 基金會敏弃,在容器服務(wù)和?KVM?虛擬化方面貢獻自己的力量。6 月噪馏,騰訊云加入 MariaDB 基金會麦到,釋放騰訊云數(shù)據(jù)庫 CDB 的內(nèi)核積累。
社區(qū)參與
除此之外欠肾,騰訊也在積極為一些開源項目做貢獻瓶颠,包括 Docker、Hadoop刺桃、Ceph 以及?Linux?Kernel 等粹淋。
騰訊的未來開源計劃
可以看到,騰訊未來的開源計劃瑟慈,與當(dāng)下的技術(shù)趨勢也是密切相關(guān)桃移,涉及到機器學(xué)習(xí)和 AI 等方面。其中值得關(guān)注的一個項目是 SOTER葛碧,這是一個騰訊生物認(rèn)證組件借杰,應(yīng)用于微信?Android?客戶端的指紋支付業(yè)務(wù),以及公眾平臺 H5 頁面的指紋授權(quán)吹埠。除此之外第步,還包括小程序相關(guān)的一些項目疮装。