开源软件是指公开可用的计算机源代码,其特性允许任何人都可以查看、修改和分发开源代码。其中,开源社区使用分散和协作的方式进行开源软件的开发。因此,与单个公司或个人开发的软件相比,开源软件更便宜、更灵活。如今,开源软件已被公司和个人用户广泛使用,每年都会创建数千个新的开源项目。在本文中,我们将讨论开源开发模式、自由、闭源和开源软件之间的区别,以及为开源社区中的趋势。
*本文来源于TARS Ambassador Isabella Ferreira文章:《What is the open source development model and what are the characteristics of open source contributors?》
开源社区有着一套用于开发开源软件项目的过程,也被称为开源开发模型[6]。首先,该过程是由一个新想法开始的,可以是一个新项目、新特性或是对现有项目的提升。然后,基于这个被提议的功能,社区里志愿的开发人员完成相关开发并创建一个对现有项目的合并请求。接着,社区中更有经验的人(通常是维护者或审查者)将审查被提交的代码更改并决定是否应将其合并到代码的主要版本中。审阅者/维护者也可能要求作出一定的修改。由社区决定在软件发布中包含该提议功能后,当前版本将作为一个开发版本来发布,即使它可能包含已知和未知的bugs。然后,该软件将由社区进行测试,社区通过邮件列表或其他讨论渠道(例如Slack)讨论该软件,并提供反馈、创建错误报告或提交对遇到的错误的修复。项目成员和维护人员会记录并考虑社区反馈并改进实施,然后将提供新的开发版本。这个反馈循环一般需要发生多次,直到项目成员认为软件的执行足够稳定。当该执行能够作为稳定版本发布时,开发周期会随着开发版本(也称为开发树)继续进行,直到有更新的稳定版本可用。此外,开源软件是在开源许可下发布的,因此任何人都可以查看、修改和分发源代码。
目前大多数开源项目都托管在GitHub上,一个分布式版本控制和源代码管理平台。GitHub 还允许开源项目跟踪错误、功能请求、文档和任务。通过访问GitHub,用户可以访问源代码存储库,还可以通过开发新代码、修复错误或编写文档等方式为开源项目做出贡献。著名的开源项目有Linux、 Kubernetes和TARS。
如今,开源软件的使用比以往任何时候都多。开源项目可能会捐赠给开源基金会,这些非营利组织旨在支持新的开源项目,整合相关的开源项目,为项目提供业界的认可,通过治理促进开源项目的发展,并尽量减少潜在失败的风险。一个很好的例子是2018年捐赠给Linux基金会的TARS项目。在LF和广大开源社区的支持下,TARS项目在 2020 年发展成为TARS 基金会。
自由软件运动由Richard Stallman 于 1983 年通过GNU 项目发起。这个想法是用户应该可以自由地查看源代码、修改并重新分发它。相反,专有或闭源软件是只有所有者才有权访问源代码的软件。闭源的软件不能被外界合法更改或复制,通常付费用户才能使用该软件。
然而,自由软件长期以来被误解为人们认为自由软件意味着免费拥有它,也就是无需付费购买。事实并非如此!自由软件意味着开发者能够以自己想要的方式使用软件。为了解决这个误解,自由软件被开源取代,开源是一个专注于源代码的术语。开源一词是由 Christine Peterson 创造的,他在一个致力于使开发模型更广泛的工作组中提出了用开源软件替换自由软件的想法。该小组希望每个人都知道软件在共享、协作和开放时会更好发展,能够变得更灵活、更便宜,并且没有供应商锁定。
1997 年,作为该工作组成员之一的 Eric Raymond 发表了著名的论文《大教堂与集市》 ,介绍了如何创建优秀的开源软件。到 1998 年,开源计划(OSI) 被创建并正式定义了开源术语及其定义。
在选择开源或是闭源软件时考虑它们的特点是很有必要的,我们在下面列出了前 5 个差异 [3]:
- 价格:开源是没有许可或使用费,而闭源的使用成本会取决于软件的规模等。
- 自由定制:开源是完全可定制的,但具体取决于开源许可证。然而,在封闭源代码中,用户需要向销售软件的公司请求更改。
- 支持:流行的开源软件(如Red Hat)有很多支持。除此之外,用户可以在用户论坛和邮件列表上找到社区的帮助。在闭源代码中,通常有一个专门的支持团队,支持取决于服务水平协议 (Service-level agreement; SLA)。
- 安全性:开源软件有一个完整的社区来审查代码,这使得错误很快被发现并改正。在闭源代码中,软件分销商负责修复发现的错误。
- 供应商锁定:开源没有供应商锁定。然而,在闭源代码中,使用专有软件要求大量投资,因此更换到不同的供应商可能会花费很多钱。
与闭源软件相比,开源具有许多优势也被更广泛地使用。根据2021年 Octoverse报告,2021 年有 7300 万以上的开发者使用了 GitHub 平台,其中 1600 万以上是新用户。
图 1 显示了每个国家的项目数量。在2017年11月,在Mombach 等作者进行的一项关于5,388 个项目地分析中呈现这些项目分布在超过 77 个国家。
这些年来,中国的项目一直在显着增长。从 2012 年到 2018 年,Linux 基金会的中国会员增加了 400% 以上 [4]。此外,中国公司现在在云原生计算基金会托管的项目的贡献排名第三,仅次于美国和德国。作为中国项目成长的一个例子, TARS 过去一年贡献者数量增加了 13%,提交数量增加了 34.23%。
图 1:每个国家/地区的 GitHub 项目数量 [1]
同样,2021 年 GitHub 上的大多数活跃用户来自北美和亚洲(见图 2)。虽然北美的活跃用户数量与 2020 年相比下降了 2.3%,但亚洲的活跃用户数量增加了 0.3%。
关于 GitHub 用户,94% 的开源用户是男性,只有 6% 的开源贡献者是女性。根据一项开源调查 [5],与男性相比,为开源做出贡献的女性人数非常少,因为女性更有可能遇到让她们感到不受欢迎的语言或内容以及刻板印象。此外,女性也比男性更有可能向她们认识的人寻求帮助,而不是在公共论坛或渠道(如在开源软件中)寻求帮助。
图 2:活跃用户的地理分布,来自2021 年 GitHub Octoverse报告
除了活跃用户数量众多,许多公司也为开源做出了贡献。根据开源指数(open source index),截至 2022 年 1 月,谷歌、微软和红帽是拥有员工为开源做出贡献的前 3 名组织(详见下图)。
图 3:组织按员工年初至今在 GitHub 上的开源贡献量排名,摘自Open Source Index。
开源软件比闭源软件有很多优势,其中包含的层面有价格、自由定制、技术支持、安全性以及供应商锁定。此外,美国和中国是 2021 年开源的主要贡献者,尤其中国项目一直在增长,而且中国开发者将成为国际开源软件组织的重要力量之一。
文献参考
[1] Mombach, Thais, et al. "Open source development around the world: A comparative study." arXiv preprint arXiv:1805.01342 (2018).
[2] https://medium.com/intuit-engineering/open-source-where-are-the-women-ae20623529ca#:~:text=Currently, open source is dominated,tech industry (25%)¹.
[3] https://www.synopsys.com/glossary/what-is-open-source-software.html
[4]
https://merics.org/en/short-analysis/china-bets-open-source-technologies-boost-domestic-innovation
[5] https://www.toptal.com/open-source/is-open-source-open-to-women
[6] http://aaaea.org/Al-muhandes/2008/February/open_src_dev_model.htm
TARS基金会是Linux基金会下的非营利性、微服务基金会,致力于建设一个强大而灵活的微服务生态系统。无论你在哪个行业,无论你使用什么技术栈,这里能助你快速实现你的创意。