toc 目录

管理员 - 1

Object2
Object2 摆烂中
tagHome
arrow_back返回
Object2

开源文化:为什么程序员愿意免费写代码

开源软件支撑着整个互联网的基础设施,但大部分开源贡献者是无偿工作的。这种看似'不合理'的现象背后有着深刻的文化、商业和技术逻辑。本文探讨开源文化的本质和它面临的挑战。

开源文化:为什么程序员愿意免费写代码

开源文化:为什么程序员愿意免费写代码

一个有趣的事实:全球最流行的 Web 服务器是 Apache 和 Nginx,它们都是开源的。全球最流行的编程语言运行时大部分是开源的。全球最流行的容器技术是开源的。全球最流行的大模型有相当一部分是开源的。

互联网的基础设施,绝大部分是程序员免费写出来的。

这看起来很不合理。程序员也是人,也要吃饭,为什么要免费贡献代码?

开源的动机

Programming code on screen

程序员参与开源的动机是多元的。

最纯粹的动机是"痒"。程序员遇到了一个现有工具解决不了的问题,自己写了一个解决方案,顺手开源了。这就像一个人在自家院子里种了一棵果树,果子吃不完,就放在路边让路人自取。

学习和成长也是重要动机。参与开源项目可以接触到高质量的代码、学习优秀的工程实践、和全球的开发者交流。这种学习机会在学校和公司里都很难获得。

声誉和影响力也是驱动力。一个被广泛使用的开源项目的作者,在技术社区会获得很高的声望。这种声望可以转化为职业机会、演讲邀请、商业合作。

有些开源是商业策略的一部分。公司开源一个基础版本,吸引用户和开发者,然后通过商业版本、托管服务、技术支持来收费。这种"开源核心"的商业模式被很多公司采用。

还有些开源是"回馈社区"。开发者在日常工作中大量使用开源工具,觉得应该为社区做些贡献,于是利用业余时间参与开源项目。

开源的治理模式

开源项目有不同的治理模式,每种模式有不同的特点。

独裁模式是最简单的。一个人(或者一个小团队)拥有项目的最终决策权。Linux 内核就是这种模式,Linus Torvalds 对内核的所有变更拥有最终审批权。这种模式决策效率高,但对维护者的压力大。

精英治理模式是另一种常见模式。核心维护者团队共同决策,贡献者通过提交 PR 来参与。大部分中大型开源项目采用这种模式。它的优势是决策质量高(因为决策者都是经验丰富的贡献者),劣势是新人参与的门槛可能较高。

社区治理模式是最民主的。所有贡献者都有发言权,重大决策通过投票决定。Apache 基金会的项目通常采用这种模式。它的优势是包容性好,劣势是决策效率可能较低。

公司主导模式在近年来越来越常见。公司开源一个项目,但核心开发团队是公司的员工。React(Meta)、Go(Google)、Kubernetes(CNCF/Google)都是这种模式。这种模式通常有充足的资源支持,但社区可能对公司的决策方向产生不满。

开源的可持续性危机

开源面临的最大挑战是可持续性。

很多关键的开源项目只有少数几个维护者,他们用业余时间维护着支撑整个互联网的基础设施。当项目变得流行,issue 和 PR 的数量可能让维护者不堪重负。

更糟糕的是,很多使用开源软件的公司没有为开源做出任何贡献。他们享受了开源的便利,但既不贡献代码,也不提供资金支持。这种"搭便车"的行为让开源的可持续性成为一个严重的问题。

Heartbleed 漏洞是一个警钟。这个影响了全球大部分 HTTPS 连接的严重漏洞,存在于 OpenSSL 中。而 OpenSSL 当时只有一个全职开发者,维护着保障全球互联网安全的核心组件。

近年来,一些公司开始为开源项目提供资金支持。GitHub Sponsors、Open Collective 等平台让个人和公司可以直接资助开源开发者。但这还远远不够。

开源商业化

Software development workspace

开源和商业不是对立的。很多成功的公司证明了开源可以赚钱。

Red Hat 是最早的开源商业成功案例。它基于开源的 Linux 发行版提供企业级支持和服务,最终被 IBM 以 340 亿美元收购。

Elastic、MongoDB、Confluent 等公司也走通了类似的路径:开源核心产品,通过企业版功能、托管服务、技术支持来盈利。

云厂商的兴起给开源商业化带来了新的挑战。云厂商可以直接提供开源软件的托管服务,和开源公司竞争。这引发了"开源软件是否应该限制云厂商"的激烈争论。

SSPL、BSL 等新的许可证试图解决这个问题。它们允许用户自由使用软件,但限制云厂商将其作为服务提供。这种做法在社区中引发了争议,有人认为它违背了开源的精神。

开源的价值

抛开商业问题,开源的价值是深远的。

首先是知识共享。开源让全球的开发者可以阅读、学习、改进优秀的代码。这加速了技术的进步,降低了技术传播的成本。

其次是信任和透明。开源软件的代码是公开的,任何人都可以审查。这让用户可以验证软件的安全性和正确性,而不是盲目信任厂商。

第三是协作创新。开源项目汇集了全球开发者的智慧。一个公司可能有几百个工程师,但一个成功的开源项目可能有几千个贡献者。这种协作的创新能力是任何单一公司都无法匹敌的。

Developer coding environment

我的判断

开源是软件行业最重要的创新模式之一。它不会消亡,但需要进化。

可持续性问题需要更好的解决方案。企业应该意识到,支持开源不只是道德义务,也是商业利益。依赖的开源组件如果因为缺乏维护而出现安全漏洞,受害的是企业自己。

对于开发者来说,参与开源是一种有价值的投资。它可以提升技术能力、扩展人脉、增加职业机会。但也要注意边界,不要让开源成为无偿加班的借口。

对于企业来说,建立开源策略是必要的。不只是使用开源,也要贡献开源。这可以提升公司的技术品牌、吸引优秀人才、降低技术风险。

开源的精神是"站在巨人的肩膀上"。这种精神推动了软件行业几十年的繁荣,也将继续推动未来的创新。

吉祥物