查看原文
科技

人间清醒:开源的本质动机

卫sir 卫sir说 2023-08-28

人间清醒:开源的本质动机

作者:卫剑钒

本文主要回答三个问题:

  • 1.人们为什么开源?

  • 2.人们为什么以各种形式参与开源?(比如贡献开源、比如基金会)

  • 3.这背后的本质动机是什么?

这里先问个问题:

人们做事,真的一切都是为了利益吗?

出乎我的预料,超过一半的人都举起了手。


下面我们主要通过事例来说明问题。

一、Linus怎么说

我们先看看开源大神 Linus 是怎么思考这个问题的:

Linus 认为,人类所有的动机可分为三种基本类型。这些类型依次是“生存”(survival)“社会生活”(social life)和“娱乐”(entertainment)。 

我觉得他说的没错,基本上和马斯洛的需求层次理论相对应,生存动机对应着生理需求和安全需求,社会生活动机对应着归属感和被尊重的需求,娱乐动机则对应着认知、审美、自我实现、自我超越等,这些比较上层的需求统统可以归入到娱乐、好玩里面。

他的自传起名是:《只是为了好玩》,注意,所有书名都是慎重考虑过的。

这本书中,有两句话引起了我的注意,一是他曾经在一个大会上说,“Linux 的开发是一个全球性团队的体育项目。”又在一次采访中,他说:“Linux也是娱乐,这种娱乐是金钱很难买到的。

Linux 的自传《 Just for Fun 》

这非常契合他的世界观中的后两者,他肯定不是为了生存才去开源代码的。

Linux的发明,在很大程度上,是他为了满足自己的一个雄心: “我想要开发一个比 Minix 更好的 Minix。”
 Minix 是于 1987 年由 Andrew S. Tanenbaum(塔尼鲍默)教授发布的,它是用来"向学生讲解操作系统的运作方式,并且使用简单直观的例子来演示”的程序,它是一个“带有源码的PC版的Unix,对硬件的要求非常低,并且有一本书讲解它的运作原理。以前从来没有人做过这样的事情。它不是免费的,但几乎就是了——只要59~69美元,相当于14张软盘的价格,这几乎就是生产的成本费了“。

当时,Tanenbaum 每天都能收到200多封电子邮件要求程序改进,Tanenbaum 并不愿意改太多,因为这毕竟是一个教学系统,系统庞大以后就不适合教学了,另外“这样它就不能在最低硬件配置上运行了,而这一点是我希望为学生保留的。”

Tanenbaum 只愿意做这样的改进:“基本的标准是,如果提出要求的人特别多,并且改起来也不麻烦,同时不会把整个系统的结构搞得一团糟,我会答应,”他解释道,“如果没有那么多人提要求,或者很麻烦,或者要对系统做大手术,我就不干。"

在 Linus 看来,Minix 的终端仿真不太方便,而且也不能进行任务控制(job-control),内存管理也太简化。Linus 想写一个比 Minix 更好的 Minix。

一开始,Linus 只是在 Minix 上编写一个可以更好阅读学校网络上 Usenet 新闻组的终端仿真器,他把自己之前写的用于测试任务切换能力的两个进程加以修改,一个进程从键盘读入信息并发给调制解调器,另一个进程从调制解调器读取数据,然后发送到屏幕上。 

为了实现这些功能,他又写下了键盘和显示器的驱动程序;为了从学校网络下载文件,他写出了磁盘驱动程序,为了读写文件,他又在 Minix 文件系统的基础上写了一个自己的新的文件系统。

1991 年,从 5 月到 9 月,Linus 用了 5 个月,每天 10 小时,写出了 Linux 0.01。这本书详细记述了Linux诞生的过程

1991 年 9 月 17 日,他把 Linux 第一个正式版本 0.01 版上传到赫尔辛基大学助教阿瑞·莱蒙科创建的 ftp.funet.fi 服务器上的 /pub/os/linux 目录下, 他仅上传了源程序(大约 1 万行),并且还带着一份完整的发布说明,大约 1800 字。 其中强调了“发布这个版本的主要目的是为了让大家读一下程序”。

二、Denis 的心迹

我们再看看另一位全职开源软件作者Denis是怎么想的。

在全球 TOP 1000 网站上,有至少 52% 的网站都使用了 core-js 项目的代码。

它的作者 Denis Pushkarev 在2023年2月14日写过一篇长文,描述他为什么开发 core-js:

“2012 年,我把我的开发栈切换到了全栈 JavaScript。当时 JavaScript 仍然太原始—— IE 仍然比其他任何东西都更受欢迎,ES3 时代的浏览器仍然占据了Web的主要部分,最新的 NodeJS 版本是 0.7 ——它才刚刚开始。JavaScript 仍然不适用于编写严肃的应用程序,开发人员用 CoffeeScript 语言转译器,解决了 JavaScript 所缺乏的语法糖问题,用 Underscore 等解决了Javascript缺乏标准库的问题。 然而,他们并不是标准,随着时间的推移,这些语言和库连同使用它们的项目一起过时了。但旧 JavaScript 引擎仍然流行,用户并不着急,还没有什么机会放弃它们,即使新的 ECMAScript 标准有着快速和可靠的优点,想让 JavaScript 引擎支持这个新标准,也要等很多年。……那时,ECMAScript Transpiler 开始流行并发展迅速……但它们不是模块化的,并可能带来全局命名空间污染……而且太多必要的基本语言功能都还没有实现。”

为了解决这些问题,我开始研究一个后来被称为 core-js 的项目,一开始仅仅是为了我自己的需要。 为了让所有JS开发人员的生活更轻松,2014年11月, 我开源发布了 core-js。

他说的很明白,他想解决一个普遍存在的问题,让自己和所有 JS 开发人员的生活更轻松。

不需要更多,我们基本可以得出,个人开源的主要动机是

为了解决问题。为了好玩、雄心。
为了分享,以及随之而来的声誉。

仔细想想,可以知道,解决问题、雄心、分享、声誉,其实都可以落入“好玩”之中。

Linus 说:“ It's fun being famous” 

所以,对个人而言,开源就是好玩、好玩、好玩、好玩、好玩。

而且说不定还能搞出点什么名堂。

那就更好玩了。

三、公司为什么玩开源

个人主要是为了“好玩”,那公司为了什么?公司的天职可是为了赚钱。

这个问题曾经困惑了我很久。

Eric Raymond 在《大教堂与集市》 中说过:

“如果你在工作过程中感到恐惧和厌恶,就应该意识到过程已经出了问题。 快乐、幽默和玩兴是真正的资产,……开源成功的一个最重要成果,就是告诉我们,“玩"是创造性活动中最具经济效能的工作模式。

显然,开源能够带来好玩,能够带来创造性,那么公司能不能把自己的东西开源出来呢?

Zach Holman,GitHub 最早的员工之一,在《The New Kingmakers》这本书中,给出过这样的建议:“以快乐、美好的事情和可爱的工作流程来囚禁您的员工。

“imprison your employees with happiness and nice things and cuddly work processes. ” —Zach Holman

所以,当公司有员工提议说,我们把这个项目开源吧,互联网公司里那些比较有现代思维的领导,都会认真考虑的,只要不是很核心的东西,贡献出来有什么不可以呢?员工能更开心一些,自己也显得更有境界一些,而且,公司从开源已经受益太多了,做点贡献能有什么坏处呢?

Lyft 开源 Envoy 的案例,比较能够说明这个问题。

Matt Klein 是 Lyft 的软件工程师,也是 Envoy 的创建者,他在 2021 年 9 月回顾 Envoy 5周年走过的路时说1::“2016 年夏天,我们开始认真讨论开源 Envoy 的问题。早期的 Lyft 员工对开源和它为公司所做的事情很欣赏。很明显, Envoy 并不是 Lyft 的主要业务,那么为什 么不把它放在那里并给予回报呢?

没错,这就是今天,为什么各种公司开源了他们的非核心产品 。

在我看来,公司开源非核心产品的动机是:

让工作更好玩一些。
让外部更可见一些。
让公司更有影响力一些。

四、公司开源核心产品

在 Quora上,有一个问题是:

“为什么谷歌将 Kubernetes 开源而不是商业化?”

Why did Google release Kubernetes as open source instead of monetizing it? 

我觉得有两个回答是不错的。

Andrew McGregor 回答说:“如果集群调度器是闭源的,它不会在市场上获得任何牵引力,因此Kubernetes 必须开源。

Levy McNary 则说:“因为开源使它成为标准。一旦成为标准,他们就可以将云服务货币化

没错,K8S 正是通过开源和它的技术实力,获取了大量市场,打败了当年的竞争对手。

在操作系统、数据库领域,这一点表现的更明显,新进这个领域的产品,如果不开源简直就没法生存。按照我的朋友庄表伟所言,这些领域,已经卷到必须要开源了。

陶建辉创办了涛思科技,他做的是时序数据库,在其官网上,是这么写的:

“涛思数据采用 AGPL 许可证,已经将 TDengine 的内核(存储、计算引擎和集群)100% 开源。涛思数据将尽最大努力打造开发者社区,维护这个开源的商业模式,相信不将最核心的代码开源,任何基础软件都将无法赢得市场。涛思数据希望通过开源,快速获得市场反馈,完善产品,完善生态, 而且吸引更多的开发者加入到这个项目中。” 

我相信他说的是真心话。

这很典型地说明了公司开源核心产品的动机:

通过开源赢得用户、赢得市场。
同时设法商业化,盈利。

当然,如果你已经赢得市场了,那就不一定需要开源了。

相信微软在10年内都不会开源Windows。

甲骨文在10年内不会开源Oracle。

五、公司贡献开源

下面我们看看贡献者贡献开源的动机。

除了开源自己的产品,公司还以贡献的方式参与开源,这同样是很值得思索的。

阿里云专家张乎兴2回忆说:

2014 年,我加入阿里巴巴中间件团队,开始接手集团应用容器的维护工作。当时集团的应用容器绝大部分都是基于 JBoss,老旧且无人维护,另外有一小部分跑在 Jetty 和 Tomcat 之上,当时中间件团队维护了 Tomcat 的一个私有分支,最大的目标就是要统一所有集团的应用容器为 Tomcat。而在那之前,我从未接触过 Tomcat 的开发和运维,对我来说,挑战很大。

然而,更大的挑战来自于团队大 leader 提出的,在当时看来几乎是无法实现的目标:成为 Apache Tomcat 的 committer。

要知道,作为 Apache 的核心项目之一,Tomcat 自1999年发布第一版以来,一直是开源界和 Apache 基金会的明星项目,至今仍然在应用容器领域市场占有率保持第一,历经20年发展,依旧热度不减。Tomcat 历经这么多年的发展,却从未出现过一位来自中国的 committer。而我们小团队只有4个人,根本没有任何开源的经验,也完全不知道从何做起。团队 leader 问我们,谁愿意挑战一下的时候,我也没有多想,就承担了下来。

很快,我从修复 bug 开始,第一个 patch 是修复一个 Websocket 测试用例失败的问题,修复该问题涉及到了对代码的一些重构。还记得当时提交之前我非常谨慎,和 leader 一起反复讨论了很多次,终于形成了一个比较满意的方案。提交给 Tomcat 社区之后,很快,社区便有了响应,并合并了我提交的补丁。第一次提交便获得了认可,心里很开心,紧张的情绪也缓解了。看到 Tomcat 的 release note 里面出现了自己的名字,真的非常开心。

“在尝到了贡献的甜头后,团队的目标也有所调整:内部版本的 Tomcat 和开源版本的结构要保持完全一致。这使得合并开源 Apache Tomcat 变得非常容易;内部做的增强也更加方便合并到社区。

道理是非常直白和简单的,有贡献的一面,也有利己的一面,显然,UpStream,自己也会受益良多。

六、个人贡献开源

前面已经讲了很多别人的例子,现在讲一个我个人的例子。

在Github出来的时候(2008),我已经很少写代码了,但我仍然在2023年贡献了一个比较有影响力的项目。

这个项目就是前面提到的core-js,它每个月有 2.5 亿次 NPM下载,GitHub上有 1900 万个仓库依赖它。 

他的作者 Denis 在TOP 1000网站上运行脚本,检测到 52% 的网站使用了它。 

但是他本人却落入了很悲惨的境地,他曾经因为驾驶摩托车撞人导致一死一伤,因为没钱(有钱就可以受害人家属和解),在监狱里呆了10个月。

由于他全职从事开源(也就是 core-js 的开发),他的经济来源主要靠捐赠,刚开始,他每月能收到2500美元,后来只能收到400美元每月。

所以,Denis 才在 2023 年情人节写下了那篇长文,进行哭诉。

我看到后,觉得非常有利于人们理解开源的现状,就把这篇长文翻译出来了,大概3.3万字。

然后,我想,如果这篇翻译能够放在这个项目中,能让更多使用这个项目的中国程序员帮助到他。

于是就提交了这个翻译版。

Denis很乐意看到这点。

LGTM=Looks Good To Me

当然,他还是很谨慎的,在我提交后,他号召懂中文的人评审,大约过了将近一个月,这个PR才被接受。

(其实很少有人真的做了翻译层面的评审,他们更多只是提了点格式上的意见)

我想,我肯定帮助到他了。

现在我们可以看到,不管是个人贡献开源,还是公司贡献开源,主要动机是:

1. 开源是个好东西,如果我们有能力,帮助它。 
2. 我们使用它,改善它,并最好和它保持同步。 
3. 如果做足够多,还会给我们带来其他好处。

七、为什么成立基金会

在2019年ASF成立20周年时,有人访谈了当时8位创始人,其中一位是Randy Terbush。

在问到“是什么原因促使 Apache Group 成立为 ASF?”

他说:

“这其中有很多的原因,如果我没有记错的话,其中的一个因素是希望能够为贡献者和公司提供相应的法律保护,另外的一个原因是希望我们能够获得现金和捐赠,从而能够让我们进入更加良好的发展。总而言之,我们最终的目的是建立一个组织,从而能够支持日益增长的开源开发的参与,以及大量的被采用。” 

另一位创始人Jim则说:

“随着互联网和 web 技术的日益发展,也日渐稳固,我们都意识到需要较为正式法律给我们提供更多的保护。另外还有一个可能原因,当时,IBM 有意采用 Apache HTTPD 作为其 web 服务的基石,IBM 对于‘江湖’气味颇浓的 Apache Group 是有些担心的,这可说是千载难逢的机会,既有形势的需要,又有如此势力雄厚的盟友助阵,所以,我们没用多久就促成了这次成立基金会的事宜。”

创始人Drik说:

“这个时候,IBM 的 Domino WebServer 正在走下坡路,份额急速下降,他们正在研究开源的可行性,看能否切换到 Apache,但是随着 NCSA 退出,Apache 尚没有明确的合法所有人。USL 与 AT&T 的官司对 BSD 的影响才刚刚开始显现……所有的这些事情都聚到一起了,当然,对于我一个欧洲的人来说,美国的诉讼习惯实在是太具有侵略性了……于是,稍作商量,我们便迅速的做出了决定。”

ASF 于 1999 年 6 月 30 日成立时,在官网上有一个公开的声明3,里面更好地阐释了这一点:

Apache 软件基金会将为 Apache 开源软件项目提供组织、 法律和财务支持。 基金会确保 Apache 项目在个人志愿者参与之外的连续性,在良好的基础上提供知识产权和财务支持, 并提供在参与开源项目时限制法律风险的工具。” 

ASF 于 1999 年 6 月 30 日成立时,官网上的通告

基金会是这个目的,捐赠项目者的心态呢?

从下面的例子可以看出,完全吻合。

前面提到的 Envoy 创建者 Matt Klein 回忆:

到 2017 年秋天,有两件事是清楚的。 

1.Envoy 已经超出了 Lyft 所能提供的范围。该项目需要法律、公共关系、营销、活动组织等方面的帮助。

2.我很快就完全倦怠了,需要找出一条可持续发展的道路。 我们最终同意考虑将 Envoy 转交到 CNCF 基金会。

最现实的一点就是,个人可能会对一个项目失去兴趣,公司也一样。而在基金会,项目就有了一个独立的家,如果基金会给力,项目就会活得更久和更好。

基金会的动机很单纯,非常利他:

帮助开源项目、提供多种支持。
让开源项目可持续发展。

八、总结

总结下来,我觉得开源动机有4点:

  1. 做一个好东西。(解决问题,展示能力)

  2. 帮助一个好东西。(善良是灵魂间的桥梁)

  3. 送出一个好东西。(赠送礼物,获得用户)

  4. 获得回报。(赢得声誉、获得市场)

前面3点是最重要的,第4点往往来得自然而然。

用一句话说,就是:

人们总是想做、想用、
想分享、想帮助好东西。

这很人话,如果想说得高大上一点,可以是:

人们渴望创造、体验、分享、回馈优秀和卓越。

“好玩”哪里去了?

那么,我们前面说的“好玩”跑哪里去了?

回看一下,你有没有注意到,上面四点都很好玩?

“好玩”是表面现象,“好玩”的背后是利益。

大自然在造人的时候,做了这样的安排:

凡是能带来利益的,都好玩。

而所有的“好东西”,都是利益。

作者:卫剑钒

关注并回复“清醒”,获取本文PPT版本。


  1. https://mattklein123.dev/2021/09/14/5-years-envoy-oss/ 

  2. https://baijiahao.baidu.com/s?id=1635305073015544451&wfr=spider&for=pc 

  3. https://apache.org/foundation/press/pr_1999_06_30.txt  

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存