从 2015 年双十一首秀到 2016 年 6月 30日Weex 正式开源,再到今年完成所有双十一活动页面,Weex 在这半年左右的开源之路上,各方面有什么样的提升,未来发展规划如何?维护 Weex 开源中遇到什么样的挑战? 怎么看待阿里宣布 Weex 捐赠给 Apache 基金会后各种争议和讨论。本期,【开源访谈】邀请到了 Weex 负责人勾股和大家分享 Weex 的开源之路以及他对开源的见解。
【本期嘉宾】
赵锦江,花名“勾股”,阿里巴巴前端工程师,关注前端、移动技术和 Web 标准的发展。2015 年参与设计并研发了早期的移动端动态化技术方案 Weex,并于同年天猫“双十一”购物狂欢节完成了 Weex 的首秀,历史上第一次把 native 级别的体验和稳定性带到了天猫“双十一”的移动会场。今年在全力推动 Weex 的开源社区工作。
【访谈实录】
1)能否先介绍您自己和您的职业经历?
大家好,我叫赵锦江,花名勾股。好巧,到今天刚好工作十年。一开始在浏览器公司傲游 (Maxthon) 工作,主要负责前端开发,还有Web 标准,W3C 相关的一些工作和活动。然后到了阿里,现在负责手机淘宝前端框架团队及开发工作,Weex 项目是我所在团队很重要的一项工作内容。
个人兴趣方面,我加入了 W3C HTML 中文兴趣组,是组织的 Co-Chair ,主要是帮助社区发起一些 Web 标准相关的讨论。
2)简单介绍一下 Weex 项目的发展历程
从时间跨度上来说,在有 Weex 这个名字之前,我们已经有一个项目在做。
当时我们在更新一款应用的时候,需要把代码写好,上传到手机应用商店,审核、分发,推送给用户安装到手机上,耗费的时间很长,而且用户不一定会更新。举个例子,淘宝商家要搞一个营销活动,要新品上架、就得装修店铺,这些数据不停地更新,我们显然不能因为一个商家的数据变化就去发布一个新的版本。
那么,怎么样才能不发布版本又能解决移动应用动态性的问题呢?
记得 2013 年底我刚加入阿里的时候,阿里发起了一个“All in 无线”的移动战略。当时就做了很多针对移动应用开发,需要做好的技术准备工作。怎么体现移动应用的动态性,一直是一个很重要的问题。这也是 Weex 一路走来一直在解决的问题。
3)能否概括一下 Weex 的核心特点?哪些应用场景适合 Weex ?
(一)核心特点包括一下三个方面:
第一,Weex 是开发移动应用的动态化技术方案,协助开发者做好移动应用。
第二,从开发层面来说,摒弃了传统 native 开发相对笨重或者保守的方式,引进前端比较友好、高效、灵活的开发方式,让开发变得更轻便敏捷,与移动互联网发展速度相对应。
第三,从具体效果层面来说,我们希望开发出来的移动应用能根据不同的操作系统,不同的手机,将平台的特性和性能发挥到极致。
再有就是 Weex 具有很强的横向可扩展性,这样就会有很大的平台和空间去发挥。
最后在移动领域,希望有一些技术生态,一些新的研发模式出来。
(二)应用场景的话,前面提到的店铺装修就是非常典型的应用场景。还有一点,也许你只需要开发一个足够好,不用频繁、定期更新的移动应用,比如提升效率的事务管理软件(俗称 todo-list )。但如今互联网的趋势,大部分应用都是小步快跑。开发出一个应用,收集反馈,然后二次开发,将产品变得更好。那么在把产品做好的基础上,如何加速这个应用小步快跑的周期,让你在前进过程中速度领先于人。这也是 Weex 希望帮助移动开发者解决快速迭代,提升效率,将所有过程顺畅的串联起来。
4)为何想要把 Weex 开源呢?
我个人始终相信一句话:好的想法永远是讨论出来的。闭门造东西、在开源社区与大家交流探讨,我更趋向于后者。后者可以集合更多人的想法、意见,将产品做的更好。
从行业和公司层面,我们希望移动应用、移动开发领域可以变得更好,这对于我们以及整个行业都是有益的。
5)能否介绍一下 Weex 在研发过程的重要阶段?
第一,2015 年 “ 双十一” 是一个比较重要的阶段。那是 Weex 的首秀,第一次在正式业务上亮相。那时的主会场和分会场的入口列表页都是由 Weex 实现的。为了第一场秀,前期我们团队做了很多准备,最后攻克了很多的技术难关。
前期团队针对这个东西做了很多准备,会遇到各种问题:(1)流量大,位置很关键,如何保证稳定性;(2)如何在一个页面(主会场)展现足够多的东西的同时,低端用户手机也能正常运行;(3)活动当天,能否快速地响应突发问题。
因此,性能、稳定性、灵活度这三个因素,是 Weex 在 “双十一” 的一个极限挑战,很幸运,我们去年做到了。
第二,今年 6月30日 Weex 正式开源,是整个项目的里程碑的节点。在经过首秀后,我们觉得Weex 有一个比较好的基础,有了把它开源的想法。于是在 今年 4月份,我们宣布了 Weex 开源的具体计划,先邀请一部分人来体验和使用。到6月30日,Weex 正式开源。
第三,今年 “ 双十一 ” 也是非常重要的时间节点。相比去年 “ 双十一 ”,第一今年所有的活动页面都是由 Weex 完成的,支撑的范围更广了。另外一点就是基于 Weex 的多个页面被频繁地访问,页面之间来回跳转、切换的关系如何处理,稳定性、性能、灵活度要求更高。所以,今年我们解决的是大规模并行团队研发的一个工程保障的问题。而我们也都顺利完成了这个挑战,所以说,Weex 从工程上、质量上又往前迈进了一步。
6)12月15日阿里宣布Weex 项目捐赠给 Apache 基金会,这件事情网上有很多争议和讨论,您怎么看这些争议和讨论?
请允许我做个小科普,目前我们捐赠给 Apache 基金会这件事所处的状态是,Weex 正式进入了 Apache 的项目孵化阶段,在这个阶段,我们所有的开源工作都要在 Apache 的基础设施和行为要求下进行,包括怎么讨论问题,怎么提交代码,怎么投票,怎么写邮件之类的,而且有 Apache 内部资深的成员进行指导,实际上是给 Weex 拿来了一把更高水准的尺子来衡量和要求我们自己。我们必须持续投入,并且严格要求自己,同时要让技术社区足够活跃,才能够在 Apache 孵化成功,变成一个真正世界级的开源项目。所以捐赠 Apache 基金会正式反应了我们做好 Weex 的决心和信心。
另外一方面,Weex 不希望大家觉得阿里缺乏长期投入的热情和意愿,更不希望大家觉得这是只有阿里在背后控制的一项技术。这两件事情其实是互相矛盾的。我们多做一点少做一点都会被质疑。所以这件事在我看来很简单,第一,做好自己,第二,捐赠给 Apache 基金会,认真对待整个项目的孵化过程,对这两件事情都有帮助。剩下的交给时间去回答,我们相信国内开源社区的同学们都是明眼人,最终都能看明白。
7)能否谈谈 Weex 的开发现状和未来的计划?
(一)开发现状:
(1)Weex 在大规模研发支撑上、性能稳定性、灵活性上有了更长久的进步。
(2)Weex 以开源状态运行了半年多,接受开源社区的洗礼,从中收到不少的反馈,使项目整体的健壮度,大家对项目的认识与接受程度,比之前都有了非常好的改善。
同时,通过开源,也让我们了解到大环境下,移动端领域面临什么样的挑战,比如那些技术方案的不足,哪些问题没有想明白等。
(二)未来规划:
(1)坚持开源。
(2)希望可以解决更广泛、复杂的交互问题。双十一、双十二、逢年过节的营销活动,从技术角度来说都是相似的。那么,从移动开发角度,社区里这么多的移动应用,这么多开发者,每个人面对的问题不同。那么 Weex 能不能逐步去帮助解决各个具体领域的具体问题呢?广度上能不能覆盖到更多的业务场景呢,包括很多中小型企业及个人开发者的场景,这是我们接下来想要重点发展的方向。
(3)我们的核心技术方案经过这段时间的沉淀,长期的思考、摸索,现在逐渐成型了。接下来再往上层走,比如说开发者社区需要的上层的资源,相关的工具、相关的服务,能不能够配套起来,这个也是接下来我们的工作重点。
8)平时您是如何维护和推动 Weex 开源社区工作的,在这过程中有什么想要分享的吗?
开源,其实是一个开源社区,它不纯粹是做技术的事情。经营开源项目,其实就是一个社会行为,这是很重要的一点。
如何与陌生人打交道?有人比较 nice ,有人会提尖锐的问题,有人很不礼貌,有伸手党拿了就走;也有人真心诚意与你交流,认可你,与你一起做更多的事情。这些在现实生活中会遇到的问题,在开源社区里同样会遇到,在这里,你以一个工程师的身份,以代码或者技术为载体在社交。
因此,我觉得你在现实生活中如何做人,如何与人相处,应该用同样的态度去做开源软件,经营开源社区。我个人非常真诚地对待开源社区里的每一个开发者,每一个意见。我觉得这才是跟别人交流、沟通的基础,并且是毫无保留的。我们在技术上、对开发者的服务上是毫无保留的。
在开源社区里遇到尖锐、攻击性性强,比较难处理的问题时,首先作为项目的维护者或参与者,我会做一个好的聆听者,不管善意与否,听取对方对项目的意见,然后严肃、客观地思考这个问题。
然后就是你要用真心诚意去对待社区里每一个开发者,让对方能够认同你。
最后,如果大家的立场、解决问题的思路与方法不同而产生分歧,我会把我的思路、态度表达清楚,避免彼此之间的误会。
现在我们也在努力将我们对 Weex 的一些想法做的更透明,也可以跟开发者做更多交流的机会。包括几次参加开源中国的活动。
9)能否谈谈您对开源的理解以及国内开源技术和产品的看法?
(1)开源与开源社区是紧密结合的。开源好玩、有魅力的地方在于在没有任何强制力的情况下,大家在一起能不能做好一件事?
很多时候,看起来好像无法做成的事情,在开源社区里都都做成了。因此,开源社区让大家相信除了强制性和执行力可以做好一件事外,人的想法在更自由、更友好的空间里也能爆发出巨大的能量,得到最充分的展示和发挥。我觉得这是开源给我们的环境和机会。
(2)开源是不分国界的。在国内,可能是由于语言的关系,或者说我们跟世界对话,也是有一个逐步拉近距离或者增强的过程——相对来讲。目前我感觉国内的开源在国际上或者在一个更大的舞台上交流、融合、促进、讨论,这样的场景越来越多。
开源中国可能将来会变成开源世界。
我们做很多开源项目,早期是和国内开发者做交流,用母语交流,解决我们自己才会遇到的问题。那开源继续往前发展需要做好一个准备,有没有那么一天,大家在一个更大的舞台上讨论共同面对的问题,做一个大家都满意的项目。用全世界通用的方式,促进彼此交流。
我觉得目前国内与国际上主流的开源形态还是有差距,但我看到这个差距在缩短。大家也逐渐 open mind 了,愿意在更大的舞台上交流自己的想法。