开源与闭源的 5 个最大区别-程序员宅基地

技术标签: python  java  人工智能  编程语言  大数据  

d28dd2b8c63b721d226f7604fbf8274b.gif

转载自|TARS 基金会
作者 | Isabella Ferreira

开源软件是指公开可用的计算机源代码,其特性允许任何人都可以查看、修改和分发开源代码。其中,开源社区使用分散和协作的方式进行开源软件的开发。

因此,与单个公司或个人开发的软件相比,开源软件更便宜、更灵活。如今,开源软件已被公司和个人用户广泛使用,每年都会创建数千个新的开源项目。

在本文中,我们将讨论开源开发模式、自由、闭源和开源软件之间的区别,以及开源社区中的趋势。

什么是开源模式

开源社区有着一套用于开发开源软件项目的过程,也被称为开源开发模型[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 个区别


在选择开源或是闭源软件时,考虑它们的特点是很有必要的,我们在下面列出了前 5 个差异[3]:

1、价格:开源是没有许可或使用费,而闭源的使用成本会取决于软件的规模等。

2、自由定制:开源是完全可定制的,但具体取决于开源许可证。然而,在封闭源代码中,用户需要向销售软件的公司请求更改。

3、支持:流行的开源软件(如 Red Hat)有很多支持。除此之外,用户可以在用户论坛和邮件列表上找到社区的帮助。在闭源代码中,通常有一个专门的支持团队,支持取决于服务水平协议 (Service-level agreement; SLA)。

4、安全性:开源软件有一个完整的社区来审查代码,这使得错误很快被发现并改正。在闭源代码中,软件分销商负责修复发现的错误。

5、供应商锁定:开源没有供应商锁定。然而,在闭源代码中,使用专有软件要求大量投资,因此更换到不同的供应商可能会花费很多钱。

谁在为开源做贡献

与闭源软件相比,开源具有许多优势也被更广泛地使用。根据 2021 年  Octoverse 报告,2021 年有 7300 万以上的开发者使用了 GitHub 平台,其中 1600 万以上是新用户。

图 1 显示了每个国家的项目数量。在 2017 年 11 月,在 Mombach 等作者进行的一项关于 5,388 个项目地分析中呈现这些项目分布在超过 77 个国家。

这些年来,中国的项目一直在显着增长。从 2012 年到 2018 年,Linux 基金会的中国会员增加了 400% 以上 [4]。此外,中国公司现在在云原生计算基金会托管的项目的贡献排名第三,仅次于美国和德国。作为中国项目成长的一个例子, TARS 过去一年贡献者数量增加了 13%,提交数量增加了 34.23%。

2675910bdcece7bd7ced1f88b2e6a335.png
图 1:每个国家/地区的 GitHub 项目数量 [1]

同样,2021 年 GitHub 上的大多数活跃用户来自北美和亚洲(见图 2)。虽然北美的活跃用户数量与 2020 年相比下降了 2.3%,但亚洲的活跃用户数量增加了 0.3%。

关于 GitHub 用户,94% 的开源用户是男性,只有 6% 的开源贡献者是女性。根据一项开源调查 [5],与男性相比,为开源做出贡献的女性人数非常少,因为女性更有可能遇到让她们感到不受欢迎的语言或内容以及刻板印象。此外,女性也比男性更有可能向她们认识的人寻求帮助,而不是在公共论坛或渠道(如在开源软件中)寻求帮助。

0977e0f3cb62dab39791ca3118f659e8.png
图 2:活跃用户的地理分布,来自 2021 年 GitHub Octoverse 报告

除了活跃用户数量众多,许多公司也为开源做出了贡献。根据开源指数(open source index),截至 2022 年 1 月,谷歌、微软和红帽是拥有员工为开源做出贡献的前 3 名组织(详见下图)。

96742422377f3cf83dd4969ddf81474c.png
图 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-engine‍ering/open-source-where-are-the-women-ae20623529ca
[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


腾源会是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。

8567dca6da40bccaec793a38c0721881.png

欢迎关注「腾源会」公众号,期待你的「在看」

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/TCOS001/article/details/124701441

智能推荐

js获取当前Unix时间戳_js unix时间戳-程序员宅基地

文章浏览阅读1.1w次。JavaScript 获取当前时间戳:第一种方法:var timestamp = Date.parse(new Date());第二种方法:var timestamp=new Date().getTime();第三种方法:var timestamp = (new Date()).valueOf();第一种:获取的时间戳是把毫秒改成000显示,_js unix时间戳

Chrome浏览器各种文件的存放路径汇总_chrome 浏览器 网页 pdf 文件 保存在哪里-程序员宅基地

文章浏览阅读5.1k次。2021-03-18首次编辑Profile文件什么是Profile文件?chrome://version可以查看 个人资料路径书签文件的存贮路径/Users/username/Library/Application Support/Google/Chrome/Default/Bookmarks扩展插件存放位置/Users/username/Library/Application Support/Google/Chrome/Default/Extensions..._chrome 浏览器 网页 pdf 文件 保存在哪里

黑马程序员Java Swing笔记分享(AWT篇)_黑马程序员awt代码-程序员宅基地

文章浏览阅读1.4k次,点赞5次,收藏39次。本文章为Java Swing的笔记分享,这一篇就够了_黑马程序员awt代码

IDE到底是什么?——详细且通俗的解释-程序员宅基地

文章浏览阅读2.5k次,点赞26次,收藏24次。一.简介1.概念:集成(简称:IDE;英文名:Integrated Development Environment )是用于提供程序开发环境的,一般包括编辑器、和等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。具备这一特性的软件或者软件套(组)都可以叫集成开发环境。不理解的小朋友也没事的,就一句话总结:IDE就是可以给我们提供很多必要工具,把一堆工具集成起来,变成了一个软件,我们可以在上面开发各种程序。可以类比成一个医药箱~~~2.举例:如的系列等。_ide

app加急审核-程序员宅基地

文章浏览阅读55次。原文地址:http://www.cnblogs.com/Twisted-Fate/p/4915184.html最近公司app由于疏忽审核被拒绝了,但是计划是最近两天上线时间紧急,希望能快速审核上线,了解到淘宝里面有加速商店,但是价格真是黑心,首次上线12000元,APP若已经上线的更新5999,据网上了解他们也是编写加急理由,已经无法忍受这种坑爹的赚钱方式,总结了一些加急经历的给与建议,..._加急审app

linux 中的source命令_linux中的source指令-程序员宅基地

文章浏览阅读2.1k次。linux 中的source命令source命令是bash中的内建命令,它等同于点命令(.),用于读取和在当前shell环境中执行指定文件中的命令,执行完毕之后退出码为该文件中的最后一个命令的退出码,指定的文件可以没有执行权限(没有权限是指该文件没有rwx中x的权限,也就是可执行到权限,这里到意思是说,即使该文件没有可执行权限,通过source也可以执行他)。在当前shell中执行(s_linux中的source指令

随便推点

c++基础-继承与派生,定义基类person和公有派生类student_c++定义person类-程序员宅基地

文章浏览阅读4.1k次,点赞6次,收藏33次。①定义基类person,数据成员name,sex,age,构造函数,析构函数,输出name,sex,age的函数display()。②定义公有派生类student,数据成员:num,构造函数,析构函数,输出name,sex,age,num的函数display()。③ 主函数定义并使用student 对象stu。#include<iostream>#include<stri..._c++定义person类

Unity Inspector面板只读属性ReadOnly_unity readonly-程序员宅基地

文章浏览阅读5.8k次。public class ReadOnlyAttribute : PropertyAttribute{}[CustomPropertyDrawer(typeof(ReadOnlyAttribute))]public class ReadOnlyDrawer : PropertyDrawer{ public override float GetPropertyHeight(S..._unity readonly

Java 拷贝对象集合属性 集合泛型不一致 也可拷贝_java集合泛型不一样数据互传-程序员宅基地

文章浏览阅读1.7k次。Demo 对象如图我们同时创建三个相同属性Vo对象当我们使用BeanUtils进行拷贝时,会发现这样的问题public static void main(String[] args) { Student student = new Student(); student.setStudentName("大明"); List<Student> studentList = new ArrayList<>(..._java集合泛型不一样数据互传

IM系统:消息推送及离线存储_android 存储推送消息-程序员宅基地

文章浏览阅读2.2k次,点赞5次,收藏7次。一、服务端维护每条消息对用户的送达状态 二、利用标号标记最新已读消息_android 存储推送消息

五分钟带你学会Python网络爬虫_网络爬虫python教学(1),2024年最新腾讯Python面试题社招-程序员宅基地

文章浏览阅读901次,点赞18次,收藏6次。driver = webdriver.PhantomJS(desired_capabilities=headers) # 封装浏览器信息。# driver.save_screenshot(‘1.png’) # 截图保存。# data = driver.page_source # 获取网页文本。driver.get(url) # 加载网页。

用区块链时,你要考虑哪些问题?-程序员宅基地

文章浏览阅读208次。要说区块链行业,最赚钱的项目,估计不少都会说是炒币。虽然比特币一直都是毁誉参半,但支撑其发展的底层技术区块链却日益得到各界认可和重视。2018 开年,区块链受到的追捧再次急遽升级。不仅是小型初创企业,腾讯、阿里、百度、京东等巨头公司也都纷纷加码对区块链的投入。区块链每天都在想方设法形成新的行业和企业应用,不用多久这项技术将无处不在。未来,包括初创企业、学术机构、开源机构、联盟和金融机构等都会参与到..._区块链系统安全性很高,是否考虑数据迁移问题

推荐文章

热门文章

相关标签