HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

关于小米在开源上的五大原则,一位 20 年开源老兵的思辩

  • 2016-04-07
  • 本文字数:3835 字

    阅读完需:约 13 分钟

从 1995 年至今,从美国到中国,从自由软件到开源软件,小米首席架构师崔宝秋一直在参与开源软件的开发等工作,亲历中美两国开源的变迁与发展。如今,开源是互联网的大势所趋,个人与企业都纷纷拥抱开源。

回顾过去,开源这些年,有哪些值得铭记的瞬间、有哪些影响深远的事件、有哪些极具代表的人物?放眼未来,开源到底该怎么玩,怎样的思路与打法是值得国内互联网公司借鉴的?在 3 月 27 日举行的技术社群大会上,崔宝秋与大家分享了这些年的一点感触。本文根据崔宝秋在大会上的演讲整理而成,关注『聊聊架构』微信号(搜索 archtime),回复关键字『开源』,获取演讲 PPT。

大家好,我是小米首席架构师、小米云平台负责人崔宝秋,今天我分享的主题是《我看开源这些年》。本次分享中,我会介绍下过去二十多年我对开源的一些看法和理解,重点是在国内我们应该怎么玩开源。

我和开源

首先,我先简单介绍下我和开源的缘分,我是什么时候、怎么和开源结缘的。我是 1995 年出国的,那会儿国内还停留在 DOS 和 Windows 编程。1995 年去美国读书,在那里我可以说是大开眼界。我看到了 GNU、Linux、FreeBSD,还有 Emacs,被 GNU 和 Linux 庞大的功能、后面所有的软件、能力、水平所震撼,当时真有惊艳的感觉。我所在学校的几个教授也在开源上对我有很大的启发作用。之后我的四年博士研究项目,五年博士中的四年,都在做 XSB。XSB 简单来讲就是增强版的 Prolog 语言,当时我们基于 GPL 把它开源,到后来很多学术界和工业界机构也在用这个系统。从 1995 年开始到 2010 年,这中间我参与了很多 Emacs 社区讨论,也直接贡献了一些代码。在 LinkedIn 我们也开源了一个分布式实时搜索系统 SenseiDB,后来小米也把它用到了搜索技术里。

2012 年回到中国加入小米,我就开始推进小米的开源战略,比如在有限的人力的情况下,如何站在开源巨人肩膀上快速推出一些云存储、云计算和大数据处理能力。

在这个过程中大家可以看到,我是从早期的一个自由软件的信仰者,慢慢地转化到了一个开源的倡导者,中间也经历过学校、公司,从个人的爱好到公司的推动,从项目贡献者到项目管理者。

开源关键人物、关键事件和基金会

说到开源,讲开源过去的这些年,我觉得应该讲一下重要的开源人物。在我看来,在开源史上、在开源界这三个人是至关重要的:第一个是 Richard Stallman,他创建了 GNU,创建了自由软件基金会,为后来的 Linux 萌芽等等奠定了扎实的基础。第二个,Linus Torvalds,Linux 的创造者,这个不用多讲,大家都很了解了。最后一个是 Eric Raymond,他创造了 Open Source 这个词,并发起了开源运动。我觉得如果没有 Eric,只凭着自由软件,开源做不到今天。这三个人在开源史上未来都很难有人取代的。

下面是开源历史上一些重要的里程碑事件和重要基金会,以及重要的开源软件时间表。

版本控制系统(VCS)和代码管理平台的演进

讲开源,就离不开源代码,离不开版本控制系统。三十多年来,版本控制从早期的 RCS,到 CVS、SVN,一步步发展到了今天最流行的 Git。一个好的版本控制对提升团队的开发效率至关重要。

对于开源来说,代码管理平台也非常重要。我记得在我读博士的时候,我们的系统刚开始都是在系里自己维护的,整体来看,并不安全,版本管理也不方便,不利于与外界的合作。开源软件,势必要有很多人参与,所以最重要的代码一定要放在易于合作、安全可靠的地方,所以后来我们就决定把 XSB 放到 SourceForge 上面。SourceForge 是当时最流行的代码管理平台,在 GitHub 出现之前,它管理了很多开源软件的源代码,项目数基本上是随着时间线性增长的。相对来讲,2008 年有了 GitHub 出现后,Git 所管理的开源项目数量就不是线性增长,早期可能有点线性,但是后来的曲线非常陡峭,有点指数级的味道。

开源软件 VS 自由软件

自由软件我觉得过于理想主义,过于强调人的自由。开源软件更加实用一些,较少涉及政治和道德,强调“使⽤和提供开源软件对你和你的⽣意有好处” 。确实,早期 GPL 推动了自由软件的萌芽或者早期发展,但是后期开源也一定程度上限制了自由软件的发展。所以我觉得开源软件属于工业界,我这两年参加了国内一些开源社区活动,大家对开源的热情都很高。虽然早期我对 Eric 有些有负面的认识,但是他对开源的贡献是不可替代的。

开源的三种力量

开源有三种力量,这是我总结的。第一种力量是个人爱好者。这些人是狂热的技术爱好者。我很早以前就有一个目标,就是等我财务自由或者退休以后,就去写自由软件,享受那个每天 commit 代码,为大家创造价值的成就感。这第一类力量就代表了一大帮技术爱好者。其中我合作过的一个作者,他是一位天文学的教授,叫 Carsten Dominik,是一个非常好的文本管理器 Emacs Org Mode 的作者,可以帮你管理时间、记事、写作等。他编写 Org Mode 的工作几乎都是在上下班两个小时的地铁上或者轻轨上完成的。刚开始我看他的有些代码写的不太优雅,算法性能不够好,让我有些吃惊,因为我一直以为他是一个计算机编程高手,后来我发现他是学天文学的,也就理解了。虽然他的一些算法不是特别美妙,但是他对 Org Mode 这个项目的推进还是有非常大的贡献的。

第二种力量我叫无开源商业模式组织,这里包括公司和学校,这些组织是以互联网服务或者以某种产品来盈利的,它不是直接通过开源的软件或者搭建于开源软件之上的解决方案来赚钱的。

第三种力量是有开源商业模式组织,包括 IBM,也有中国的华为,它们有一种商业模式在后面,利用网络硬件,设备,开源,有一整套的解决方案,对大的企业,通过整套的服务来盈利。

这三种开源的力量,对开源看法不同,贡献不同,投入也不同。

国内开源的几个阶段

中国的 Linux 在过去的二十年发展的非常迅猛,但在座的可能很多人不知道这件事情:这是我在 1999 年 10 月份的一天早上在 LWN 网站上看到的 Eric 写的一篇文章,我当时看了觉得不对。他就是表达了对 Linux 进入中国的反对或者不相信的态度。

他说 Linux 被中国政府采购是不可能的,不应该,也不被欢迎。这表达了他的一些政治偏见。我后来跟 Eric 和 RMS 也进行了电子邮件交流。那次交流让我认识到 RMS 确实把自由软件当成了一个政治的东西来看待的,它不是资本主义或社会主义那方面的政治,而是另一个政治观点,也就是关于自由的。

国内开源我认为有这么几个阶段:第一,我认为 1995 年之前是与世隔绝的,这是加了引号的,我们确实落后了,因为国外已经玩了很久了,而国内还没有互联网。后来十年是初级阶段,2005-2010 年初步成熟了,现在有了 Git,开始了快速发展。

开源的玩法我简单介绍下,重点可以看演讲稿,个人的就是热爱,就像刚才讲的天文学家一样,个人玩开源的也有盈利的,成为暴发户的都有可能的,因为你可以接受赞助等等的。像大公司,有商业模式的公司的开源是另外一种玩儿法,我没有直接参与,就不讲了。我讲的是中间这个无开源商业模式的公司或组织的一些玩法,以小米为代表。大家可以看一下小米大数据做了都用了哪些开源软件,这是一个简单的全貌。为什么拥抱开源?我们首先要站在巨人肩膀上,快速推出产品,快速占领市场,快速为公司创造价值。

所以对很多创业公司,甚至对很多大公司而言,不拥抱开源就一下子输在了起跑线上。当然吸引人才,吸引贡献,提升内部软件质量,我认为也是开源非常重要的几个好处,所以拥抱开源已经是大家公认的。

在小米我一直推行这几个原则:一,快。快速选型,快速定位,快速掌握,快速推出产品。二,绝不重造轮子。宁愿学习掌握,化为己有而不要自己重写,这个投入远远大与前者。三,不用则已,要用则精。四,永远抱着开放与共享的态度。如果讲自由、讲政治上的一些东西、讲道德层面,应该就是一块。五,与其他公司所不同的,小米在重要开源项目上会尽力推出自己的 Committer。

这里,尽力推出自己的 committer 的目的就是想解决国内很多公司所犯的一个很粗浅的错误,造成这个错误的最根本的原因就是它们拿了开源社区中的一个版本,创建了自己的分支后就把这个分支和社区主干的联系给割断了,然后自己用起来很爽,围绕自己的业务进行改进,改动后又不回报到社区,不管是自己不愿回报也好,还是自己的改动不被社区接受也好,这个本地版本就被这个公司维护得越来越重,和社区主干分得越来越远,差别越来越大,最终这个版本实际上就没用了,成了无源之水,无本之木。开源社区是开源项目后面一个庞大的力量,相对而言甚至 BAT 的力量我认为都是小的,比不过社区后面力量的推动。如此下去公司最终会被本地分支的维护成本所拖垮,达不到持久享受开源的好处。

所以,开源 5 大原则的最后一点很重要,在座的各位如果在公司想推开源的话,这点一定要注意。

如何回报社区

怎么有效回报社区?参与交流,这个主要是针对国内开源爱好者或者参与者、贡献者。第一,要勇于参与;第二,清楚地描述想法和算法;第三,还有就是自信,坚定自己的观点,不要被社区中某些貌似大牛的人所吓到,没必要的;第四,一定要负责任,不要打一枪换一个地方,就是写了代码一定要维护,要做 QA,要做测试,要做自己的用户,要做客服,关于你的代码有人提问要及时回答。小米为什么这么快让社区接受了我们,就是我给他们展示了,小米为什么会在某些领域大力投入等等的,所以这个时候社区愿意跟你合作。

我想总结一点结束今天的分享,一句话,我认为开源是软件的未来。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-04-07 23:573140

评论

发布
暂无评论
发现更多内容

苹果超好用的Markdown文本编辑器:Ulysses for Mac最新激活 支持M1

彩云

文本编辑器 Ulysses

Sonoma Cache Cleaner for Mac 苹果系统优化工具

彩云

Sonoma Cache Cleaner 系统优化工具

在HarmonyOS上使用ArkUI实现计步器应用

HarmonyOS开发者

HarmonyOS

实时化与Serverless是开源大数据3.0时代的必然选择

阿里云大数据AI技术

开源

为React Ant-Design Table增加字段设置 | 京东云技术团队

京东科技开发者

前端 React Ant Design 企业号11月PK榜 前端组件

WorkPlus移动数字化平台,助力企业全面掌控业务和生态

WorkPlus

理解技术和业务的共同目标

老张

质量保障 业务目标 技术目标

【2023云栖】刘一鸣:Data+AI时代大数据平台建设的思考与发布

阿里云大数据AI技术

大数据

WorkPlus移动数字化平台高定制化服务,贴身满足企业的个性化需求

WorkPlus

软件测试/测试开发丨掌握未来,引领人工智能测试新潮流!

测试人

人工智能 软件测试

BI 数据可视化平台建设(2)—筛选器组件升级实践

vivo互联网技术

设计模式 前端组件设计 组件库开发

promise时效架构升级方案的实施及落地 | 京东物流技术团队

京东科技开发者

架构 重构 Promise 架构升级 企业号11月PK榜

Macos鼠标右键助手专业版:MouseBoost PRO for Mac 支持M1

iMac小白

云渲染的“公”“私”技术!

Finovy Cloud

渲染 云渲染 元宇宙 云渲染农场 动画制作

SecureCRT 9 for Mac(终端SSH工具)

展初云

使用DocumentBuilderFactory解析XML浅谈

EquatorCoco

Java XML文档 document

Ulysses for Mac(Markdown) v33免激活版

展初云

Mac Ulysses 文本写作软件

【软件推荐】行云管家让你轻松实现数据安全运维!

行云管家

数据安全 数据泄露 数据安全运维

QCN9024 vs. QCN9274: Performance comparison of wireless network chips

wifi6-yiyi

QCN9024 qcn9274

数据库分类有哪些?

小齐写代码

避免defer陷阱:拆解延迟语句,掌握正确使用方法

王中阳Go

Go golang 进阶 面试题 defer

提效神器!10%标注数据,比肩全量标注的模型效果!

飞桨PaddlePaddle

大模型 半监督 自动标注 模型蒸馏

App加固中的代码混淆功能,让逆向工程师很头疼

企业、政府单位及公共组织办会,一键高效合规直达酒店!

用友BIP

企业数智化

火山引擎ByteHouse:4000字总结,Serverless在OLAP领域应用的五点思考

字节跳动数据平台

数据库 大数据 云原生

第五期 |《实时洞察 智能运营一用友企业绩效管理白皮书》解读

用友BIP

企业绩效

关于小米在开源上的五大原则,一位20年开源老兵的思辩_语言 & 开发_崔宝秋_InfoQ精选文章