Vela我不是特别了解,这个得问 @范典 大佬,不过大佬还用不用知乎就不知道了。不过我可以谈谈Vela的基座,也就是Apache NuttX的事情,这个我倒是从头到尾都参与了。当然我并不是嵌入式开发工程师,所以太技术的东西我也不懂。
首先放个照片
左一是我,左二叫David Sidrane,是PX4这个无人机飞控软件负责OS部分的开发者,PX4也是基于Apache NuttX的(有人说NuttX开发者很少?),中间就是Gregory Nutt(所以你们知道NuttX这个名字怎么来的了吧),右二是崔宝秋博士,右一是小米在Apache NuttX上贡献最多的码农,在MIDC的slides上也出现过。
这个照片是在2019年10月份在小米科技园拍的。当然实际上整个事情的开始时间要比这个还早。
小米在IoT领域的产品特别多,那么不可避免的,供应商也会特别多,每个供应商,都会有自己的一套OS解决方案。当然这个也很好理解,供应商肯定希望锁死客户,让你迁移成本更高。一开始这种模式也没有太大问题,小米就基于供应商提供的OS来开发自己的上层应用就好,但随着产品越来越多,小米这边儿负担也越来越大。首先,针对每个供应商,小米都需要把已有的程序都port一遍,当然这个还算正常吧。但是最麻烦的一个点在于,很多时候出现bug,查了查去发现其实是在供应商提供的OS里,于是小米还得给供应商改bug。接的供应商越来越多,小米养着给供应商改bug的人也越来越多,这个显然是不可接受的了。这个时候,由小米提供一个统一的RTOS框架,供应商提供驱动接入这个RTOS,就变成一个必然的选择了。当时开会,IoT负责这块的人坐下直接就说,我不管你们用啥RTOS,赶紧敲定,我这边儿实在干不下去了。。。
所以,搞这个平台真不需要什么特别高大上的理由,真的就是实际的业务驱动,不得不搞。基于开源二次开发也很好理解,这也是小米一直以来的坚持,不要重复造轮子,要快。
至于为何选择NuttX,实际上内部当时是对比过多个解决方案的,最终敲定NuttX,从商业上来说,NuttX一直都是创始人个人在维护的,没有被大公司把持;从技术上来说,NuttX的创始人一直坚持POSIX兼容,甚至在捐献项目到Apache软件基金会时,要求在项目代码中加了一个inviolables文件,强调绝对不能放弃POSIX兼容
这带来的一个好处就是,Linux下的程序非常容易移植到NuttX上,这对于公司来说是一个极大的优势,因为熟悉Linux的开发者太容易找了,现有的程序移植难度也大大降低。
当然,NuttX有一个隐患。NuttX一直以来没有挂靠任何基金会,理论上说就是一个个人项目。创始人老爷子50年生人,现在已经70岁了。老爷子也委婉的表示过,自己年纪大了,精力无法保证,但还是想让这个项目能够继续发展下去,所以还是想成立一个基金会来托管这个项目。这也是我们请老爷子来小米的原因,就是想商量一下基金会的事情。
但这里也有一个困难点在于,老爷子之前是被大公司伤害过的。三星曾经联系过老爷子,希望能合作,但最后没谈成。三星就直接拿了代码过去,在所有文件头上又加了一个自己的license header,就这么用了。这个文件就是个样例
TizenRT的OS部分整个就是基于NuttX的。
当然这个事情从法律上说是毫无问题的,BSD License本来就允许别人直接用,三星也大方的写了自己是基于NuttX开发的。但这个事情对老爷子伤害还是比较大的,所以老爷子对于项目被大公司把持这事是比较敏感的。
这里就得感谢崔宝秋博士本人,以及他一直以来在小米倡导的开源文化了。老爷子来了小米,和宝秋聊完出门,直接和我说“我都不敢相信我刚和小米的VP聊天了”(抱歉,我英文比较搓,已经记不清英文原话怎么说的了)。就是说感觉宝秋特别平易近人,又懂技术,完全不像是一个“VP”。老爷子对于小米在AIoT上的规划也很认可,也很高兴小米能选择NuttX。建立了信任关系之后事情就好办了。因为我参与Apache软件基金会比较多,就和老爷子介绍了一下Apache软件基金会的情况,特别强调了Apache软件基金会是非常看重厂商中立这个原则的。最终老爷子在思考之后,决定把项目捐献给Apache软件基金会,所以现在,NuttX的正式名称已经是Apache NuttX了。
这个事情其实也充分证明了,开源真是一个全球化的事情。Gregory Nutt老爷子是美国人,但现在住在哥斯达黎加,不远万里转飞机(哥斯达黎加没有直飞北京的飞机,必须从洛杉矶转一趟)来到中国,经过沟通之后,最终加入了一个base在美国的软件基金会,而这个项目的champion是堵俊平(现在开放原子开源基金会TOC的主席,当时还在腾讯,现在去华为了),mentor之一是我,又都是中国人。
后续Apache NuttX会继续在Apache软件基金会中孵化,因为是一个十几年的项目了,贡献者又非常多,实话说有些贡献者是不是还活着都不好说了,所以知识产权和License方面要做的工作还是非常多的。但目前看社区还是非常活跃的,除了小米,SONY和NXP也在持续的贡献,我们也在联系三星看是不是也可以回来一起搞。有很多国内的供应商,也开始直接向NuttX贡献驱动了。所以总体看,项目的前景还是很乐观的。
最后,还是想感慨一下Gregory Nutt老爷子真是特别的敬业。来到中国之后,上午就要到小米做讲座,又有时差,但我发现老爷子居然还在合并代码!有一天上午没事,David因为第一次来中国,所以我准备带他去天安门看看,Greg老爷子表示这几天攒了好多patch没合,所以不一起去了,要在宾馆干活。这确实是程序员的楷模了,希望将来中国也有这样可以一直干到老的程序员吧。
谢谢大家!