|
|
51CTO旗下网站
|
|
移动端

手淘天施:我眼中的Weex和Weex开源那些事

今天手淘宣布将Weex开源项目捐赠给Apache基金会开始孵化,这是阿里在JStorm、RocketMQ之后的第三个阿里Apache基金会开源项目。本文还讲到了Weex开源的准备过程和如何进入Apache基金会,相信可以给准备将公司技术开源的人们一些帮助。

作者:天施来源:移动开发前线|2016-12-20 14:46

版权声明

作者:吴志华(花名:天施),阿里资深无线技术专家,淘宝移动平台基础平台部负责人,Weex项目负责人

本文为手淘技术团队投稿。

今天手淘宣布将Weex开源项目捐赠给Apache基金会开始孵化,这是阿里在JStorm、RocketMQ之后的第三个阿里Apache基金会开源项目。

Apache基金会有着非常严格的准入机制,这次Weex加入表明它得到了国际上的认可,我们也非常希望看到中国的移动开源项目能够在国际上获得成功。

在今年6月份的GMTC大会的时候我和手淘同学聊到,Weex的开发完全基于Github,在本文里天施老师真诚的分享了更多Weex背后的故事,我想,正是这样的真诚和开放,是Weex成功的关键。

本文还讲到了Weex开源的准备过程和如何进入Apache基金会,相信可以给准备将公司技术开源的人们一些帮助。

(2016年6月30日,Weex项目开源,团队合影留念)

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

Weex开源的幕后

准备演讲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作者尤雨溪的合作

开源路上还值得一提的是引入VueJS作者尤雨溪作为Weex顾问的故事。

其实勾股跟小右接触很久,谈了接近小半年,在小右进来的工作形式和职责上一直有一些小纠结。主要在集团层面过去也没有可参考的例子,要说服方方面面要做不少努力,同时也要兼顾尤小右的感受。

我个人的原则是“尽最大可能尊重小右,最终在工作形式上也大胆决定让小右全部面向开源社区工作,一切的交付和合作在社区进行”。我们做的是开源的事情,也希望小右的工作成果在社区体现,服务于热爱Weex和Vue的社区开发者。这样原则一确定,合作形式就清晰简单,彼此合作起来也会少了不必要的束缚和压力。

不过这个事情的促成其实还是要感谢我的Boss南天,让我们在这个事情上自由折腾去尝试一些创新的想法,也真心期待Weex和Vue的合作真正不负社区的厚望。

9月3号南京JSConf上尤雨溪正式宣布“作为技术顾问加入Weex团队,推进Weex和Vue在前端框架和社区融合”,社区反馈几乎全是正面评价。那天我跟勾股说了一句话:“小右这个点上加入是最合适的时间点,过早过晚都不是好的时机。”

推动Weex加入Apache社区

然后回到文章一开始提到的云栖开源峰会。在开源峰会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。

对Weex的思考

在开源峰会的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技术委员会的成立,致力于推动标准化、规范化在项目落地。

Weex的双十一大考

进入8月底,阿里双十一的压力扑面而来。Weex代替H5成为双十一终端基础渲染解决方案,是Weex团队的唯一且最重要的任务。

如何力保双十一Weex的稳定性和性能、满足业务的需求、打通研发生产监控的全链路、保证业务代码落地最佳实践和性能达标、大量不断推敲的降级方案和反复演练,鬼道、勾股带领团队,跟双十一会场团队一起,在联合项目室一扎就是2个多月。压力很大,没有退路,唯有不断往前,一旦双十一Weex被降级,近百人的努力将全部白费。

非常幸运,加上我们也足够努力,很庆幸Weex扛住了双十一这次大考的磨砺,交出一份不错的答卷:Weex在双11会场中的覆盖率接近99%,页面数量接近2000,覆盖了包括主会场、分会场、分分会场、人群会场在内几乎所有的双11会场业务。双十一主会场秒开率97%,全部会场页面达到93%。

奇妙的事情也在这个期间发生,有时候当你努力到一定程度的时候,奇迹也会悄然降临。

如愿以偿,进入Apache基金会

前面提到,我们从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。一切看起来像是一个轮回,技术总是曲折往前但不会简单重复。

【编辑推荐】

  1. 向日葵创新技术:远程控制Android系统 引领远控界再进化
  2. Android安全之Intent Scheme Url攻击
  3. Android Wear 2.0预览版:新增单点登陆功能
  4. Gradle实现Android多渠道定制化打包
  5. Android内存泄漏产生的6大原因
【责任编辑:枯木 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Expert C# 2005 Business Objects中文版

本书描述了怎样应用面向对象的概念来进行.NET应用程序的架构、设计和开发。作者将重点放在了面向业务的对象,即业务对象和怎样在包括Web和...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊