为什么小米的系统 MIUI 能够一周更新一次,而魅族的固件更新周期很长

刚买了个Cherry的青轴机械键盘,有了打字的冲动,顺便回顾一下MIUI开发流程的进化。先说明一下,我是MIUI的初始成员,长期负责最基础的开发工作和每周的产品发布,有关开发流程的大部分的改变都是我来驱动的,我可以保证写出来的都是第一手的资料,因为都在我的记忆里面。

MIUI为什么要每周五发布?这个项目开始的时间是2010年4月底,项目负责人是黎万强,工程师是我和刘新宇,然后就没有其他人了。新宇负责电话相关的改动,我负责系统升级,要保证可以在线升级(OTA)到下一个版本。两个人非常兴奋,也非常努力,畅游在Android代码的海洋里面,很顺利的在劳动节放假前发布了第一个内部版本。那一天,2010年4月30日,正好是周五。在那之后,公司内部的版本总是在周五发出来,当时是每周工作六天,周六还有时间修复周五版本的问题,有时候会发一个紧急更新,确保小米公司的同事们都能用上放心的系统。2010年8月16日MIUI正式发布之后,我们还是坚持每周五发布,其实没有什么特别的,因为之前已经是那样了,每周五发布和OTA,就是MIUI的基因。

做到每周五按时发布,其实并没有那么轻松,不同的时期,不同的团队规模,都有不同的挑战。随着MIUI的团队规模越来越大,累积的功能越来越多,用户预期越来也高,开发流程也跟着变化。从开始到现在,MIUI大概分为狂野、克制、精准三个阶段。

所谓狂野,就是想做什么就做什么,有什么就发什么。这是一个MIUI野蛮生长的阶段,对于用户的需求及时满足,也经常能超出用户预期,MIUI的口碑也是这个时期积累的。这个阶段最大的挑战就是如何尽快满足用户需求,如何最快的做出产品,而对于团队管理,质量控制都没有专门考虑,不过MIUI初始团队的工程师素质都很高,也也没有出现严重的问题。但是随着团队规模的扩大,新入职的同事的增多,某些发布的版本出现了一些问题,不得不在周六发布紧急更新。

所谓克制,就是要忍住。有时候做了一个新功能,如果不能马上让用户用上,会很不舒服,但是如果因为这个功能导致用户手机出了问题,那用户会更不舒服。所以我们做了折衷,新功能提交在周三晚上截止,周四、周五只能提交资源改动,这样我们可以有两天的时间测试要发布的产品,如果有严重问题,可以马上解决。如果两天不够,还可以更克制,大的功能周一就要提交,可以有四天的时间测试。这个阶段,很多同事未必能克制住,甚至老板也很难做到克制,所以还是会有些问题,但是已经比狂野阶段好了很多了。但是克制也让很多同事不敢提交代码,导致开发效率降低。

所谓精准,就是把正确的产品发给正确的用户群。自从小米手机发布之后,MIUI的用户群迅速扩大,到现在已经超过2000万用户了,而发烧友的比例其实只有一个百分点。这时候,大多数用户的诉求是稳定,与此同时MIUI的忠实发烧友用户也要服务好。这个时候开始了灰度机制,根据用户对于新产品的接受程度,MIUI分为体验版、开发版和稳定版。体验版只针对高度发烧友用户,不主动传播,采取邀请制,讨论区由用户自己管理。开发版适合普通手机爱好者,喜欢新事物,但是又不想太折腾。稳定版自然适合普通大众用户,买手机就是要稳定,很多人甚至都不升级。目前体验版、开发版和稳定版用户的比例大概是1:1000:20000。

MIUI进入精准阶段还不到一年,当时是因为要开发V5,所以需要一个比较长的开发周期,同时又想核心发烧友用户可以一起参与V5的开发,所以专门做了一个体验版给几十个用户使用,就和MIUI刚开始的感觉一样。从V5的口碑来看这个阶段的成果还是很可观的。V5发布之后,这个版本专门给高度发烧友用户体验最新的功能,这些功能他们满意了之后才会进入开发版,现在这个版本已经有了好几百人了,每个工作日都有新版本,很爽,很折腾,很发烧。

新功能都在体验版开发,开发版的用户其实不会受到影响,因为这些用户喜欢体验完整的新功能,而不是带有问题的新功能。体验版上的新功能完整之后,提交到开发版分支上,发出去之后对于开发版用户来说还是新鲜的。现在MIUI团队有300人,同时开发的项目有十几个,每周达到完整的新功能很多,这样可以保证开发版的新功能足够吸引人。其实开发版还有内测,每周二下午开始,每天都有一个版本,给那些稍微喜欢折腾的开发版用户,同时也能帮我们发现问题。

写了这么多,不知道有没有回答问题,总结起来就是MIUI一直都在尝试更好的开发模式,同时满足不同用户的需求,又能够保证作为基因的每周发布。很多事情做不到,不是没有能力去做,而是没有想到可以那么做。当然,如果能够有MIUI这么一个既有创新能力、又有执行能力,既充满激情、又能够克制的团队的话,做到每周发布就太容易了。

有话要说