在持续的产品开放之外,微信团队这次开放到了代码。
12月28日,在广州举行的微信公开课PRO版,微信团队现场宣布移动客户端开发跨平台网络组件Mars 正式开源。并首次阐述了微信终端开源的理念,解释如何将技术开发思想、经验、工具、代码组件也开放给外部开发者。
授人以鱼不如授人以渔
古话说得好,授人以鱼不如授人以渔。微信在产品层面开放平台、接口的同时,也在思考如何把有价值的技术思想和工具、组件传递给大家。我们试着为自己提出了一个小目标——让天下没有难写的APP。
这句话很短,但想实现并没有那么容易。微信团队先后建立了微信公众号发文章,组织交流分享,但工程师间最好的交流方法是写代码,最后一个很重要的环节就是技术开源。
“微信的技术经过海量用户和复杂网络环境的检验,踩过了无数的坑,积累了大量实践经验。很少有开发者有机会和条件自己去踩一遍所有这些坑,我们通过开源项目的方式,把经验传递给他们。”——微信公开课讲师赵原。
微信终端开源的四大原则
什么样的开源有价值?代码写的工整、可读性高,只是表层要求。微信终端开发团队认为,微信开源的高标准和严要求体现在四个方面:
第一价值,所有微信开源的技术内容都是源自微信实际的业务,且通过微信实际应用验证过,保证开源的内容有价值;
第二优势,微信最大的优势是拥有海量的用户。意味着在移动开发领域,微信团队可以在很多别的开发者,根本没有发现或者遇到复杂问题之前,率先解决掉麻烦;
第三活力,微信终端开源的组件跟随微信迭代而迭代,不断更新和完善;
第四易用,微信开源出去的技术项目会提供最简单的接入方法,其他开发者可以轻易的将微信开源的项目引入到自己的APP中,将微信的能力运用在自己的APP上。
微信终端首批开源项目包括三个:Tinker热补丁技术、MMDB 移动数据库及Mars跨平台网络组件。其中Tinker已在9月份开源。
活力——一个不得不提的尖锐问题
很多情况下,一个内部项目的开源,即意味着这个项目的结束。但一个优秀的开源项目则要持续投入才会有活力。
这个问题,微信团队也有过很简单、很暴力的想法,比如说团队10个人,这10个人专职做功能开发,再招10个员工投入在开源项目上。但微信讲究精兵策略,不浪费一兵一卒,此法行不通。
为了解决这个问题,微信终端团队在开发Tinker项目之前,大概用了快一年的时间解决,解决方案也很简单。简而言之,将开发团队改造成一个开源化的开发模式。微信终端团队通过对内部系统的改造,使内外部的开发模式保持基本一致,一份代码既可以在微信中使用,也可以在外部的开发者中使用,这样的开源项目我们其实就不需要投入额外的人力在里面。
同时,微信团队也收获了很多价值,外部的开发者还可以给微信团队反馈一些微信自己没有发现的问题,对于微信来说这是一个很好的优化与改进的反馈渠道。最重要的一点,做开源化的改造,使得微信开发团队可以接触外部的开发技术,然后与自己的思想相融合,呈现出更加优秀的组件,通过这个过程,将微信团队的学习能力做了最大化的提升。
现场回顾
在12月28日微信公开课PRO版现场,微信终端团队现场宣布Mars跨平台网络组件开源。并在现场构建了一个使用Mars的demo应用。
在 IM 方面,弱网络一直是应用开发者面前的一大问题,Mars 团队成员基于微信业务需求,进行了大量的优化工作。在微信最新的Android6.3.32版本里,已经使用了Mars组件代码。项目团队会在外部开发者反馈的问题中不断对Mars进行优化升级。
(想了解更多Mars资讯的开发者可以访问https://github.com/Tencent/mars)
回到开源话题上来,开源不仅是一种态度,更是一种能力,微信团队希望通过微信的开源做一些改变,同时希望通过微信的开源打通微信终端内部的团队,和外部社区结合在一起,一方面微信团队把微信的思想传递给了大家,另一方面也想把大家的思想传递进来。
一切正在发生,一切刚刚开始。
扫码了解更多微信终端开发经验