Weex团队负责人:我眼中的Weex和Weex开源那些事

12月15日,阿里巴巴宣布将移动开源项目Weex捐赠给Apache基金会开始孵化,Weex有望成为中国移动领域的首个Apache*项目,这意味着中国移动技术开始反哺世界。据悉,这也是继JStorm、RocketMQ之后,阿里向Apache捐赠的第三个项目。


更多内容,可了解:https://yq.aliyun.com/articles/66576


下面是Weex团队负责人关于Weex和Weex开源的一些看法和观点。




10月底云栖大会开源专场阿里云唐容邀请我过去做Weex开源为主题的演讲。看了下speaker列表:第一位docker的John Willis(知名Devops专家),第二位是我,第三位MySQL之父Michael Widenius(MySQL第一行代码的作者),第四位阿里云褚霸大神,感谢阿里云认同之外更多是压力山大,一是担心自己在前辈大神和业界同仁面前妄言二是真心希望给业界讲点什么,哪怕让大家记住一两句话也行。


准备演讲PPT过程更是一个持续总结和自我修炼的过程。回到一年前我们讨论Weex是否开源的时候,有追技术热点、开源赶时髦的想法,但内心坚信的一点是我们认为Weex可能是在移动技术这块唯一做技术生态的机会。与此同时针对“Weex是什么、要什么”也展开了大量讨论,Weex不是RN、三端一致、Vue,这些点都很重要但不一定是最本质的理解。


整个项目开源准备从春节开始一直到4月,大量幕后工作(代码去内部逻辑、代码仓库迁移github、文档、demo、官网)。中间也一直跟业界交流,一直被追问我们对Weex的理解和开源项目维护问题。记得有次Geekbang的selina过来一次合作交流,被问到Weex相关问题我当时一个观点是“在移动时代没有找到一个比HTML/CSS/JS更合适描述界面和表达业务的方式,当前智能手机GUI体系只是对HTML拙劣的逼近和模仿。Weex/RN从某种意义上是必然的产物”。


坦言当时Weex开源还是处在巨大的争议中:一个是我们秉承的三端一致到底是为了差异而差异,还是我们有自己的思考和坚定信念,业界对于我们能做到三端一致也是持怀疑态度,二是阿里过去开源积累的负面印象给这个项目开源带来不少挑战。这些摆在面前的困难和挑战,促使我们不断思考Weex的开源之路怎么走,我们的信心和勇气也处于煎熬之中。


时间一天天逼近,各项准备工作逐渐交付,离我们既定4月21日QCon宣布开源内测越来越近了。对于Weex开源内测能够达到的效果也放在了桌上讨论,到底Weex开源能够吸引多少人?到底是要做内测还是公测、内测说法是否合适?内部争议不断,技术团队的谦虚和不自信的秉性也对合作的市场运营团队造成了困扰。整个事情的不确定性很大,但既定的目标还是要持续往前滚动,该决策的要决策,该执行的要执行。


作为团队负责人我在这个时候压力不小,一直担心Weex开源这一枪打出去就哑掉了后续就无从谈起。3月19号周末在家,压力之下突发奇想--"我们应该立即在集团内部做个开源内测,看看集团内部开发者的反响"。一想到就说做就做,在内网让团队立即写了篇集团内开源内测的号召文章让集团技术发展部推广了下。结果这样一个形式粗糙简陋的活动形式收到的效果出乎我们的意料,集团不少同学给我们贡献了一些有意思的demo和组件,正是这些最早一批的社区贡献给了我们坚持下去的信心和鼓励。然后就是4月21号QCon开源内测的故事:从4月20号晚上团队赶Weex官网发布折腾到凌晨4点,再到QCon当天南天的keynote演讲非常成功爆棚当场引起业界强烈反响-让业界看到了我们对移动技术方向的深刻理解,紧随其后的是海量开发者申请邮件源源不断进来,Weex开源之路就此启动。


事后来看开源内测帮助Weex在可控范围内逐步提升开发者体验起了非常关键性作用,让我们有机会去不断自我修正,避免大量开发者涌入因为项目本身不成熟导致失控。当我们冲出去开源才知道Weex各种工具在开发者环境下的大量问题、开发者对调试工具的强烈诉求、文档的问题。大量输入也使得Weex项目变得更加完善、健全、更加有人情味。在开源内测2个月,我们满腔热血和激情服务了大量开发者,解决了不少问题,也让社区看到了我们的决心,一些热心的开发者也开始帮忙自发建立Weex Help论坛、QQ群,Weex的社区的雏形就此形成。


到后来就是6月底的正式开源,团队一边兼顾业务落地的压力一边要兑现在QCon上的承诺--“6月底Weex正式开源”,其实是蛮不容易的。开源当天我们做了个小庆祝仪式,这个也是后来大家在微博上看到团队对外第一次整体亮相--“小伙伴们以满满的热情和仪式感表达对Weex开源的热爱和执着”。


开源路上还值得一提的是引入VueJS作者尤雨溪作为Weex顾问的故事。其实勾股跟小右接触很久谈了接近小半年,在小右进来的工作形式和职责上一直有一些小纠结。主要在集团层面过去也没有可参考的例子,要说服老板、HRG、公司方方面面要做不少努力,同时也要兼顾尤小右的感受。我个人的原则是“尽最大可能尊重小右,最终在工作形式上也大胆决定让小右全部面向开源社区工作,一切的交付和合作在社区进行”。我们做的是开源的事情,也希望小右的工作成果在社区体现,服务于热爱Weex和Vue的社区开发者。这样原则一确定,合作形式就清晰简单,彼此合作起来也会少了不必要的束缚和压力。


不过这个事情的促成其实还是要感谢我的Boss南天,让我们在这个事情上*折腾去尝试一些创新的想法,也真心期待Weex和Vue的合作真正不负社区的厚望。9月3号南京JSConf上尤雨溪正式宣布“作为技术顾问加入Weex团队,推进Weex和Vue在前端框架和社区融合”,社区反馈几乎全是正面评价。那天我跟勾股说了一句话--“小右这个点上加入是最合适的时间点,过早过晚都不是好的时机。”


然后回到文章一开始提到的云栖开源峰会。在开源峰会10月份之前团队受邀在业界做了不少分享,中间收到社区开发者的反馈--“一些业界公司担心这个项目过于阿里化停掉了正在调研接入Weex的尝试”。这个促使我们思考怎么让这个项目变得更加中立,让更多的开发者可以参与进来一起贡献。团队讨论后觉得推动Weex去Apache社区可能是一条让业界放心的路。于是开始行动起来,最早找到集团JStrom的纪君祥,老纪很热心也一直认为Weex这样的项目应该构建更广泛的影响力,我们在理念和方向上一拍即合开始准备起来。


老纪在Weex进Apache孵化器之路做了大量工作,上周还在给Weex团队介绍Apache社区的工作流程。通过老纪我们也接触到Apache Kylin的Luke老师,正好QCon上海Luke老师有演讲,我们跑过去跟Luke老师当面交流。一个多小时交流过程Luke老师给我们讲解了Apache社区秉承的理念规则和Apache Kylin的The Apache Way,也让我们领略到真正热爱开源技术人的风采。最终我们邀请到Luke老师和另外一位老师作为Weex项目的mentor,但是项目的Champion还空缺。所以这次云栖大会开源峰会我有两个任务:一是将Weex我们一直坚持的理念讲给大家;二是寻找Champion。


在开源峰会的PPT准备中,我一直在思考要给业界讲点什么,脑海中全是这半年Weex在集团的落地之路(团队诸多艰辛和永不停歇的性能稳定性之路)、这半年开源之路的点点滴滴。Weex是什么?我们到底要坚持什么?我们花费这么大力气做Weex开源是为了什么?这三个Why我们一直反复思考也必须回答,坦言想了很久PPT也改了很多遍,想了这十年移动互联网技术变迁的事情,也想了过去自身诸多技术经历,想了手淘从2009年到现在的技术架构演进之路--“从Native到H5,中间经历WebApp/鸟巢不断尝试,再到RN/WVC/Weex的殊途同归”。10月13号晚上,我写下一段话“Weex希望把Web统一的技术标准和开放*分享的精神带到移动互联网业务交付中来”,这是我们所认定的路。


10.14号下午演讲完出乎意料,本来觉得这个场子很多奔着Docker和MYSQL两位大神来的,结果关注Weex关注开源的朋友不少,演讲完提问的朋友不少。还记得有人提了微信小程序跟Weex的问题,我的理解这完全两个层面的事情:“小程序更多是封闭的商业生态。Weex更愿意做移动互联网业务交付的统一技术标准,希望一直坚持开源、中立,大家喜欢拿去用就好不会有任何负担。至于未来我还是坚信移动互联网的技术一定会走向成熟统一,统一的技术标准可能会带来很多美好的东西,这个是技术人愿意相信也愿意去为之努力的事情”。演讲完走出来,身心有股沉甸甸的感觉,对于Weex实践标准化、三端一致有了更深的理解和发自内心的使命感--“每当我们在标准化多做一点点就能降低开发者很多成本”,回到团队第一时间找核心骨干沟通促成Weex技术委员会的成立,致力于推动标准化、规范化在项目落地。


进入8月底阿里双十一的压力扑面而来,Weex代替H5成为双十一终端基础渲染解决方案是Weex团队的唯一且最重要的任务。如何力保双十一Weex的稳定性和性能、满足业务的需求、打通研发生产监控的全链路、保证业务代码落地最佳实践和性能达标、大量不断推敲的降级方案和反复演练,鬼道、勾股带领团队跟双十一会场团队一起在联合项目室一扎就是2个多月。没有退路,唯有不断往前,一旦双十一Weex被降级近百人的努力将全部白费。非常幸运加上我们也足够努力,很庆幸Weex扛住了双十一这次大考的磨砺,交出一份不错的答卷—“Weex 在双11会场中的覆盖率接近99%,页面数量接近2000,覆盖了包括主会场、分会场、分分会场、人群会场在内几乎所有的双11会场业务。双十一主会场秒开率97%,全部会场页面达到93%”。


奇妙的事情也在这个期间发生,有时候当你努力到一定程度的时候,奇迹也会悄然降临。前面提到我们从8月开始Apache准备工作过程一直苦寻Champion而不得,JStrom的老纪10.11日帮忙在Apache社区发了封“Seek one Champion for incubating Weex project”的邮件,邮件石沉大海大家一度失望,中间我们还尝试给JS Foundation发邮件询问相应项目孵化流程也没有得到回复。直到11月3号奇迹悄然发生,Benjamin Young(Weex的Champion,W3C Invited Expert)给我们回复一封邮件提写到“Were you all able to find a Champion for the Incubator? I'd hate to see this great project miss out on benefiting from the Apache Way”。记得正好是周四晚上10点看到这封邮件,在家晚上忍不住兴奋给勾股电话告知这个好消息。天道酬勤,找到了Champion之后,接下来的Proposal提交、社区发起讨论和投票的过程都顺利的不可思议,最终我们很幸运得以入驻Apache孵化器( http://incubator.apache.org/projects/weex.html )。


我一直反复跟团队讲今天Weex在业界有一些技术影响力和社区关注,不是我们做的有多好相反很多事情我们做的也不好。只是很幸运或许是这个项目方向选对了,我们获得了集团和业界技术人的大量关注和支持,所以才有机会做好这第一步。回归初心,我们才刚刚开始。坚持标准的路不好走,希望业界有更多朋友一起同行,但我们坚信路走对了就不怕远。


回想起这十年,大量技术人在跨平台GUI、移动应用程序动态性上做的努力、完善移动浏览器技术再到HTML5标准、从非智能操作系统到WebOS再到iOS/Android系统上不断追逐界面UI绘制和业务表达效率的提升,再到今天的RN/Weex。一切看起来像是一个轮回,技术总是曲折往前但不会简单重复。

上一篇:JDK5.0垃圾收集优化之--Don't Pause


下一篇:HOTEL 旅馆