3Q大战,当年这场“明星产品”之间的“互掐”轰动了整个互联网,腾讯当时“一个艰难的决定”直到现在仍被网民乐此不疲地调侃。事实上,腾讯当时不止做了一个艰难的决定,这场3Q大战使得有着深入骨髓的“封闭”基因的腾讯选择了打开大门,拥抱“开放”战略。技术研发也是在这种环境和背景下,开始向共享、复用和开源迈进。本文将和大家一起看看腾讯的开源之路。
虽然腾讯的技术积累比较深厚,然而腾讯开源的起步却是十分艰难。因为腾讯由业务和产品驱动的研发模式,使得它在开源之路上走得并不平坦,从业务和产品,到 KPI,再到部门之间的壁垒,这些因素都构成了腾讯开源路上的“拦路虎”。
因此,从内部开源做起的腾讯,在其内部开源社区的定位和运营上,会更多地从工程师的角度去考虑问题,这样的方式给大家提供了从轻度到重度参与开源的途径。
有了内部开源基础的腾讯,开始尝试外部开源,但是发现外部开源同样比较困难。因为公司性质的对外开源需要把控的方面特别多,从对开源项目进行安全、商标、专利和协议等各方面的检查,到项目涉及到的部门和业务领域,可以看到,开源一个项目的投入是巨大的,这还不包括开源之后,项目团队投入的维护成本。因此,腾讯早期开源的节奏非常缓慢,截止到 2016 年底,腾讯正式发布的开源项目共计 36 个。
腾讯开源 6 年的发展历程
开源一个项目投入的工作
下面简单介绍一下截止到 2017 年腾讯正式发布的开源项目:
Blade:https://www.oschina.net/p/blade
一个现代构建系统,期望的目标是强大而好用,把程序员从构建的繁琐中解放出来。Blade 主要定位于 Linux 下的大型 C++ 项目,密切配合研发流程,比如单元测试,持续集成,覆盖率统计等。
Appecker:https://www.oschina.net/p/appecker
一款用于 iOS 系列系统的自动化测试框架。
QcloudMna:https://www.oschina.net/p/mna
追风移动加速是腾讯云平台为移动应用开发者提供的基于网络的加速服务。
Ctaxis:https://www.oschina.net/p/ctaxis
云排序用于提供海量数据排序服务, 采用可扩展的分布式存储方案。
APT:https://www.oschina.net/p/apt
安卓性能测试工具,安卓平台高效性能测试套件,用于安卓平台的基准测试、竞品测试。
Koala:https://www.oschina.net/p/tencent-koala
跨平台图形编译工具,用于快速生成前端 CSS 和 JS。
TDW:https://www.oschina.net/p/tdw
腾讯分布式数据仓库,用于帮助企业低成本构建大数据分析系统或数据仓库。
TscanCode:https://www.oschina.net/p/tscancode
静态代码扫描工具,针对 C/C++ 代码的静态代码扫描解决方案。
RapidJSON:https://www.oschina.net/p/rapidjson
一个 C++ 的高性能 JSON 解析器及生成器,同时支持 SAX/DOM 风格的 API。
Key-N-Value:https://www.oschina.net/p/knvprotoengine
KNV 是一个模式自由的高性能树型协议处理引擎,是对 Key-Value 的一个通用结构化扩展。
WeTest助手:https://www.oschina.net/p/wetest-assistant
基于手机端的辅助测试工具,包括性能测试和远程调试两大功能,并提供云端真机在线调试。
QT4i:https://www.oschina.net/p/qt4i
iOS 开发自动化测试工具,全面兼容 iOS 真机和模拟器,基于分布式技术,高效并发执行测试。
QT4A:https://www.oschina.net/p/QT4A
基于 QTA 提供面向 Android 应用的 UI 测试自动化测试解决方案。
Fanvas:https://www.oschina.net/p/fanvas
SWF 转 HTML5 Canvas 动画。Fanvas 可以把 SWF(包括矢量和位图)完美地转化为 Canvas 动画,让美术妹子一次制作,到处运行。
HaboMalHunter:https://www.oschina.net/p/habomalhunter
Habo Linux 恶意软件分析系统,用于在 Linux 平台下进行自动化分析、文件安全性检测的开源工具。
QTAF:https://www.oschina.net/p/QTAF
QTAF 是一个跨平台的测试自动化工具,适用于后台、原生或混合型客户端应用的测试。
WeDemo:https://www.oschina.net/p/wedemo
微信团队开源的项目,用于微信开发者进行微信登录、分享功能开发时的参考 Demo。
GAutomator:https://www.oschina.net/p/gautomator
针对 Unity 手游的 UI 自动化测试框架。
MSEC:https://www.oschina.net/p/msec
毫秒服务引擎是腾讯的一个开源框架,适用于在廉价机器组成的集群上开发和运营分布式后台服务。
Behaviac:https://www.oschina.net/p/behaviac
行为树(Behavior Tree)解决方案。该方案包括编辑器(Designer)和运行时库(Runtime)。
Blueking CMDB(蓝鲸配置平台):https://www.oschina.net/p/blueking-cmdb
一款面向应用的 CMDB,在 ITIL 体系里,CMDB 是构建其它流程的基石,而在蓝鲸智云体系里,配置平台就扮演着基石的角色,为应用提供了各种运维场景的配置数据服务。
GT(随身调):https://www.oschina.net/p/_gt
安卓/iOS 手机端调测组件,用于安卓平台的性能测试、竞品测试及仅凭一台手机进行 App 测试的场景。
weui-wxss:https://www.oschina.net/p/weui-wxss
WeUI for 小程序,为微信小程序量身设计。
weui.js:https://www.oschina.net/p/weui-js
WeUI 是由微信官方设计团队专为微信移动 Web 应用设计的 UI 库。weui.js是 WeUI 的轻量级 js 封装。
Teaf:https://www.oschina.net/p/teaf
基于 ACE 的高性能服务端框架,单进程多线程,支持 select/epoll 等模型。
SQLCipher:https://www.oschina.net/p/sqlcipher
SQLCipher 提供了对 SQLite 数据库的传输层进行全面加密的工具,而通过使用 SQLCipher ,整个加密过程对客户端是透明的,无需改动应用程序。(该项目是腾讯 fork Zetetic 公司的开源项目)
Tars:https://www.oschina.net/p/tars
基于名字服务使用 Tars 协议的高性能 RPC 开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。
Mars:https://www.oschina.net/p/wechat-mars
微信官方的终端基础组件,是一个使用 C++ 编写的业务性无关、平台性无关的基础组件。目前已接入微信 Android、iOS、Mac、Windows、WP 等客户端。
WeFlow:https://www.oschina.net/p/WeFlow
一个高效、强大、跨平台(macOS & Win)的前端开发工作流工具,核心基于 tmt-workflow 工作流,代码开源可定制。
Pebble:https://www.oschina.net/p/pebble-rpc
分布式开发框架。基于该框架,可以让开发者只需专注于业务逻辑的实现,而不需要关注基础功能的开发,如网络通信,数据存储,集群管理等。
tmt-workflow:https://www.oschina.net/p/tmt-workflow
基于 Gulp(v4.0)、高效、跨平台(macOS & Win)、可定制的前端工作流程。
WeUI:https://www.oschina.net/p/weui
一套同微信原生视觉体验一致的基础样式库,为微信 Web 开发量身设计,可以令用户的使用感知更加统一。包含
WCDB:https://www.oschina.net/p/wcdb
腾讯开源的一个高效、完整、易用的移动数据库框架,基于 SQLCipher,支持 iOS、macOS 和 Android。
xLua:https://www.oschina.net/p/xlua
xLua 为 Unity3D 增加 Lua 脚本编程的能力,进而提供代码逻辑增量更新的可能。
Tinker:https://www.oschina.net/p/tinker
微信开源的 Android 热修复框架,支持在无需升级 APK 的前提下更新 dex, library 和 resources 文件。
Libco:https://www.oschina.net/p/libco
协程组件,将现有多进程同步网络访问改造成协程的基础组件,是微信后台大规模使用的 C/C++ 协程库。
PhxRPC:https://www.oschina.net/p/phxrpc
微信后台团队推出的一个简洁小巧的 RPC 框架,编译生成的库只有 450K(编译只依赖第三方库 Protobuf)。
PhxPaxos:https://www.oschina.net/p/phxpaxos
微信后台团队自主研发的一套基于 Paxos 协议的多机状态拷贝类库。
PhxSQL:https://www.oschina.net/p/phxsql
PhxSQL 是一个兼容 MySQL、服务高可用、数据强一致的关系型数据库集群。
这些开源项目来自腾讯的各个部门,其中包括微信团队、蓝鲸平台和腾讯云平台等,项目的规模有像 weui.js 这样轻量的 JavaScript 库,也有像 MSEC、WCDB 等一些重量级的开源框架。其中有不少项目可以直接应用于类似的业务场景。
同时腾讯也在以其他三种方式参与开源,积极参与知名开源社区、运营自己开源项目的社区以及为开源项目贡献。
腾讯云在今年 5 月份,宣布加入 CNCF 和 Linux 基金会,在容器服务和 KVM 虚拟化方面贡献自己的力量。6 月,腾讯云加入 MariaDB 基金会,释放腾讯云数据库 CDB 的内核积累。
社区参与
除此之外,腾讯也在积极为一些开源项目做贡献,包括 Docker、Hadoop、Ceph 以及 Linux Kernel 等。
腾讯的未来开源计划
可以看到,腾讯未来的开源计划,与当下的技术趋势也是密切相关,涉及到机器学习和 AI 等方面。其中值得关注的一个项目是 SOTER,这是一个腾讯生物认证组件,应用于微信 Android 客户端的指纹支付业务,以及公众平台 H5 页面的指纹授权。除此之外,还包括小程序相关的一些项目。