前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信热补丁Tinker项目组的特别访谈

微信热补丁Tinker项目组的特别访谈

作者头像
腾讯开源
发布2018-03-02 16:26:48
9180
发布2018-03-02 16:26:48
举报

前不久,微信开源了其Android热补丁框架Tinker。

Tinker项目地址: https://github.com/Tencent/Tinker(点击文末阅读原文,直接访问该项目。)

以下内容是对Tinker核心开发组的专访。

1.为什么想要做开源项目?

Tinker项目负责人Shwen:首先热补丁技术对我们微信来说的确是非常需要,它无论是在修复一些紧急上的问题,还是在发布一些功能的时候,它都非常有用,所以微信一定要做这件事情。

第二个问题是怎么做。最简单的是业务耦合,但是当前微信不仅仅只有微信客户端一个产品,我们考虑到以后有更多的产品,所以我们把它做成一个基础的功能。它应该是业务不耦合,成为一个组件,可以快速推广到其它项目。这也给开源提供了条件。

当我们做完去耦合这件事情的时候,我们发现,市面上仍然没有一个可以用在生产环境上的,好的、比较高性能的补丁系统,所以我们决定把Tinker开源出去。

2.Tinker收获了热烈的反响,它在技术上有哪些优势?

Shwen:Tinker受欢迎的程度出乎意料,总结回来可能有以下几个原因:

第一点是关注度。在Android这个领域,修复技术的确是这半年来比较受欢迎的热点。

第二个就是产品本身,我们在Tinker的每个细节,无论是性能、还是它的可用性、稳定性上,都做很多的工作。我们为了做Tinker,实现了大概几百个上报,监控它每个流程,每个环节都聚集了微信团队的努力和工匠精神。无论是补丁的体积还是各种方面,它已经在微信几亿用户那里得到了验证,所以兼容性和稳定性是可以得到保证的。

3. 对于开源出去的项目,如何能够使项目有持续的心跳,避免开源等于项目结束的现象出现?

微信终端研发中心副总监Kiro:如何避免开源即代表着项目结束,我觉得可以从4个点来入手:

首先,在技术上,我们应该保证开放出去的代码和内部产品在使用的代码是同源的。

二,前者的要求其实对于设计者来说,需要考虑充分的模块解耦合,他要在设计的时候,考虑每一个代码模块可能的扩展。避免未来开源出去的项目,在有能力的开发者fork出去的分支中,无法回源到主线。一旦这样的情况多了,开源项目核心的凝聚力就变弱了。

第三点,我觉得很重要的一个事情是,之前我们的开源思想一直是“我要做大而全的系统,要做非常power的事情”。但有的时候,小的组件、小的项目,它开源出去带来的能量却并不比大的项目更弱。而且由于它的体量小、解耦合度高,无论是简单的还是复杂的应用,都可以使用同样的代码,因此小的项目反而有的时候能量更大、更容易传播。

第四点,我们需要持续在开源出去的项目上投入人力,包括上外面提出的issue、提出的PR,都必须要有内部的同事进行及时的响应。

这样才能使这个项目有持续的心跳,让这个项目活下去、维持生命力。

4. 想要长期维护一个项目是需要很大的工作量的,在大家提出issue时及时回复,给出pull request时及时辨别并选择合并等,需要投入大量的人力和时间。那么开源对微信的发展有什么好处吗?

Shwen:微信开源有个前提是,我们内部和外部使用同一个版本,就是说开源的产品在迭代的过程中,微信是可以从中受益的,这是一个很大的前提。 例如我们在刚发布之后的两周里面,发现了一些问题,外部也提了大概7、8个PR,还有一些bug。我们发现,这些bug可能是在微信当前是发现不了的,但是把它开源出去,更多的人去使用它的时候,就会发现它有问题。然后我们再去不停地修改这些问题,等修改完这些问题之后,我们过两天就会发一个新版本,这个新版本我们也会带到微信下一个版本里面。

其实PR和issue的维护,是对我们微信本身有价值的,它就是我们微信的基础功能,是使用在微信里面的。

5. 你觉得鼓舞你投入精力做开源这件事的动力是什么?

Kiro:对于程序员个人来说,没有什么事情会比自己的代码,除了在自己的产品中使用之外,还可以在更多的产品、其他的业务去使用,更开心的事情了。因此微信做开源,其实是一个双赢的事情。一方面去提升了微信的技术影响力,另一方面对于程序员个人来说,他也可以持之以恒地在一件事情上不断的积累、深化。

这里,我们就引申出了另外一个内容,开放的人才观。试想一下,团队中离开的同事,如果他在离开团队之后,继续在你的开源项目中去贡献你的代码,去和原来的团队成员一起合作,这是一件多么美妙的事情。通过开源,我们是可以实现这一点的。

6. 微信Tinker在开源推广方面有什么秘诀?

Shwen:以Tinker 来说,我们是在MDCC中国移动者开发大会上面,直接点公开这一步,也就是说我们在会场,对着几百人、上千人,直接把它变成公有库,现场是比较激动的。

推广有这几部分,第一部分是文章,Tinker从6月份准备开源到9月份正式开源,在这个过程里面,我们已经有了大概3、4篇的原理介绍文章来铺垫,让大家比较期待这个产品。

然后我们微信也有自己的公众号,是WeMobileDev,现在它也是业内一个比较知名的公众号,在移动终端这一块,也有几万人关注。在我们做这个公众号的过程中,认识了其它的公众号的人,像我们Tinker开源的文章,有很多公众号帮我们转发,例如InfoQ等。 所以说它能在一周的时间内获得这么多star,也是有一些宣传的原因在里面。

现在在多媒体时代推广渠道可能会很多,例如参加一些访谈、直播,现在比较多的是一些移动开发者、或者各个层面的大会,像InfoQ、csdn,他们都会定期举办一些比较著名的会议,出席这些会议,也是宣传自己的产品的好渠道。

作为程序员,特别是腾讯的程序员,是比较少走出去的、很低调。我希望腾讯的员工很多时候可以走出去,show一下我们的技术、我们的实力,让更多的人知道,腾讯的技术也是很好的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯开源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档