OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

关于小米在开源上的五大原则,一位 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:572918

评论

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

OpenHarmony,奏响中国基础软件的“光辉岁月”

脑极体

开源鸿蒙

Programming abstractions in C阅读笔记:p184-p195

codists

对话在行人|泰开集团:通过财务数智化转型,实现多重管控要求

用友BIP

对话在行人 数智化领先实践

pycharm pro 2023.2.4中文版 支持M1

加油,小妞!

开发工具 PyCharm Pro

平台工程动态 Monthly News 2023-10

杨振涛

DevOps 平台 平台工程 平台工程社区 PECommunity

物联网卡运营 阶梯限速、阶梯防超套、自动化推送

IoTOS

物联网 IoT SIM卡 eSIM安全 java 技术提升

一起学Elasticsearch系列-索引的CRUD

Java随想录

Java ES

Java多线程开发系列1:操作系统进程与线程

BigBang!

线程 进程 Java多线程

CNCC 2023 | 大模型全面革新推荐系统!产学界多位大咖精彩献言

小红书技术REDtech

算法 推荐系统 多模态 大模型 内容理解

Linux操作系统中软件安装:用RPM包管理器安装软件步骤

小齐写代码

合约交易所系统开发搭建流程

区块链技术

Linux Vim批量注释和自定义注释

二哈侠

Python 文件处理指南:打开、读取、写入、追加、创建和删除文件

小万哥

Python 程序员 软件 后端 开发

域名证书到期,如何通过nginx更换https证书

javaNice

nginx

Macos ftp传输工具:Transmit 5 中文版 支持M1 附安装

加油,小妞!

ftp传输 Transmit 5

SDK可以支持本地检测吗

矩视智能

深度学习

跨语言高性能RPC框架Focus发布V1.1.0

dinstone

RPC 高性能 跨语言 RPC框架

【我和极客时间的故事】极客时间带给我的成长

三掌柜

我和极客时间的故事

API自动化测试​

RestCloud

API测试 API 接口

亚马逊云科技大语言模型下的六大创新应用功能

淼.

Photoshop Web版本用了哪些CSS技术

南城FE

CSS css3 前端 PhotoShop

Mac电脑专业级音频制作软件 Logic Pro X中文免激活

胖墩儿不胖y

Mac软件 音频处理 音频制作软件 音频管理工具

《用友企业绩效管理白皮书》要点解读之趋势洞察

用友BIP

企业绩效管理

针对海量审计日志统计分析的Amazon OpenSearch Service应用

Hanson

APP 备案公钥、签名 MD5、SHA-1、SHA-256获取方法。

CodeWhisperer 的正确使用

亚马逊云科技 (Amazon Web Services)

人工智能 GitHub 云上探索实验室 Amazon CodeWhisperer Amazon Bedrock

项目管理从混乱到井然有序,就差这10款看板软件了!

彭宏豪95

项目管理 效率工具 项目经理 在线白板 看板工具

垃圾回收是什么?

暂时不愿意透露姓名的热心人士

垃圾回收

用友成功签约国家能源全资子公司-宁波风电

用友BIP

财务数智化

全国气温跳水大赛启幕,华为天气提醒用户及时添衣

最新动态

App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法

雪奈椰子

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