小米如何被开源所改变?

发表时间: 2018-11-30 12:48
小米与开源的渊源还要从 Android 的开源说起。

作者 | 唐小引发自小米开源技术峰会现场出品 | CSDN(ID:CSDNNews)

屈指算来,开源软件至今已有二十多年的光景,到今天,开源已经成为所有互联网公司的基石,也是我们所有程序员所崇尚及热爱的文化。无论是于公司或个人而言,我们都从开源软件及社区受益良多,小米即是其中之一。在今天于北京举行的小米开源技术峰会上,小米人工智能与云平台副总裁崔宝秋与我们分享了小米为什么会走上了开源之路。

为什么小米坚定地走上了开源之路?

这与程序员出身的雷军,以及今时今日小米开源的主导人 —— 小米人工智能与云平台副总裁崔宝秋博士密切相关。在小米开源技术峰会的现场,崔宝秋分享起了自己从 1995 年开始接触自由软件到推动小米成为开源软件倡导者的初衷及所取得的成就。

小米人工智能与云平台副总裁崔宝秋

崔宝秋讲起了雷军与他分享过为什么要创办小米,其中有一个原因就是看到了 Android 的开源,早在数年之前,雷军便坚信像 Android 这样的开源操作系统会盛行更是一个巨大的机会。“雷总和我说,‘宝秋,现在任何一家互联网公司离开开源就输在了起跑线上’,开源非常重要,这也是我在小米推动开源的源动力。”崔宝秋如是说道。

而于崔宝秋个人而言,他是中国技术圈里知名的开源老将,自 1995 年在美国接触自由软件到现在已有二十多年,而这数十年之间,他已从一个爱好者成长为中国开源领域的一方大拿,用他的话说,就是“从早期自由软件爱好者变成自由软件信仰者、开源软件的开发者和管理者,到今天在小米的开源软件倡导者。”

过去几年来,开源已经成了小米的团队文化、工程文化非常重要的组成部分。“我在打造小米人工智能与云平台团队时,一直都是以硅谷的一种创业公司、互联网公司的风格来打造团队的,团队文化包含了多种元素,其中非常重要的两个就是‘技术’和‘开源’,我是非常倡导、鼓励开源的。”

在谈到为什么如此积极地拥抱开源时,崔宝秋谈到了几点理念,这也是他从 2012 年加入小米就一直极力主导开源的原因。

  • 永远站在巨人的肩膀上:这是非常实用的应用,现在很多的大数据、人工智能、云计算技术开源已经成为了事实标准,我们又何必重复造轮子自写一个 Hadoop 呢?
  • 开源软件已经非常成熟:在云计算、大数据和 AI 领域,很多开源软件已经成为了业界的事实标准。
  • 代码质量/工程文化:通过开源软件的应用及读大量的优秀的开源代码可以迅速提升工程水平及工程师文化。开源软件还可以提升开发者们对于编程的热爱,对代码质量的苛求,进而提升对于完美度的追求。
  • 吸引人才/人才库:一个公司拥抱开源,崇尚开源文化,可以吸引很多的工程师加入到公司之中,而他们所学习到的技术可以直接在公司应用。

崔宝秋将开源力量分为三种,分别为:个人爱好者、无开源商业模式组织和有开源商业模式组织。对于崔宝秋而言,从作为一个开源的个人爱好者,到先后任职 IBM、雅虎、LinkedIn 到现在的小米,这种界限分明的力量让他感受颇深。“我从 IBM 到雅虎后对于开源的感受变化异常明显,无论是 IBM 还是早期的微软都是谈开源色变、谈自由软件色变,但到雅虎后,能够显著地感受到彻底拥抱开源的文化,因为他们在提供互联网服务,而有些公司是直接通过开源软件盈利的,大家都知道,开源不等于免费,这些公司会从软硬件底层、应用层到云服务向他们的客户提供一整套解决方案而盈利。”

在这之中,小米是中间力量(即无开源商业模式的组织),当然,“大部分都是中间力量,这其中还包括了诸多高校及科研机构。”

开源改变了小米什么?

而这拥抱开源的理念也支撑着小米技术体系实现了从零到一,最早在 2012 年崔宝秋加入小米时所思考的,就是在有限人力的情况下,如何站在开源巨人肩膀上快速推出一些云存储计算和大数据处理能力。“我一来小米做了很多工作,打通数据孤岛,制定开源战略,拥抱开源。小米当时服务器人非常少,我们不可能重新写很多东西,不可能从零开始,我们一定要站在巨人的肩膀上,比如说选用 Hadoop,这是闭着眼睛就可以选择的,不用犹豫。”崔宝秋讲道。

这个成果是显著的:

  • 2012 年 7 月,统一 Hadoop 集群,打通数据孤岛;
  • 2012 年 10 月,选型 HBase,组建团队;
  • 2013 年 6 月,开源 Minos 自动化监控部署系统;
  • 2013 年 12 月,推出第一个 HBase Committer;
  • 2014 年 3 月,推出第二个 HBase Committer;
  • 2014 年 4 月,开源时间戳服务器 Chronos 及实现 HBase 跨行/跨表的事务处理的 Themis;
  • 2014 年 8 月,正式成立小米开源委员会;
  • 2014 年 9 月,开始参与 Cloudera Kudu 的研发;
  • 2015 年 1 月,推出第三个 HBase Committer;
  • 2015 年 5 月,开源企业级、高可用、可扩展监控系统 Open-Falcon;
  • 2016 年 4 月,推出第一个 Kudu Committer;
  • 2017 年 1 月,开源分布式实时搜索平台 Linden;
  • 2017 年 10 月,开源分布式 KV 存储系统 Pegasus;
  • 2018 年 6 月,开源移动端深度学习框架 MACE;
  • ……

当然,这只是小米开源的一部分,在回顾这些小米开源大事记之时,崔宝秋还讲起了一则关于为何要自研并开源 Open-Falcon 的初衷:“小米最初由于没有监控系统导致服务器宕机或掉线都无法实时获取,因为这样的痛点而开始了自研监控系统(并且,将其开源)。”

到今天,“无论是 C、B、A(云计算、大数据、人工智能),开源都在小米扮演了极其重要的角色。如果说五六年前,在小米不是每个核心主管都认可的话,那么在今天的 AI 时代,越来越多的人都在讲开源。”

开源应该怎么做?

而经过这几年的开源之路,小米在开源上也趟过了许多坑总结出了一套打法,这一点从小米的开源战略中便可窥一二。比如对于“不用则已,要用则精”,崔宝秋表示,“中国很多公司都犯过一个很大的错误,就是没有用精,其实归根结底是在于对开源软件的不信任,不信任的原因是只拿来用,没有深度掌握,在没有碰到真正困难时一切都好,一旦上线、集群大小不够,一扩容就出问题了。”再比如选型开源软件时,崔宝秋谈到项目周期长与迭代周期快的冲突。“对于一个公司来讲,有些决策是必须高层来做的,长期规划,厚积薄发。选择一个重要的、大型的自由软件、开源软件必须要有决心。”

同时,崔宝秋还总结出了在开源与技术之间我们常碰到的问题并给出了相应的解决方案:

  • 如何平衡在开源和业务上的投入?

如崔宝秋所言,在开源上大量的投入,在一个大公司是很难被认可的,如何平衡开源和业务上的投入,由此,他将其总结为三点:

1. 业务第一,开源第二:公司发展不能本末倒置,业务永远是第一位的;

2. 业务驱动:在开源上的投入一定要围绕公司的业务需求;

3. 保障开源上的投入,有机会学习。

  • 如何积极有效地回报开源社区?

崔宝秋提醒道:“这是我们中国工程师需要注意到的一点,第一,要积极交流参与讨论,不要自嗨,要多到社区、论坛参与回答别人的问题,以及提出合理的问题;其次,要能够清晰地描述想法、表达算法,当英语口语不行时,通过写作可以更好地表达清楚;第三,当你被挑战、被质疑的时候要坚持自己正确的观点,比如我们做了很多 HBase 的优化,刚开始社区不认可但最终在我们的证明下相信并接受了我们的代码;最后,要为自己提交的代码负责,不要打一枪换个地方,遇到社区一些对自己的代码的建议和问题,能不能做好客服,及时回答并改进。”

  • “千万不要掉入与社区版本渐行渐远的坑中”

“与社区版本渐行渐远,只有死路一条,即使强大如 Google、Facebook,与开源社区相比都是渺小的存在。只有开放共享、与社区共成长才能长期享受开源红利,而封闭开发,即使短期受益,但最终仍会被社区抛弃。”

  • “我们不仅要站在巨人的肩膀上,还要努力为巨人指方向”

崔宝秋表示,“孤军奋战是很难对社区、开源软件产生任何影响力的,小米极力地推出 Committer,除了要精通掌握之外,还有一个很重要的原因就是要拿到一定的话语权,用另一句话来讲,就是不仅要站在巨人的肩膀上,还要努力为巨人指方向。”

什么叫“为巨人指方向”?崔宝秋说道:“开源是一个巨人,每一个开源项目都是一个巨人,谁拥有这个开源项目?没有人!真正健康的开源项目是社区来决定和推进的。国内许多公司犯的一个错误就是自己玩得很 High,但是没有贡献,与社区的融合很差。”

AI 时代如何拥抱开源?

今天当我们迎来 AI 时代时,又当如何拥抱开源?从疑惑于 AI 时代开源软件会不会无法满足需求之时,我们已经看到了 AI 巨头们在开源领域遍地开花,比如 Google 的 TensorFlow、百度的 PaddlePaddle、微软的 CNTK,以及小米的 MACE 等都是很好的例子。

对此,崔宝秋在表示 AI 时代更离不开开源软件的同时还做出了一个呼吁,那就是从代码开源、深度学习框架的开源,到数据的开源。“大数据在人工智能中扮演了重要的角色,包括知识图谱、数据服务、训练模型等。目前,如 Google、微软等巨头也都一直在推动知识图谱的开放,诸如 Freebase、Microsoft Concept Graph 等均可以免费获取,到今年 10 月,全球已有 1200 多个知识图谱开放出来,但其中中文图谱非常少,小米当前在开放的知识图谱方面已经做了一些工作,比如与 OpenKG 及其他高校组织发起 OpenBase 项目,进行知识的抽取编辑、挖掘融合以及更新、众包。我们希望能够打造出一个强大的中文知识图谱,造福中国、造福全人类。”

同时,当前国内许多项目都是公司主导的,这也就导致代码是开源的,但项目却比较封闭,“在 AI 时代,如果所有的开源项目变得非常封闭,将不利于整个开源社区及开源软件的成长,我们需要做到更加开放的开源。以 MACE 为例,我们希望能够将上中下游全部打通,目前 MACE 底层支持很多硬件芯片,从高通、MTK 到澎湃,未来我们也希望更多的芯片厂商加入。在算法、平台、应用层面希望所有同行都能够来参与,包括友商。”

“这就是在 AI 时代我们想要呼吁的一点 —— 更加开放的开源。”在演讲的最后,崔宝秋如是总结道。