【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

一向封闭的腾讯,为什么也开始拥抱开源了?

  • 2017-07-05
  • 本文字数:3404 字

    阅读完需:约 11 分钟

在 6 月 22 日的腾讯“云 + 未来”峰会上,腾讯研发管理部总监许勇首次对外公开了腾讯的开源理念,本文根据其演讲整体而成。

大家下午好,简单介绍一下自己,我是腾讯研发管理部的许勇,目前任职腾讯的研发平台,主要致力于推动腾讯内部开源社区建设和外部开源项目的管理工作。今天,我以“腾讯开源,在路上”为题,分享腾讯内部如何打造工程师文化和外部开源的情况。

曾经的腾讯比较保守,什么事情都是关起门来自己做,内部的技术研发也是如此,各业务和产品都会重复开发很多类似的功能,比如 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 / iOS sdk 使用 ncnn 框架实现,在手机 QQ,手机 Qzone,微信,天天 P 图等应用中使用。

Weflow,基于 TMT-WORKFLOW 的前端工作流开发工具,应用于微信游戏、微信广告等项目的第三方合作团队前端构建工作 SOTER,腾讯生物认证组件,应用于微信 Android 客户端的指纹支付业务,以及公众平台 H5 页面的指纹授权。还有小程序相关的一些项目……

相对于 Google,Facebook 这样的科技公司,腾讯的开源,目前还是处在一个追赶者的阶段,甚至相对于国内的其他开源先行企业,也还有很大差距,但我们看到了腾讯的工程师们已经被开源的力量唤醒,更有热情的投入到了开源中来,去追求更大的技术价值,腾讯开源也会与腾讯云紧密结合,为开发者提供更多便利的基础服务和工具,以及开源项目使用,我们希望能和外部开发者一起,砥砺前行,创造中国开源的未来。

2017-07-05 17:194734
用户头像

发布了 219 篇内容, 共 135.1 次阅读, 收获喜欢 190 次。

关注

评论

发布
暂无评论
发现更多内容

大数据培训零基础的方法有哪些

小谷哥

特定领域知识图谱融合方案:学以致用-问题匹配鲁棒性评测比赛验证【四】

汀丶人工智能

自然语言处理 知识图谱 2月月更 2月日更 实体对齐

大数据培训学习选择哪个机构好

小谷哥

新年伊始,谈谈开源软件供应链安全的新趋势

安势信息

开源软件 清源CleanSource SCA 安势信息 ChatGPT 开源软件供应链安全

关于使用消息队列今天被面试官问倒了

做梦都在改BUG

啊啊啊!小程序小游戏也可以在自己的App上架❗️❗️

没有用户名丶

微信小程序 小程序游戏

由浅入深,聊聊OkHttp的那些事(很长,很细节)

Petterp

android okhttp

软件测试/测试开发 | Web 控件定位与常见操作

测试人

软件测试 自动化测试 测试开发 Web自动化测试

Java培训有哪些不同的学习方法

小谷哥

软件测试/测试开发 | web 控件的交互进阶

测试人

软件测试 自动化测试 测试开发 Web自动化测试

TDengine 3.0.2.5 查询再优化!揭秘索引文件的工作原理

TDengine

数据库 tdengine 时序数据库

宋红康2023版Java视频发布

小谷哥

MRS+LakeFormation:打造一站式湖仓,释放数据价值

华为云开发者联盟

大数据 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

IoTLink 版本更新 v1.5.2

山东云则信息科技

物联网

只用了半个Redisson的Semaphore实现并发控制

做梦都在改BUG

Java 并发控制 Semaphore redisson

秒云加入金兰组织,携手共建信创新生态

MIAOYUN

信创 信创云 信创产业 金兰组织

SpringBoot 如何保证接口安全?老鸟们都是这么玩的!

做梦都在改BUG

Java Spring Boot 接口

fabric.js开发图片编辑器的细节实现

秦少卫

架构 编辑器 Fabric.js 前端编辑器

前端培训学习方法有哪些

小谷哥

再获权威认证!秒云顺利通过ISO20000、27001双系统认证

MIAOYUN

ISO9001 ISO20000 ISO27001

如何快速实现多指标计算

jiangxl

嵌入式ARM设计编程(一) 简单数据搬移

timerring

arm

特定领域知识图谱融合方案:文本匹配算法之预训练Simbert、ERNIE-Gram单塔模型等诸多模型【三】

汀丶人工智能

人工智能 自然语言处理 知识图谱 2月月更 2月日更

安势信息入选 SegmentFault思否「2022 中国新锐技术先锋企业」

安势信息

软件成分分析 清源CleanSource SCA 安势信息 技术先锋 SegmentFault

模块6如何设计微服务架构

程序员小张

软件测试/测试开发 | 网页 frame 与多窗口处理

测试人

软件测试 自动化测试 测试开发 Web自动化测试

实战分享,电路板设计后这样干,一个人也能轻松搞定项目!

华秋PCB

PCB PCB打样 PCB设计

安擎董事长俞跃渊:打造智能算力,创新产业价值

科技热闻

Sentinel 是如何实现分布式限流的?

做梦都在改BUG

sentinel 分布式限流

面试官:谈谈你对JVM内存结构的理解

做梦都在改BUG

Java JVM

Svelte框架结合SpreadJS实现表格协同文档

葡萄城技术团队

一向封闭的腾讯,为什么也开始拥抱开源了?_腾讯_小盖_InfoQ精选文章