腾讯谈开源:通过自身拥抱开源更好地促进中国的开源生态

2018 年 7 月 03 日

6 月 25 日 -6 月 27 日,LC3(LinuxCon + ContainerCon + CloudOpen)中国 2018 大会在北京举行。该会议由 Linux 基金会主办,是集 Linux、容器、云技术、网络、微服务等多种前沿开源议题于一身的科技盛会,吸引超过 2000 名开源专家共聚一堂。在本届大会上,腾讯正式成为 Linux 基金会白金会员,并将其两大自研开源项目——高性能 RPC 开发框架 TARS 和轻量化名字服务方案 TSeer 贡献给了 Linux 基金会。

大会现场,腾讯开源顾问 &Linux 基金会董事刘昕,腾讯副总裁曾宇,腾讯开源负责人许勇也就腾讯开源历程,中国开源技术现状等问题回答了媒体记者的提问。

腾讯对开源有什么认识?与 Linux 基金会合作的战略意义是什么?

曾宇:为什么要开源?其实在腾讯内部还是想的比较清楚的,开源本质上是一个开放模式的改变。现在这个时代更需要的是创新,技术不应该变成创新的阻力,只有更多利用别人做的东西和共享自己做的东西,这个模式才能发展得更快,帮助创新更快地实现。所以腾讯是一定要走开源这条路的。

其实我认为开源有两个大的促进作用,第一个就是前面已经谈到的,开源可以极大地提升创新效率;第二个作用是,开源反过来对开发者有要求。要做开源就会促使工程师养成更好的习惯,促使搭建更好的一些平台,提升我们本身的工程能力。坦率来说我认为国内的应用虽然非常发达,但是工程水准上离国外还是差距比较大的,这也可以反过来说明为什么腾讯会选择 Linux 这样一个更具国际影响力的公司,我们可以快速同国际高水平的选手一起合作,快速提升我们公司的能力和技术水平。朴素地说我们想借这个事情改变我们自己的研发模式,我们想加速技术的创新,我们想融入到 Open Source 的大环境中去。

目前腾讯有哪些开源项目,腾讯在开源社区的贡献主要体现在哪些方面?

刘昕:腾讯目前大概有 57 个开源项目,覆盖微信、腾讯云、腾讯游戏、腾讯 AI、腾讯安全等相关领域。

腾讯的一些自主开源项目:

  1. Tinker:微信前端团队 Andriod 热补丁方案
  2. Angel:灵活而强大的参数服务器型分布式机器学习平台
  3. WeUI:轻量而优雅的微信 UI 样式库
  4. VasSonic:轻量高性能的 H5 提速框架
  5. Tars:整套微服务治理和开发运营一体化解决方案
  6. TSeer:TARS 的轻量化名字服务方案,整套服务注册发现容错的方案

从一年半以前腾讯开始逐渐开源这些项目,中间经过了很多探索,因为原来的代码其实并不是那么完美,开源后必须接受社区的检验甚至是评价,我认为这对于工程师来说就是一个很大的心理上或者行为上的一个改变。我们现在在 github 上达到了 15 万个 star,总体反应比较好。这里面也有很多优秀的项目,未来我们希望能够有更好的开源项目贡献出来,同时也希望腾讯的工程师能更多的参与社区里面其他的项目。腾讯的技术工作中用到了社区里面其他的开源项目,但是实际上目前反馈的还远远不够,我们希望鼓励更多的工程师把自己的贡献和智慧贡献到社区。

许勇:我补充说一下,可能我们看到以前腾讯开源的项目类似于工程师文化驱动,比如说我出于对代码对开源的热爱,贡献出这个项目。慢慢的我们会看到开源和自身的业务结合起来,像这次和 Linux 基金会的深度合作,使得我们有更多的资金和人力投入,使我们的开源项目能够更长久,更持续,能够更多的和社区产生良好的互动。可以看到腾讯开源是由原来的工程师文化驱动的个体行为,转变为和业务深度结合,这样可以发挥开源更大的力量,无论是对开源社区和开源行业,还是对腾讯本身来讲,都是一个多方受益的举措,所以我觉得腾讯开源会继续以不同的方式,包括以个体的方式,以参与社区贡献的方式,或者说与基金会合作这种方式,更多地参与到开源的活动中来。

腾讯十年前就有一套很好的 RPC 开发框架,为什么去年才开源?

刘昕:TARS 这个项目是一个很典型的 RPC 框架,我们也看到业界有很多的 IP 框架推出来,像百度的 BIPC,包括阿里、华为都有类似的开源项目。

首先一点,TARS 这个项目因为在内部做了很长时间的打磨,从十年以前开始就已经产生这个项目,但是它在十年的过程中技术在不断演进。我们最早期是解决了服务之间的调用关系,性能的问题,访问授权的问题,高可用的问题。随着技术的不断进展,我们慢慢进行了很多的改进。比如说我们在开发语言的支持、协议的支持上就会逐渐增加。

在正式开源之前我们也做过很长时间的准备工作。我们尝试过让腾讯以外的公司去使用相关的技术。在这个过程中,首先要解决很多问题,比如说知识产权,专利的问题,还有包括技术里面具体代码的一些问题。我们最后决定通过开源的方式,把项目里的技术能力贡献出来,然后让更多外部的同行来使用,这是我们最开始的一个初衷。

所以我们在两年前开始跟一些公司合作,经过一年多时间的准备,在去年把这个项目正式开源出来,其中做了很大程度的代码改造和重写,做好这些准备工作之后,去年把它正式开源出来了。

以前腾讯在内部开源上存在 KPI 或者部门墙的问题,不知道现在这些问题解决得怎么样了,或者有什么新的问题,另外在外部问题上有哪些新的问题需要解决?

许勇:是这样的,从 2010 年开放战略,在内部分享代码存在部门开发的问题,这个问题其实还是业务驱动的。现在腾讯有更多的工程师文化驱动,可能就是基于这种开源的热情,大家可以牺牲自己的一些业余时间去完成自己的一些想法。我觉得从根本上,每个大公司可能都无法解决部门之间的壁垒,或者要完成 KPI 没有时间做更多开源的这个问题。

但是我们可以看到一些转变,现在越来越多和业务结合,会有更多的资金和人力投入,在做开源的同时能对业务有促进,这样结合起来腾讯内部就进入了一个新的阶段,解决一直困扰我们的部门墙和 KPI 的问题。和业务结合之后,不仅业务上能得到提升,工程师自己本身的开源追求也能得到满足。

对外的过程中,包括 TARS 项目的开源也遇到过很多问题。大公司开源最怵的就是涉及到法律问题,举个例子就是我们 TARS 捐赠给 Linux 基金会商标,在腾讯是商标捐赠的第一例。腾讯其实从来没有发生过商标去转给其他非腾讯公司的事例。所以在对外的过程中其实遇到了非常多的问题,未来我觉得可能也会产生很多问题,包括可能和 Linux 在一些合作上的问题,这些可能都是一些新的问题。

比如说我们开源了一些项目后,会得等到外界的质疑,但是这些互动反馈都是很良性的,别人很友善的指出问题,然后我们的工程师可能就连夜做梳理和优化。这样的问题其实可以加强我们跟社区更紧密的联系,让我们内部的工程师更了解开源社区究竟是什么样的,究竟应该如何贡献自己的力量,这对腾讯今后做开源其实帮助是非常大的。

曾宇:稍微补充一下,虽然问题很多,其实从公司的管理层角度来讲,这个问题我们还是比较正向来看。因为开源确实代表一种生产力,这就意味着现有的团队要逐步适应和接受这种新的生产力,最终它还是可以让产品过硬的,所以我觉得前提存在只是一个时间问题,这些问题我相信应该还是会逐步有所改善的。

以往中国的开发者在开源社区往往以下载和使用代码为主,贡献一直做得不好,企业的角度来说,您觉得中国开发者在开源生态当中的贡献应该有哪些,或者大家缺乏哪方面的教育?

曾宇:我是一个十几年的程序员,我对这个生态理解还是有点感受的。中国开发者更直面解决问题,比如说性能要提升上去,漏洞要解决,或者要把并发放开,就是这些局部的问题解决上,我认为从开发者的效率是比较高的,但是相对来说比较欠缺的是对一个非常大的系统的整体的把握,架构分解、抽象,我觉得这方面简单来说还是一种工匠手艺文化和公司手艺文化的区别。我们手艺不错,但是一个大厦是一块一块砖码出来的,要码出来让它不至于倒掉,这个问题就是我们要决断,要构建一个庞大的系统,这些系统化的思维,架构的能力其实是不可或缺的。其实腾讯发展到现在,也开始逐步看到这个问题,所以我站在一个技术人的角度来讲,也非常鼓励我们内部去推进一些工程师的文化,学学怎么样把大问题分解成小问题,怎么做架构,做抽象,做分享,怎么做复用的东西,我们很鼓励这些能力的培养。这些东西坦率来说跟 KPI 没有关系,但是这会是整个公司或者这个行业更长期发展的工作。

现在其实年轻开发者很多,大家好像特别喜欢开源,但是又缺一种真正把开源落地的方式,对这部分不知道大家是怎么想的,以及腾讯是否有跟整个市场开发者一起合作的可能,一起推动中国开发市场的成熟或者健康的发展。

刘昕:刚刚也说到其实中国的开发者作为个体来说,技术还是不错,但是其实想要出好的开源项目更多地要做技术的设计,技术路径的规划。如果是作为个体去做这样的一些事情,可能会面临这样的困难。其实对腾讯内部或者给外部的开发者,我们希望能够贡献这样的一些方法和思维:比如说会把我们的一些架构的设计思想通过开源或者其他的方式告诉年轻开发者,可能他们在自己的工作中还没有碰到类似的问题,但是可以接受这样的思想,就可以在做新工作的时候有这样的意识,我觉得这是一个非常重要的方面,就是给开发者机会能够接触到一些架构上的思想。

腾讯为什么加入 Linux 基金会?我本人也是 Linux 基金会的董事,我想其实很重要的一点就是在很多中国公司里面,技术领导对于开源这件事情的认识,以及在这方面的投入是相对薄弱的,我希望能够教育各个技术领导者或者是不管是架构师也好,管理者也好,能够在这方面多做投入和教育,以及技术上的导向,甚至是一些资源上的保障,比如说价值的导向、时间的腾挪,我想这对整个技术团队的发展会有更多的好处。

过往的经历中,我们发现很多中国的工程师都是用业余时间做开源,其实中国很多公司加班文化也很严重,每天工作到很晚,再用业余的时间参与到开源项目其实是很难保证的,我们希望每个团队都有一定的时间保障或技术保障来投入到这些事情当中,可能也不光是用,可能会有更多的反馈出来。

最后我个人认为,中国的工程师和开源社区,以及开源项目交流,目前来讲比较欠缺一点就是语言问题。我们也看到腾讯的很多开源项目,甚至是国外的一些开源项目,中国的工程师更习惯于用中文去提问题,甚至是回答,这方面我们需要通过一些方式去解决工程师的习惯问题。我相信中国的工程师不管是在技术上还是英语上其实并没有那么弱,只是大家的习惯问题,而且我想技术领域用到的英语相对来说是比较容易的,而且是比较直接的一种表达方式,大家如果习惯了这种交流工具,并且能够把它用好,其实会让中国的工程师和外界有更好的交流和互动,也能吸收更多的技术,把自己的技术成果让更多人知道,这也是我们希望能够加入 Linux 基金会,甚至在行业内部,腾讯内部做的一个工作,希望大家逐渐打破这个屏障,而且我相信随着国内的教育水平不断提高,工程师的技术水平和英语能力也是逐渐提高的,非常希望以后看到这一点。

很多人认为开源有很多的漏洞不安全,腾讯在安全方面一直有很大的投入,你们是怎么看待这个问题的?

曾宇:这个问题非常好,是整个社区要去面对的问题。实际上腾讯在安全这件事情本身投入也非常大,这个对我们来说还是一个纯粹的成本,我们所有代码在上线之前都会经过很严格的检查。我相信未来也会可以开放给社区,包括社区做一些安全方面的检查,当然我们更希望整个社区的安全专家们,大家一起投入到这件事情上来,安全的事情大家一起来负责。实际上我可以这么理解:开源并不会让这件事情变得更不安全,这是我的观点,因为所有漏洞其实都是因为很多开发者的不知觉,和他可能意识不到位造成的,实际上如果你是一个很优秀的开发者或者社区组成的团队,本身的漏洞是比较少的。当然也许开源的社区未来我相信会有一些有安全知识的人,他可能采取攻击化的知识的手段,弥补漏洞减少安全漏洞的发生,很多不开源的软件同样也是非常非常不安全的。

中国的开源生态一直有一个问题,没有足够好的项目,也没有以基金会的形式或者现金激励的形式孕育这种好的项目,没有基金会或者整体的激励机制,好的平台级的项目也出现不了,这好像是一个死结,不知道腾讯对这方面怎么想的,以及假如我们有自己创造的基金会这样的模式,腾讯对待这样的机构是怎么看待的?

刘昕:其实你问的问题正好就是我们这次为什么要加入 Linux 基金会,成为他们的白金会员,派人去参与董事会,同时也去贡献我们自己的项目。这件事情本身就是包含了你刚才问的那些问题。

第一是我们之前看到中国很多公司参与基金会,但是他自己并没有真正的贡献出项目来,我们希望这次我们能把我们已经做得比较好的一些项目首先贡献出来,未来腾讯也会将更多的项目放到基金会,可能不一定是 Linux 基金会,我们希望未来会有越来越多的项目出来。

第二是我们怎么和开发者互动,怎么培养他们更好的工作习惯,我想这也是我们加入 Linux 基金会得原因,也希望通过基金会的一些支持,包括我们自己腾讯内部的一些资源和能力的输出,能够对国内的开发者有更好的知识分享。当然这里面可能也会有一些资金的支持,我们希望能有一个比较好的组织的保障,保障这个项目能够正常发展,也希望在这件事情上能有更多的资金投入。

曾宇:我觉得可能对中国的开发者要有更多的信心,其实我相信中国的天才是不少的,有些我们能做的事情是给他们松一下绑,让他们的天性能发挥出来,放眼看未来他也会贡献很多好的东西。我认为开源首先是一个内在的诉求,就是说一个人是有天分的,然后他的表达需要让全世界知道,如果你靠激励去牵引他做这件事情,反而不见得能产出特别好的东西。我觉得给有天分的人释放的平台,他可以把自己的才华施展出来,如果他本身没有这个想法基金会也很难做。

刘昕:我们能够提供一些资金上的支持,但是我们打造的一个激励机制是非物质性的激励会更多一点。

2018 年 7 月 03 日 02:55597
用户头像
张婵 InfoQ 技术编辑

发布了 87 篇内容, 共 44.4 次阅读, 收获喜欢 210 次。

关注

评论

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

阿里P8大牛总结整理的精选技术好文:Redis+Nginx+设计模式+Spring全家桶+SQL+Dubbo

Java成神之路

Java 程序员 架构 面试 编程语言

牛批!阿里P8大牛写了一份Spring Boot2教程已整理成文档免费分享。谁学谁真香系列!

Java成神之路

Java 程序员 架构 面试 编程语言

对于CRM之于现代化企业的影响以及作用的分析

Marilyn

敏捷开发 快速开发 企业开发 CRM 企业应用

打工人、打工魂、高效MES助力打工者都是人上人

Learun

敏捷开发

深入了解物理内存管理-伙伴(Buddy)算法

ShenDu_Linux

Linux 算法 内存管理 内核

【3年Java经验面经】阿里三面被挂!幸获内推历经5轮终于拿到口碑offer!

Java成神之路

Java 程序员 架构 面试 编程语言

最近我发现瑞幸在这样做私域运营

Linkflow

营销数字化 客户数据平台 CDP 私域运营

业务中台建设 - 自底向上演进

孝鹏

架构 中台 业务线 数字化转型 沟通

MindSpore手写数字识别初体验,深度学习也没那么神秘嘛

华为云开发者社区

人工智能 学习 手写识别

华为云MVP高浩:打破AI开发瓶颈,解决数据、算法、算力三大难题

华为云开发者社区

人工智能 数据 华为云

蘑菇街Java大牛熬夜半个月纯手打肛出的一份《多线程源码学习笔记》文档资料,赶紧收藏学习!

Java成神之路

Java 程序员 架构 面试 编程语言

Spring+MySQL+数据结构+集合+注解+NIO+多线程进阶学习思维脑图总结!

Java成神之路

Java 程序员 架构 面试 编程语言

时空碰撞系列·终

誓约·追光者

数据分析 Sparksql

Spring Boot 2.4.0正式发布,全新的配置文件加载机制(不向下兼容)

YourBatman

云原生 Spring Boot 新特性

每周花6小时跟清华大牛学Java:JVM、高并发多线程、算法、微服务等。技术能力蹭蹭往上涨!

Java成神之路

Java 程序员 架构 面试 编程语言

架构师第一期作业(第 11 周)

Cheer

作业

微服务已然成为Java开发的面试门槛,你连SpringCloud都不会还想跳槽涨薪?

Java成神之路

Java 程序员 架构 面试 编程语言

“摸爬滚打”多年,从月薪3K到30Kjava大神,我是怎么蜕变的?

比伯

Java 编程 架构 面试 计算机

使用resilio实现多集群的k8s pod数据双向非实时同步

东风微鸣

Kubernetes 探索与实践 openshift

一份知识点全面又能不断更新与时俱进的《Java面试宝典》,有人已成功靠它拿到阿里、京东、字节跳动等大厂offer,

Java成神之路

Java 程序员 架构 面试 编程语言

Java基础+JVM+分布式+算法+锁+MQ+微服务+数据库等499道Java面试题整理(含答案)。

Java成神之路

Java 程序员 架构 面试 编程语言

还在头疼C艹中的智能指针吗?

linux亦有归途

指针 C/C++

LeetCode题解:121. 买卖股票的最佳时机,暴力法,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

什么是低代码(Low-Code)?

阿里巴巴云原生

程序员 云原生 代码

一点就透的二分查找算法

比伯

Java 编程 程序员 面试 计算机

架构师训练营第 1 期 第 10 周作业

李循律(祥龙)

首家支持阿里云函数计算 APM技术为Serverless环境赋能

BonreeAPM

阿里云 Serverless 运维 APM 函数

从应用迁移到平台微认证:鲲鹏技术解读

华为云开发者社区

鲲鹏 代码迁移 arm

产业新基建,撬动数字经济发展新机遇

京东智联云开发者

人工智能 新基建 京东

二本毕业两年Javacrud经验,面试阿里侥幸通过定级P6,分享这波面经,希望能够激励到同样被学历所困扰的技术人,能够对职业生涯和技术规划有一个参考价值

Java成神之路

Java 架构 面试 编程语言 java程序员

使用 Jira Service Management 管理资产,您需要知道的5件事

Atlassian速递

数字化转型 Atlassian Jira ITSM ITIL

腾讯谈开源:通过自身拥抱开源更好地促进中国的开源生态-InfoQ