3Q大戰,當年這場「明星產品」之間的「互掐」轟動了整個互聯網,騰訊當時「一個艱難的決定」直到如今仍被網民樂此不疲地調侃。事實上,騰訊當時不止作了一個艱難的決定,這場3Q大戰使得有着深刻骨髓的「封閉」基因的騰訊選擇了打開大門,擁抱「開放」戰略。技術研發也是在這種環境和背景下,開始向共享、複用和開源邁進。本文將和你們一塊兒看看騰訊的開源之路。前端
雖然騰訊的技術積累比較深厚,然而騰訊開源的起步倒是十分艱難。由於騰訊由業務和產品驅動的研發模式,使得它在開源之路上走得並不平坦,從業務和產品,到 KPI,再到部門之間的壁壘,這些因素都構成了騰訊開源路上的「攔路虎」。linux
所以,從內部開源作起的騰訊,在其內部開源社區的定位和運營上,會更多地從工程師的角度去考慮問題,這樣的方式給你們提供了從輕度到重度參與開源的途徑。程序員
有了內部開源基礎的騰訊,開始嘗試外部開源,可是發現外部開源一樣比較困難。由於公司性質的對外開源須要把控的方面特別多,從對開源項目進行安全、商標、專利和協議等各方面的檢查,到項目涉及到的部門和業務領域,能夠看到,開源一個項目的投入是巨大的,這還不包括開源以後,項目團隊投入的維護成本。所以,騰訊早期開源的節奏很是緩慢,截止到 2016 年末,騰訊正式發佈的開源項目共計 36 個。sql
騰訊開源 6 年的發展歷程數據庫
開源一個項目投入的工做編程
下面簡單介紹一下截止到 2017 年騰訊正式發佈的開源項目:json
Blade:一個現代構建系統,指望的目標是強大而好用,把程序員從構建的繁瑣中解放出來。Blade 主要定位於 Linux 下的大型 C++ 項目,密切配合研發流程,好比單元測試,持續集成,覆蓋率統計等。小程序
Appecker:一款用於 iOS 系列系統的自動化測試框架。微信小程序
QcloudMna:追風移動加速是騰訊雲平臺爲移動應用開發者提供的基於網絡的加速服務。api
Ctaxis:雲排序用於提供海量數據排序服務, 採用可擴展的分佈式存儲方案。
APT:安卓性能測試工具,安卓平臺高效性能測試套件,用於安卓平臺的基準測試、競品測試。
Koala:跨平臺圖形編譯工具,用於快速生成前端 CSS 和 JS。
TDW:騰訊分佈式數據倉庫,用於幫助企業低成本構建大數據分析系統或數據倉庫。
TscanCode:靜態代碼掃描工具,針對 C/C++ 代碼的靜態代碼掃描解決方案。
RapidJSON:一個 C++ 的高性能 JSON 解析器及生成器,同時支持 SAX/DOM 風格的 API。
Key-N-Value:KNV 是一個模式自由的高性能樹型協議處理引擎,是對 Key-Value 的一個通用結構化擴展。
WeTest助手:基於手機端的輔助測試工具,包括性能測試和遠程調試兩大功能,並提供雲端真機在線調試。
QT4i:iOS 開發自動化測試工具,全面兼容 iOS 真機和模擬器,基於分佈式技術,高效併發執行測試。
QT4A:基於 QTA 提供面向 Android 應用的 UI 測試自動化測試解決方案。
Fanvas:SWF 轉 HTML5 Canvas 動畫。Fanvas 能夠把 SWF(包括矢量和位圖)完美地轉化爲 Canvas 動畫,讓美術妹子一次製做,處處運行。
HaboMalHunter:Habo Linux 惡意軟件分析系統,用於在 Linux 平臺下進行自動化分析、文件安全性檢測的開源工具。
QTAF:QTAF 是一個跨平臺的測試自動化工具,適用於後臺、原生或混合型客戶端應用的測試。
WeDemo:微信團隊開源的項目,用於微信開發者進行微信登陸、分享功能開發時的參考 Demo。
GAutomator:針對 Unity 手遊的 UI 自動化測試框架。
MSEC:毫秒服務引擎是騰訊的一個開源框架,適用於在廉價機器組成的集羣上開發和運營分佈式後臺服務。
Behaviac:行爲樹(Behavior Tree)解決方案。該方案包括編輯器(Designer)和運行時庫(Runtime)。
Blueking CMDB(藍鯨配置平臺):一款面向應用的 CMDB,在 ITIL 體系裏,CMDB 是構建其它流程的基石,而在藍鯨智雲體系裏,配置平臺就扮演着基石的角色,爲應用提供了各類運維場景的配置數據服務。
GT(隨身調):安卓/iOS 手機端調測組件,用於安卓平臺的性能測試、競品測試及僅憑一臺手機進行 App 測試的場景。
weui-wxss:WeUI for 小程序,爲微信小程序量身設計。
weui.js:WeUI 是由微信官方設計團隊專爲微信移動 Web 應用設計的 UI 庫。weui.js是 WeUI 的輕量級 js 封裝。
Teaf:基於 ACE 的高性能服務端框架,單進程多線程,支持 select/epoll 等模型。
SQLCipher:SQLCipher 提供了對 SQLite 數據庫的傳輸層進行全面加密的工具,而經過使用 SQLCipher ,整個加密過程對客戶端是透明的,無需改動應用程序。(該項目是騰訊 fork Zetetic 公司的開源項目)
Tars:基於名字服務使用 Tars 協議的高性能 RPC 開發框架,同時配套一體化的服務治理平臺,幫助我的或者企業快速的以微服務的方式構建本身穩定可靠的分佈式應用。
Mars:微信官方的終端基礎組件,是一個使用 C++ 編寫的業務性無關、平臺性無關的基礎組件。目前已接入微信 Android、iOS、Mac、Windows、WP 等客戶端。
WeFlow:一個高效、強大、跨平臺(macOS & Win)的前端開發工做流工具,核心基於 tmt-workflow 工做流,代碼開源可定製。
Pebble:分佈式開發框架。基於該框架,可讓開發者只需專一於業務邏輯的實現,而不須要關注基礎功能的開發,如網絡通訊,數據存儲,集羣管理等。
tmt-workflow:基於 Gulp(v4.0)、高效、跨平臺(macOS & Win)、可定製的前端工做流程。
WeUI:一套同微信原生視覺體驗一致的基礎樣式庫,爲微信 Web 開發量身設計,能夠令用戶的使用感知更加統一。包含button
、cell
、dialog
、toast
、article
、icon
等各式元素。
WCDB:騰訊開源的一個高效、完整、易用的移動數據庫框架,基於 SQLCipher,支持 iOS、macOS 和 Android。
xLua:xLua 爲 Unity3D 增長 Lua 腳本編程的能力,進而提供代碼邏輯增量更新的可能。
Tinker:微信開源的 Android 熱修復框架,支持在無需升級 APK 的前提下更新 dex, library 和 resources 文件。
Libco:協程組件,將現有多進程同步網絡訪問改形成協程的基礎組件,是微信後臺大規模使用的 C/C++ 協程庫。
PhxRPC:微信後臺團隊推出的一個簡潔小巧的 RPC 框架,編譯生成的庫只有 450K(編譯只依賴第三方庫 Protobuf)。
PhxPaxos:微信後臺團隊自主研發的一套基於 Paxos 協議的多機狀態拷貝類庫。
PhxSQL:PhxSQL 是一個兼容 MySQL、服務高可用、數據強一致的關係型數據庫集羣。
這些開源項目來自騰訊的各個部門,其中包括微信團隊、藍鯨平臺和騰訊雲平臺等,項目的規模有像 weui.js 這樣輕量的 JavaScript 庫,也有像 MSEC、WCDB 等一些重量級的開源框架。其中有很多項目能夠直接應用於相似的業務場景。
同時騰訊也在以其餘三種方式參與開源,積極參與知名開源社區、運營本身開源項目的社區以及爲開源項目貢獻。
騰訊雲在今年 5 月份,宣佈加入 CNCF 和 Linux 基金會,在容器服務和 KVM 虛擬化方面貢獻本身的力量。6 月,騰訊雲加入 MariaDB 基金會,釋放騰訊雲數據庫 CDB 的內核積累。
社區參與
除此以外,騰訊也在積極爲一些開源項目作貢獻,包括 Docker、Hadoop、Ceph 以及 Linux Kernel 等。
騰訊的將來開源計劃
能夠看到,騰訊將來的開源計劃,與當下的技術趨勢也是密切相關,涉及到機器學習和 AI 等方面。其中值得關注的一個項目是 SOTER,這是一個騰訊生物認證組件,應用於微信 Android 客戶端的指紋支付業務,以及公衆平臺 H5 頁面的指紋受權。除此以外,還包括小程序相關的一些項目。
http://www.oschina.net/news/86208/tencent-changed-from-closed-to-opened