3Q大戰,當年這場“明星產品”之間的“互掐”轟動了整個互聯網,騰訊當時“一個艱難的決定”直到現在仍被網民樂此不疲地調侃。事實上,騰訊當時不止做了一個艱難的決定,這場3Q大戰使得有着深入骨髓的“封閉”基因的騰訊選擇了打開大門,擁抱“開放”戰略。技術研發也是在這種環境和背景下,開始向共享、復用和開源邁進。本文將和大家一起看看騰訊的開源之路。
雖然騰訊的技術積累比較深厚,然而騰訊開源的起步卻是十分艱難。因為騰訊由業務和產品驅動的研發模式,使得它在開源之路上走得並不平坦,從業務和產品,到 KPI,再到部門之間的壁壘,這些因素都構成了騰訊開源路上的“攔路虎”。
因此,從內部開源做起的騰訊,在其內部開源社區的定位和運營上,會更多地從工程師的角度去考慮問題,這樣的方式給大家提供了從輕度到重度參與開源的途徑。
有了內部開源基礎的騰訊,開始嘗試外部開源,但是發現外部開源同樣比較困難。因為公司性質的對外開源需要把控的方面特別多,從對開源項目進行安全、商標、專利和協議等各方面的檢查,到項目涉及到的部門和業務領域,可以看到,開源一個項目的投入是巨大的,這還不包括開源之后,項目團隊投入的維護成本。因此,騰訊早期開源的節奏非常緩慢,截止到 2016 年底,騰訊正式發布的開源項目共計 36 個。
騰訊開源 6 年的發展歷程
開源一個項目投入的工作
下面簡單介紹一下截止到 2017 年騰訊正式發布的開源項目:
-
Blade:一個現代構建系統,期望的目標是強大而好用,把程序員從構建的繁瑣中解放出來。Blade 主要定位於 Linux 下的大型 C++ 項目,密切配合研發流程,比如單元測試,持續集成,覆蓋率統計等。
-
Appecker:一款用於 iOS 系列系統的自動化測試框架。
-
QcloudMna:追風移動加速是騰訊雲平台為移動應用開發者提供的基於網絡的加速服務。
-
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