在昨天进行的 2019Techo 开发者大会上,腾讯公司副总裁、腾讯云总裁邱跃鹏表示,技术的发展离不开广大开发者的推动,而腾讯云为帮助开发者们创造更多价值,未来将坚持以「开源、共享、创新」为理念,与开发者们共同探索、建设全新的技术生态。
腾讯云希望通过这些理念,向开发者们表达友好、开放的态度,鼓励开发者与开发者之间保持共享、合作的状态,并以此来建立一个以创新为驱动的开发者生态体系。
开源之路始于危机
实际上,腾讯倡导开源由来已久,但其对开源态度的变化则是一个循序渐进的过程。早在 2010 年末的「3Q大战」结束之后,腾讯内部就开始意识到开放对于产品与技术创新的重要性。
在此之前,腾讯内部的技术研发虽然已经有了一定的积累,但也面临着愈发严重的技术孤岛、重复建设、缺乏融合的问题,技术支撑体系的不统一,也使得技术团队之间的产生了不少隔阂。而这些问题在外部所产生的最直观的体现,就是没人能感受到腾讯的真实技术实力。
所以从 2011 年开始,腾讯在技术研发上逐渐从独立封闭转向内部的共享、复用、开源、协同。腾讯开始鼓励工程师多交流,多共享,实现对内开源,甚至是对外开源。最初,这种自下而上非强制性的,由工程师自愿参与支持的开源模式,确实让腾讯在技术研发与项目运营的成本上有了一定的改善。
在 2012 年至 2014 年期间,腾讯开始尝试推出对外的开源项目,并着手完善对外开源的具体流程,加强推动开源的落地实施。2015 年,腾讯成立开源联盟,负责管理、协助开源相关的工作。
到了 2016 年、2017年,腾讯开始显著提高其对外开源的速度,并在 GitHub 上公开了很多自研的优质项目。腾讯随着业务体量的不断扩大,其战略也在发生着转变。腾讯的目标,已经变成了整个开发者技术服务生态,但腾讯不可能只靠自身的能力去覆盖每一项开发者服务,而开源则是一个可以让更多合作伙伴与开发者加入到生态建设行列中的好方法。
但很快,「自下而上」所造成瓶颈出现了。自下而上的模式通常比较适合仅涉及少数团队、资源等体量较小的开源项目,想要推动涉及范围大、体量很大的开源项目则比较困难。
为解决这一问题,腾讯终于在 2018 年第三次大规模组织架构调整之后,由腾讯高级执行副总裁、技术工程事业群总裁卢山,与腾讯高级执行副总裁、云与智慧产业事业群总裁汤道生两人牵头,正式成立了腾讯技术委员会以及腾讯开源管理办公室,分别从对内、对外两个方向上固化开源管理机制,建立开源生态。这也成为了腾讯在开源上的一个非常重要的转折点。
腾讯开始以自上而下的开源协同机制推动技术研发工作,很多与核心业务连系紧密的关键开源项目得以顺利推进,项目中技术创新的周期被大大缩短。
全面开放协作共赢
在今年 6 月进行的云原生技术大会上,腾讯首次对外公布了整体的开源战略路线图。腾讯开源路线将通过「三步走」计划,持续深化已有的技术能力:
第一步是内部开源协同。在内部先梳理项目,通过部门小团队或跨部门大团队协同推进,集中优势能力与资源快速实现技术突破。然后,建立筛选机制将代码开放出来。
第二步是外部代码开放。不断优化代码结构,借助来自社区的代码贡献者资源的帮助,构建技术影响力。
第三步是社区开放治理。进行大规模技术推广及应用,构建开发者生态体系,培养社区领袖与领导力,优化研发资源配置。
「三步走」计划实际是同步推进,类似于开发中迭代的概念,腾讯已在第一步中投入了较多资源,而在第二、三步上也已有了不少产出。
腾讯技术委员会对外开源管理办公室执行总监许勇在此前接受媒体采访时表示,腾讯拥抱开源,是随着腾讯自身战略的转变与发展应运而生的。腾讯依靠开放合作的形式,在内部开源与外部开源的共同支持下,希望与开发者、合作伙伴一起建立共享、共赢的生态环境。
今年 8 月,腾讯董事会主席、首席执行官马化腾,在 2019 中国国际智能产业博览会上首次对外谈到腾讯开源时提到,腾讯将通过内外部开放源代码等方式,积极参与到全球科技共同体的建设中。
如今,随着腾讯开源联盟主席、腾讯开源管理办公室委员堵俊平在 2019Techo 开发者大会上正式宣布开源分布式 HTAP 数据库 TBase 与企业级容器平台 TKEStack 两个重要项目,腾讯在开源之路上又再次迈入了新的阶段。
据腾讯开源官网以及 GitHub 上的数据显示,腾讯目前已在 GitHub 上开放了 89 个项目,拥有 1073 名贡献者,累计获得了 259812 个 Star 以及 53524 次 Fork,至少有 7 个项目得到了超过 1 万个 Star。
优秀项目层出不穷
腾讯在推进开源事业的过程中,向社区贡献了很多优秀的项目。而这些开源项目的出现,有效地推动了不同应用场景下的技术变革,同时也引导着开源社区更高效地针对某些技术难点进行深入探讨,并解决实际的问题。以下将列举部分比较受关注的腾讯开源项目。
1、WeUI(23.5k Stars)
WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户的使用感知更加统一。包含button、cell、dialog、 progress、 toast、article、actionsheet、icon等各式元素。
2、WePY(19.2k Stars)
WePY 是一款让小程序支持组件化开发的框架,可通过预编译的手段让开发者能够按照个人喜爱的开发风格来进行开发。WePY 借鉴了一些优化前端工具及框架的设计理念与思路,其框架的细节优化,以及Promise、Async Functions 的引入都是为了能让小程序的开发变得更简单、高效。
3、Tinker(14.4k Stars)
Tinker 是微信官方的安卓热补丁解决方案,也是最早的腾讯开源项目。Tinker 支持动态下发代码、So库及资源,让应用无需重新安装就可实现更新。
市面上的热补丁方案有很多,但大都存在着无法解决的问题,这实际也是 Tinker 被开发出来的原因之一。
4、TubeMQ(1.3k Stars)
腾讯在今年 9 月举行的 ApacheCon 上宣布 TubeMQ 开源,并在2019Techo 开发者大会上进行了正式发布。
TubeMQ 是腾讯在 2013 年自主研发的分布式消息中间件系统,可支持海量数据的高性能存储与传输,吞吐率高,延迟可低至 5 毫秒。经过近 7 年时间上万亿的数据沉淀,目前每天支撑的数据量超过了 30 万亿条。
5、Tencent Kona(63 Stars)
Tencent Kona JDK 于 2019Techo 开发者大会举行前夕宣布开源,并在大会上进行了正式发布。
Kona JDK 是基于 OpenJDK8 进行了具有针对性地优化后而开发,并由腾讯提供技术维护、优化及安全保障的 JDK 产品。Kona JDK 引入了高版本 JDK 特性,能够帮助用户无感知地使用共享核心类信息以提高启动速度,在云场景下 JVM 的启动速度最高能够提升 40% 左右。
为了增强线上诊断能力,Kona JDK 还引入了 JFR 以及活页图等功能,可帮助 Java 用户获得从系统到应用的 Profiling 信息,增强运行时的诊断以及热点分析与指导优化能力。目前,Kona JDK 已在腾讯上万台服务结点上进行了大规模部署,为云上 Java 场景提供服务。
6、TBase(78 Stars)
TBase 在 2019Techo 开发者大会上进行了正式发布,它是腾讯基于 PostgreSQL 开发的分布式 HTAP 数据库,其在兼容 SQL 标准,提供完整的分布式事务能力的同时,还保证了金融级数据容灾能力,此外还在数据安全、分布式执行器优化以及读写分离等方面也做了很多工作。TBase 不仅在腾讯内部得到了大规模应用,同时也在HTAP、地理信息系统,以及实时高并发等场景被很多外部客户所采用,目前线上运行超过 200 个集群实例,节点规模突破 1000,单日请求量超过 10 亿次。
7、TKEStack
TKEStack 在 2019Techo 开发者大会上进行了正式发布,它是腾讯推出的企业级容器平台。腾讯从 2009 年开始开发容器编排平台,到 2013 年已经在内部维护了上万台服务器,支撑着很多业务的平稳运行。当 Docker 和 Kubernetes 开源并成为事实标准之后,腾讯将内部平台切换到了这两个项目上,并在公有云和私有云上为大量客户提供着服务。这些开发经验和改进工作最终被整合在了一起,形成了 TKEStack。
开源革命任重道远
据 Gartner 的调查报告显示,99% 的企业在其 IT 系统中使用了开源软件。来自 GitHub 2019 年度报告上的数据显示,中国已经成为 GitHub 上仅次于美国,贡献量排名第二的国家。而腾讯,从开源项目的数据量上看,在国内企业中排在阿里巴巴与华为之后,位列第三。
腾讯目前已加入 Linux、Apache 等 9 大开源基金会,成为最高级别会员,并持续地向这些开源基金会捐赠优秀的开源项目。在贡献项目的同时,腾讯也在参与建设已有的开源项目。
在腾讯的开源理念与众多项目的背后,其实是对代码文化的执着追求。腾讯副总裁姚星曾经在腾讯内部对这种代码文化做过解释,他认为开源是手段而协同是结果。腾讯一直在做的,就是想办法在「去中心化」与「重复造轮子」之间找到平衡点。而开源协同就是有效的解决方案之一,腾讯努力将技术理念沉淀为一种文化,再通过文化解决实际问题。
不论是推出开源激励计划,鼓励开发者积极参与开源项目的开发,还是举办 2019Techo 开发者大会,为开发者提供了解的最新趋势与前沿概念的机会,腾讯不仅在以发起者、贡献者的身份参与开源,还在鼓励、促进更多的开发者加入到开源事业中,通过这种包容开放的态度,腾讯将得以更快地将开发者、社区、企业紧密维系在一起,同时其开发者生态体系的建设也将持续得到完善。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。