自从2015年11月阿里巴巴集团宣布正式加入Apache基金会以来,阿里技术已经向Apache捐赠了三个开源项目,分别是JStorm、RocketMQ和Weex。其中Weex于2016年12月15日正式捐赠给Apache基金会。而RocektMQ有望成为首个来自中国的Apache互联网中间件顶级子项目,Weex则有望成为来自中国的移动开发顶级子项目。
截止到2016年9月,阿里已经开源115个项目,加入了FSF基金会、Apache基金会、Linux 基金会和Xen顾问团队。阿里云还是MySQL开源分支 WebScaleSQL 的第五位发起成员,该分支是由 Facebook、 Google、LinkedIn 和Twitter 四家互联网公司的数据库团队发起,是以适应互联网场景为目标的MySQL分支。
那么,阿里技术为什么要开源?为什么要向Apache捐赠开源项目?凭什么在实时计算、互联网中间件和移动开发等核心技术领域,参与到Apache这一全球开源技术社区的核心讨论中?
基于中国互联网场景
从最新捐赠的Weex说起。Weex是阿里自研的高性能跨平台移动开发框架,最大的特点是解决了频繁发版和多端研发两大痛点,一套Web代码就能适配iOS、Android、H5、Web等多端,极大解放开发者的同时又保证了用户体验。
阿里资深技术总监庄卓然(南天)介绍说,Weex是阿里在无线技术时代的三驾马车之一。阿里无线技术三驾马车分别是适于大规模开发的容器化架构Atlas、移动网络通信环境ACCS以及多端移动应用开发环境Weex。这是自2013年开始,阿里把移动和无线应用作为重点战略提上日程,庄卓然负责对集团的无线技术业务再造之后的主要成果。
阿里的手机版淘宝起步于2009年基于Web版的淘宝,2010年开始开发了第一代APP版的淘宝,从2010年到2013年可以说是淘宝的APP 1.0时代。这个阶段的APP版淘宝只是简单的电商工具,可以完成搜索、下单、查物流等工作,利用了手机和移动无线网线的便捷性,但没有天猫、聚划算、爱逛街、淘抢购等丰富的电商产品生态,也没有店铺。
阿里为什么要在2013年再造无线业务?庄卓然回忆,当时整个淘宝的业务都非常健壮,只是在移动的时代里,来自PC时代的阿里无论在产品的设计思路、运营思路,还是技术平台都出现了各种不适应,所以从2013年开始解决真正移动互联网时代的技术体系与技术架构。
以容器化架构为Atlas为例,2013年全年发布了42个手淘版本,2014年架构改造完成后发布了204个版本、2015年发了500个版本,500个版本相当于365天每天发布1.5个版本。这就是快速开发迭代的能力,让阿里技术团队有一个想法就能快速上线、快速反馈和更改。
Weex是解决在iOS、安卓和本地等多个终端开发的效率问题。这个项目在2015年双11前几周提出,由于当时只有几周的时间解决这个问题,因为项目被命名为Weex(Weeks的谐音)。Weex从去年双11开始使用,如今整个阿里系移动端里涉及到HTML5的开发,包括很多都是本地的开发都采用了Weex。
Weex目前已经在手机淘宝、天猫等多个阿里APP中投入使用,并在大规模复杂应用场景下经历了全面的锤炼打磨。在刚刚过去的2016双11中,近2000个页面采用Weex渲染,会场覆盖率高达99.6%,主会场秒开率高达97%,性能和稳定性均表现优异。
再反过头来看JStorm和RocketMQ。JStorm是阿里开源的实时计算系统,它使用Java语言代替Clojure语言重写了Apache Storm。经过4年发展,阿里JStorm集群已经成为世界上最大的集群之一,基于JStorm的应用数量超过1000个,JStorm集群每天处理的消息数量达到1.5PB。RocketMQ则是阿里在2012年开源的第三代分布式消息中间件,历年双11都承担了生产系统百分之百的消息流转,2016年双十一当天更是达到万亿级消息量、峰值达几千万TPS,创造了国内乃至世界上最大的消息流转记录。
所以,JStorm、RocketMQ和Weex代表了阿里超过115个开源项目,均是来自于阿里多年来大规模互联网应用和移动互联网应用的技术沉淀。
登上世界技术的舞台
在阿里云栖社区的博客上,多位阿里技术负责人多次撰写博客,真实记录了这些阿里技术开源后,由“小家”而登堂入室成为国际“大家”的故事。
以最新开源的Weex为例,这个项目在开源之初也遭到了很多质疑,被认为是“KPI项目”,一旦项目完成了就丢给了Github社区,这就是所谓“弃坑”,即把源代码丢到 Github 就没事了,而且业界很多开源项目都是这样的结局。然而,这不是阿里的态度。“最好的solution 是讨论出来的”,Weex项目技术负责人、阿里巴巴高级技术专家赵锦江(勾股)在博客里引用了一句同行的话,“开源最大的意义在于找到志同道合的人做出更伟大的事情”。
“开发者提交的每一个 pull request、每一条 issue、甚至每一句评论和吐槽,也是在为项目做贡献。作为开源项目的参与者或作者,一定要在这方面有一个健康的心态,才能真正做出好的项目。” 2016年4月,阿里宣布Weex开源内测,短短两周就有超过5000名开发者申请。6月30日正式开源首日就登上Github趋势榜首位,截止11月底在Github上已经获得了超过9000个star和1000次fork数,成为中国今年在Github上最热门的开源项目。
然而,在Weex项目开源时,最早接触开发者的时候,团队对自己还是太过自信了。勾股回忆道:“心想我们一起研发并且准备了这么久,开发者过来看过一定觉得很厉害。没想到遇到了大家的各种挑战。而且被问到最多的问题是完全没有想到的:‘怎么让程序跑起来?’”然后就发现了一堆问题:比如 Windows 环境下的命令行问题、路径分隔符问题、Node 版本问题、npm/cocoapods 镜像的问题、NDK 的问题、x86 模拟器的问题等等……
“这里面有些是团队自己知道的,只是觉得太顺理成章了,没觉得应该写清楚,结果就让开发者们误解了;有些确实是自己的工作环境很单一,而社区里开发者们的工作环境是千差万别的;还有些是交代得不够清楚,明明知道也写了,但是没能让开发者很好的充分理解。”而经过了这个过程,Weex团队才发现:“原来 Landing Page、README和文档这么重要,这给了团队当头一棒,大家认为最简单的问题都折腾得很狼狈。”
所以在与世界讨论中国的互联网应用之前,开源之路首先让阿里的技术人培养了很好的由内而外的素养,这也是阿里技术能够登上世界舞台的最基础条件。除阿里移动技术力量外,社区贡献者也踊跃参与,包括著名前端框架Vue.js创始人在内的多位技术大牛已经开始参与Weex的改进;众安保险、苏宁、优酷、饿了么等企业用户也在积极的接入之中。阿里巴巴开源委员会负责人刘昕表示,“Apache严谨、开放的技术氛围会带给Weex项目更多的研发思路。”
另一位RocketMQ负责人、阿里中间件技术贡献者周新宇(尘央)也说道:“什么样的社区能让Alibaba的产品走上更健康的道路呢,思考来思考去,还真只有Apache。相信在Apache这个平台上,没有人会去偷懒,没有会想着走捷径。”RocketMQ开源至今,国内拥有超大规模的活跃交流群,ISSUE上更是收录了来自全球数百个高质量的话题交流以及问题沉淀。在2015年中日韩开源论坛上,RocketMQ获得CJK OSS大奖,2016年早些时候又进入欧美主流开源门户网站awesome-java视野,带有中国标签的消息中间件正式走出国门。
“Apache优秀的社区理念会驱动着更多立志打造世界级品牌的团队不断发展,促进其生态更加健康和活跃”,阿里中间件团队负责人蒋江伟(小邪)如是说。
反哺世界技术社区
随着阿里技术的开源以及进入Apache顶级子项目,基于中国互联网场景孵化出来的技术,开始反哺世界技术社区。
“阿里巴巴捐献JStorm给Apache,意味着Apache Storm下一个重大版本会基于JStorm的Java内核进行改造。阿里巴巴的这一举措也将带动更多的开发者致力于Storm的开发,加速Storm革新。” 阿里巴巴共享事业部高级技术专家封仲淹表示。
据封仲淹介绍,在最近两年内JStorm增加了Backpressure、Dynamic HighLevel Batch、Stable Nimbus HA、CGroup Module、Classloader、TopologyMaster等大量新的功能;在性能上,任何场景下JStorm运行速度都比Storm快平均20%。
而RocketMQ捐赠给Apache后成为Apache 孵化项目,孵化成功后RocketMQ有望成为全球分布式消息引擎家族中继ActiveMQ、Kafka之后的新成员。这也意味着以MQ(消息队列)为代表的互联网中间件在新兴物联网、大数据领域会发挥着越来越大的作用。如今,RocketMQ 已经被1000多家公司使用。
除了轻量、高性能、可扩展、一次撰写多端运行等诸多优势,Weex还提供了强大的调试工具协助开发者排查问题。阿里巴巴资深技术专家,Weex负责人吴志华表示:“我们希望将Weex做成移动开发交付的统一技术标准,正如PC时代从桌面软件过渡到Web一样,Weex希望通过自己的努力为移动时代的技术进步做出贡献。”
众安保险技术总监陈天予反馈说:“Weex不仅应用灵活、性能强大,而且能让前端开发者最大程度复用现有技术积累,帮助我们用最少成本设计全新的跨平台架构体系,并尽快进入实施阶段。”
至于阿里一开始为什么会想到走开源之路。蒋江伟表示在阿里建立之初,正是基于开源软件,将整个电商平台的原型快速搭建起来的,这么多年过去了,虽然阿里的基础平台还在不断演进,但仍旧有开源软件的身影。因此,阿里推进开源技术和自有技术的开源,也是回馈全球技术社区。
当然,开源和商业的协同效应,如何发挥到极致?这是一个世界性难题。“以开源为核,商业为辅的形式,是我们目前得出的一个比较靠谱的可行之路。” 蒋江伟说。