写点什么

什么是开源软件和自由软件,你真的了解吗

用户头像
耳东@Erdong
关注
发布于: 3 小时前

作为一个计算机从业者,经常听人讨论开源软件和自由软件,有时候不能准确的描述这二者的区别和联系,今天就来整理一下。

开源软件 Open Source Software

首先需要申明一点,不是公开源代码的软件就是开源软件。


根据 OSI(Open Source Initiative Association) 组织的 OSD 定义,开源软件是一种技术和立场中立的使用许可证约束的开放源代码的软件。


开源软件除了公开源代码,还需要包含 10 个条件


|序号 | 条款 | 简单说明|

| --- | --- | --- |

|1 |Free Redistribution |允许自由地再发布软件|

|2 |Source Code |程序必须包含所有源代码|

|3 |Derived Works |可以修改和派生新的软件|

|4 |Integrity of The Author's Source Code |发布时保持软件源代码的完整性|

|5 |No Discrimination Against Persons or Groups |不得歧视任何个人或团体|

|6 |No Discrimination Against Fields of Endeavor |不得歧视任何应用领域(例如商业)|

|7 |Distribution of License |许可证的发布具有延续性|

|8 |License Must Not Be Specific to a Product |许可证不能针对于某一个产品|

|9 |License Must Not Restrict Other Software |许可证不能限制其他软件|

|10 |License Must Be Technology-Neutral |许可证必须是技术中立的|


开源软件需要保持开放的心态,对任何技术和立场都保持客观公正的态度,而且在开放源代码时,还需要遵循开源许可协议,允许任何人使用、拷贝、修改以及重新发布。开源许可协议主要分为宽松许可协议(Apache、BSD、MIT 等)和严格许可协议(GPL、GPL v3、LGPL、Mozilla 等)两大类。除此之外,一个优秀的可持续发展的开源软件,还需要公开发布项目技术文档和其他材料、二进制文件(可选)等,以及拥有一个开放性的社区,接收用户和开发者的反馈,共同探讨开源软件的发展。这才是一个完整、健康发展的开源软件。

自由软件 Libre Software

自由软件根据自由软件基金会对其的定义,是一类可以不受限制地自由使用、复制、研究、修改和分发的,尊重用户自由的软件。这方面的不受限制正是自由软件最重要的本质,与自由软件相对的是专有软件(英语:proprietary software,一些人也会将其翻译为私有软件、封闭软件),后者的定义与是否收取费用无关,事实上,自由软件不一定是免费软件,同时自由软件本身也并不抵制商业化。所以自由软件的准确描述应该是 Libre Software ,为了和 Free Software 中 Free “免费”的含义分开。


自由软件的定义首次于 1989 年由自由软件基金会发表,根据斯托曼和自由软件基金会的定义,自由软件赋予用户四种自由:


  • 自由之零:无论用户出于何种目的,必须可以按照用户意愿,自由地运行该软件。

  • 自由之一:用户可以自由地学习并修改该软件,以此来帮助用户完成用户自己的计算。作为前提,用户必须可以访问到该软件的源代码。

  • 自由之二:用户可以自由地分发该软件的拷贝,这样就可以助人。

  • 自由之三:用户可以自由地分发该软件修改后的拷贝。借此,用户可以把改进后的软件分享给整个社区令他人也从中受益。作为前提,用户必须可以访问到该软件的源代码。


如果有一款软件的用户具有上述四种权利,那么这款软件就可以算是自由软件。也就是说,用户必须能够自由地、以不收费或是收取合理的散布费用的方式、在任何时间再散布该软件的原版或是改写版,在任何地方给任何人使用。如果用户不必问任何人或是支付任何的许可费用从事这些行为,就表示其拥有自由软件所赋予的自由权利。


自由软件的精神领袖是理查德·马修·斯托曼。他被人称为“最后的真正黑客”,他认为一个好的软件,应该自由自在地让人取用。软件不应该拿来做为相互倾轧、剥削的工具。所以他起草 GNU 通用公共许可证来保障自由软件的自由,并创办了自由软件基金会来贯彻他的理念。

自由软件与开源软件

许多人将开源软件与自由软件视为相同,但若以定义条件而言,自由软件仅是开源软件的一种,也就是自由软件的定义较开源软件更为严格,并非是开放源代码的软件就可称为自由软件,严格地说来开源软件与自由软件是两个不同的概念,只要符合开源软件定义的软件就能被称为开放源代码软件(开源软件)。自由软件是一个比开源软件更严格的概念,因此所有自由软件都是开放源代码的,但不是所有的开源软件都能被称为“自由”。但在现实上,绝大多数开源软件也都符合自由软件的定义。比如,遵守 GPL 和 BSD 许可的软件都是开放的并且是自由的。


如果说“自由软件”会引起误解,(因为英文“Free”一词有“自由”、“免费”的双重含意),那么“开源软件”的名字则会引起的误解则更多。“开源”很容易让人认为是只要把源代码“公开”出来就算是开源了,即“你可以看到源代码”。但是如果用户的自由仍然得不到尊重,那么即使公开源代码也没有意义。有的软件公司只是为了想找用户帮它调试、吸收社区贡献的功能,这样子会破坏了自由软件的原意。一个例子是 Tivo 公司生产的机顶盒。虽然它基于 GNU/Linux,TiVo 公司也按照许可证发布了源代码,但是却禁止用户在机顶盒上运行自己的程序,或重新安装系统。


自由软件的原意就是要给予用户运用软件的自由,这个‘自由’就是自由软件的精神所在。但是一些商业化开放的源代码却故意忽略了这个最重要的精神,反而无法让用户体认到‘自由’的真意,那么开源这一个替代自由软件的辞句反而把自由的原意除去了。


自由软件的精神领袖理查德·马修·斯托曼很反对人们把开放源代码和自由软件混为一谈。

自由软件与免费软件

免费软件(英语:free ware)是一种不须付费就可获取的软件,但是通常有其他的限制,用户并没有使用、复制、研究、修改和分发的自由。该软件的源代码不一定会公开,有些免费软件即使所谓开源但是因为有会限制用户软件自由如限制用户修改重分发或者限定/限制特定人群使用等行为的限制性条款存在并不是自由软件。


发布于: 3 小时前阅读数: 6
用户头像

耳东@Erdong

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
什么是开源软件和自由软件,你真的了解吗