近日,在中国上海举行的中国开源峰会2019上,华为战略与产业发展副总裁肖然表示,华为方舟编译器将会在今年8月份正式开源。华为诚邀广大合作伙伴和应用开发者加入“方舟朋友圈”,一起打造终端生态的方舟,共建公平、公开、健康、共赢的全球生态。
方舟编译器,最近几个月始终地处科技界热词的顶端。
这来自于它本身的架构级优化,也来自于其在特殊时间背景下,与鸿蒙OS的关系。此外还有一点,就是自诞生之日起,方舟编译器就宣布将会开源。
对于中国软件开发者来说,开源是一个既熟悉又陌生的词汇。熟悉的是差不多人人都用GitHub,陌生的是似乎还没有移动端的中国底层软件技术走向过开源之路。
在不久前的华为开发者大会上,华为给出了鸿蒙OS及方舟编译器的开源时间表。而不到一个月,8月31日,华为方舟编译器开源官网正式上线,框架开源代码如约与广大关注方舟编译器的爱好者、开发者见面。
据悉,本次方舟编译器的开源版本,开放了编译器框架部分源码,包括编译器中间表达(IR)+语言编译实现,开发者可以通过官方网站及代码托管网站获得相关代码和文档,供参考学习、了解方舟编译器的架构和代码。
而向更广阔的未来看,这次开源不仅是一种技术的外放。基于方舟编译器,华为引领行业共同构建生态与社区,这是中国底层软件开源之路的探索。
“方舟”和“开源”,或许有理由把这两件事融合到一起来看。因为软件开源与社区建设,长时间以来都被认为是中国软件行业必须补完的关键环节。而方舟编译器的战略价值,恰好成为了一个契机与窗口。
开源是路,而方舟是匙。二者结合时,我们或许已经可以窥见中国移动产业与软件行业的生态未来。
五十年,软件开源史与产业洪流
想要明白方舟开源对行业的价值,必须先解释这样一个问题:软件开源为什么重要。
这个问题要回到五十年的漫长历史中去回答。事实上,整个信息革命进程,始终伴随着软件开源事业的不断发展和深化。一部开源史,也是一部信息技术与互联网的产业革命史。
1969年,AT&T 贝尔实验室开发出了 UNIX。此后的10年,业界可以以低廉的成本获取 UNIX 源代码,并在此基础上进行革新改进。事实上,UNIX和贝尔实验室在当时已经打造了原始版本的开源意识和社区化思想。虽然之后AT&T出于商业考虑,停止了免费的UNIX版本更新,但软件开发者的自由与分享意识已经觉醒。此后的计算机时代,始终伴随着软件工作者对开源事业的热爱与执念。
1984年,理查德·斯托曼发起了 GNU 项目,目标是创建一个完全自由且向下兼容 UNIX 的操作系统。次年,他围绕GNU建立了自由软件基金会,至此首个推广自由软件的民间非营利性组织诞生,为软件行业正式启动开源工作奠定了基础。
1991年,影响至今的Linux 内核诞生。事实上,大名鼎鼎的Linux在当时采用了GNU的系统软件集,可以说是对GNU项目的发展和继承。Linux内核很快也被开源了出来,其开发生态直接影响了互联网产业的进程。
我们耳熟能详的安卓,就是采用Linux 内核编写的移动端操作系统。而安卓的开源与生态化建设,直接造就了繁盛的移动互联网和智能手机时代。相比于iOS的封闭,安卓的开源虽然有很多问题,但它的高开放度、低门槛,也带来了行业普惠价值,以及极强的成长空间。
而开源之路并没有就此终止,2008年大名鼎鼎的 GitHub 发布。这一平台的价值在于,它是一个开源的分布式软件版本控制系统,各种开源项目都可以在平台上进行公开公平的软件开源,从而与全世界开发者共同打造更优软件体验。如今GitHub已经成为了被广泛认可的开源民主化平台,其社区生态影响着全球各领域的软件开放进程。
回顾五十年的开源史,我们会发现开源平台与技术,是在时代需要与前辈技术基础上逐步发展起来的。而更优质、更彻底、更自由的底层软件开源,并不会降低一家公司的竞争力。相反这可以推动行业共识和生态繁荣,用所有开发者的智慧共同做大技术红利。
所以,开源史带给世界的结论,是平台化技术的开源是长期红利的基础,是产业繁荣的先导。不断适应时代需求的开源技术与开源社区生态,是叠层筑造的软件高塔。在这座高塔之上,软件用全球开发者的智慧让自己变得更好,再反哺世界科技的发展。
生态开源的底层模式、技术民主化,以及贡献越大话语权越大的社区机制,用五十年时间奠定了软件产业持续进化的基础能力与全球产业共识。遗憾的是,这场宏伟变革中中国软件人更多处在应用者与学习者,而非变革推动者的角色。
当然,这一境况若干年来正在发生变化。比如华为等中国公司正在持续拥抱开源事业。目前华为在有重大国际影响力的开源社区中拥有十多个董事席位,及200多个TSC、PTL、Core Committer席位。作为Linux基金会白金成员,华为对Linux kernel累计贡献6800+补丁,是TOP 5中唯一的亚洲厂商。
在开源事业中不断积累的华为,今天准备在移动生态这片软件沃土上,开启由中国科技公司主导的开源平台建设。
历史的时针,或许就此拨动。
今日,方舟的船舵
从历史中回看,底层软件开源之路带来的行业红利,主要由这样的模式产生:软件本身具有极大应用价值,开源后各厂商与开发者可以获得直接效用;而广大开发者反过来重新思考、雕琢和优化这一软件,汇聚而成开源社区。这个社区既是底层技术的不断优化,也是产业共识的自然建立。
而方舟编译器的开源,显然满足这一逻辑的基础。
对于广大APP厂商、软件开发者、互联网企业来说,对方舟编译器的理解和应用可以带来核心价值,即对自身应用体验的直接提升。而向长远角度看,方舟编译器背后的技术思路与生态价值,更是对行业具有长线推动作用。
这次开源的方舟编译器框架代码,可以完成Java静态编译,包括类层次关系分析、虚方法表和接口表的生成、native函数的处理等,以及基于引用计数的内存管理方式,提供朴素的RC插入功能。
这一阶段的框架开源,主要满足编译器领域专家及爱好者研究学习的需要,同时华为将继续优化其他编译器组件,以便让源代码更适应开源社区的开发环境。同时,开发者可通过代码托管平台参与社区贡献,包括文档贡献和代码贡献,同时也可在此平台上反馈相关问题和需求。
从近到远,我们可以看到方舟编译器开源,到相关社区与贡献制度建立,对于整个软件行业来说具备三重价值:
1、开发者可以通过加强对方舟编译器的理解,加强自身产业竞争力。
方舟编译器具备多语言联合优化能力、高效的内存回收机制、灵活的编译优化方式和极低的学习使用成本等特点。如今方舟编译器已经在产业合作中,广泛渗透到各APP开发领域,成为用户体验提升的新技术撬点。而方舟开源本身,对于这些APP开发者以及移动应用开发行业来说,是通过提升理解,加强自身产业与方舟编译器耦合的机会。在同质化竞争激烈的移动互联网产业,这也是差异化竞争力的又一来源。
2、理解跨语言编译机制,提升自身业务能力和面向未来的移动端编程能力。
方舟编译器本身是一种新的编译机制,尤其具备跨语言编程的能力。这在极大程度上是对现行编程基础的一次优化与提升。业内人士都知道,跨语言编译虽然已经成为行业主流,但却存在大量痛点。比如JNI和反射机制开销巨大;Java代码和C/C++代码互相不可见;跨语言的全程序优化无法实施等等。
此次开源的方舟编译器框架代码,包括编译器中间表示(IR)和语言编译实现。开发者可基于开源代码+二进制,编译构建出编译器工具链,尝试对Java程序进行编译。如此,开发者可以通过熟悉方舟编译器的架构思想,提升自身在跨语言编程领域的业务能力和理解水准——通过对方舟的“拆招解式”,实现行业基础软件水准的共同进步。
3、参与方舟生态建立,在成长的开源环境中获得长期红利。
编译器是个庞大的软件工程,需要建立生态逐步完善。而对于软件开发者、高校研究者和终端厂商来说,此时方舟开源推动建立的开源社区,可以说是中国移动软件开源社区的基础,是寻求未来产业共识的良好平台。此时加入,不仅可以短期加强业务竞争力,更有助于通过长期贡献,积累未来社区中的话语权。方舟编译器的陆续开源进程中,将通过建立托管平台,实行按贡献大小决定话语权、走向开放治理机制,最终形成社区生态。这是中国终端软件的一次全新尝试,无论是补完产业链,还是走向未来,都将源源不断激发技术与社区红利。这些红利将长期释放给行业和开发者生态,尤其对于早期参与者和积极贡献者来说。
就像很多伟大的底层技术一样,方舟编译器也会开源开放给所有聪明的大脑。而开发者在此刻拥抱方舟时,一定会注意这样一件事:这艘方舟,正航向哪里?
路与远方
移动时代之后,科技产业的下一个时代从何而来?我想现在这个问题应该已经具备了初步共识:5G提升联接能力;AI改变交互;IoT设备作为硬件形态,共同编织成了下一个时代。
而对于软件和移动产业来说,今天最关键的问题就是:我应该如何迈进这条路?
要知道,AI、5G、IoT的想象力相辅相成,但其中涉及太多的技术难点,并且在草创阶段严重缺乏技术共识。比如AIoT的芯片、网络、应用、算法,以及未来演进方向,这些在今天都充满了不确定性,甚至自相矛盾的产业现状。
如何让这条未来之路真正打开呢?吸取五十年的信息技术史,我们会发现开源和技术民主,是确定行业底层技术共识的最佳途径。
5G交融AI的智能时代,是中国和中国开发者首次完整抓住的科技产业革命,但这是机会同时也是考验。当我们需要开源生态和社区化的长期红利,首先要建设生态与社区。未来技术大门需要一把钥匙去开启,开源社区与技术生态需要第一捧泥土去堆积。
从哪开始呢?又何不从方舟开始呢?
我们知道,方舟编译器是鸿蒙OS的重要工具,而鸿蒙OS则是面向IoT全场景生态的底层操作系统,也是AI和5G融入新硬件时代的关键接口。
如果我们把方舟的开源到鸿蒙的开源,看作一个长期执行、长期生态化的系统工程,就会发现华为事实上在基于刚刚发生的方舟开源,打开面向未来,中国开源社区的第一步。
方舟开源和完善,是一个不间断的过程,是系统化的工程,也是行业红利释放的长期轨迹。接下来,2020年方舟编译器将开放Java编译器工具链,支持Java程序编译;2021年方舟编译器将开放对JavaScript语言的支持能力,可用于JS应用的编译。
同期,鸿蒙OS的开源工作也将陆续展开,华为将把软件方面的技术能力在社区中不断贡献给行业,与行业一起探寻更好的、更符合时代需求的软件技术。
沿着这条路径,我们已经可以在今天想象很多事,比如基于AIoT逻辑的杀手级应用和明星公司成长起来;比如IoT产业迎来大量共识,快速提高产业效率;比如软件开发行业普遍效率得到提升,将有更多创造性思维与人才聚集到软件中来。
未来还长,但钥匙已在手中。过去,当我们追问中国软件产业,为什么总是追随者而不是创造者的时候,其实很多时候答案很简单,因为没有人踏出第一步,没有人选择最苦最累的工作完成,没有开源开放的共识与思维。
而如今,很多事情已经改变。从方舟到开源,从开源到生态——鸿蒙已开,春来草自青。