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

前不久,微信开源了其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一下我们的技术、我们的实力,让更多的人知道,腾讯的技术也是很好的。

原文发布于微信公众号 - 腾讯开源(tencentopen)

原文发表时间:2016-11-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

部署IaaS要考虑SaaS

在部署IaaS之前,请首先考虑SaaS的选项,因为它可以为你的IT团队产生更大的回报。 亚马逊网络服务和基础架构即服务(IaaS)可能是市场上最引人注目的服务,...

44880
来自专栏Java架构

离职总结:大公司与小公司的个人体验

25850
来自专栏web前端教室

前端开发 和 前端开发工程师的区别

前端行业其实很少人去深究前端开发工程师中的“工程师”这三个字,究竟是什么意思。其实在我看来,许多所谓的前端开发工程师只是做前端开发的工作而已,远配不上工程师这三...

240100
来自专栏机器人网

Windows 10会成为机器人的下一个系统吗?

微软曾多次表示,Windows 10可以在PC、平板电脑和手机上运行。现在,微软希望使Windows能在其他所有可以上网的设备上运行。微软当地时间周一公布了W...

26960
来自专栏互联网数据官iCDO

什么是OTT广告?它又是如何工作的呢?

有线电视正在衰落,在便利性和覆盖范围方面严重输给了流媒体。2016年第三季度OTT(over-the-top)设备的视频广告观看量同比增长63%,预计这一趋势将...

58740
来自专栏SDNLAB

ONAP发布Beijing版本,为网络自动化和编排提供最佳平台

开放网络自动化平台(ONAP)项目致力于为端到端闭环网络自动化提供统一平台,今天发布了第二个版本“Beijing”。Beijing版本降低了网络运营商部署ONA...

18720
来自专栏云计算D1net

工作负载不要全部放在公共云的篮子中

有些东西并不属于公共场合,与此类似,公共云可能不总是适合所有工作负载。 ? 这个声明从来没有像最近两次非常公开的云中断那样更加相关。亚马逊和微软公司对此都必须迅...

44780
来自专栏云计算D1net

云平台将承载一切? 听28位技术高手如何预测云应用未来

我们与28位分别来自23家企业的高管人员进行了交流,希望了解这些负责立足于云环境进行应用程序开发与部署的技术领导者如何看待相关议题。 ? 而在被问及“云应用的未...

372130
来自专栏ThoughtWorks

DevOps发展的9个趋势|洞见

DevOps包含了太多方面的技术和实践,很难通过一个统一的工具链来描述其发展。即便如此,我们仍然可以从ThoughtWorks技术雷达的条目变动中看出一些趋势。...

39340
来自专栏腾讯云服务器团队的专栏

腾讯云发布第三代云服务器矩阵,开放更强计算力赋能产业智能化

云计算正在经历全新的变革,在强大的计算力之上,业务场景正在驱动技术的创新与变革。9月25日,腾讯云正式发布第三代云服务器(CVM)矩阵,最新的计算、存储、网络和...

68950

扫码关注云+社区

领取腾讯云代金券