免费和开源软件的区别

介绍

软件开发的一个方面,很多人往往忘记了软件应该如何获得许可。 软件许可证规定代码如何被许可人(最终用户)使用和分发,这可能会对技术得到采用的程度产生重大影响。 大多数现代软件都是以专有许可证出售的,允许出版商或创作者保留软件的知识产权。

然而,还有另一种观点认为这会把不必要的控制权交给软件出版商。 通过阻止被许可人复制和更改软件的源代码,这个想法认为,专有软件发行商扼杀了创新并阻碍了新技术的潜在增长。 这种立场激发了许可证的创建,授予用户研究,更改和分享软件源代码的权利。 以这种方式获得许可的软件通常以“自由软件”或“开放源代码软件”这两个名称中的任何一个来命名。

一般来说,这两个术语都指的是同样的东西:软件对于如何使用的限制很少。 从支持者的角度来看,免费和开放源代码软件比专有软件更安全,更高效,工作更可靠。 但是,为什么我们有同样的标签呢? 答案涉及到一些历史,对细微差别的理解,形成了两个独立但密切相关的运动。

一点背景

应该允许一个软件工作人员查看,编辑和共享其源代码而没有法律后果的想法并不是什么新鲜事。 在二十世纪七十年代之前,软件通常与其源代码一起分发,原因是软件通常是硬件特定的,最终用户将不得不修改它以在特定机器上运行或添加特殊功能。

大部分在这个时候与电脑互动的人都是在严格的学术或研究环境下进行的。 这意味着计算资源通常是共享的,并且改变软件以创建更高效​​的工作流程或更可靠的解决方案受到了广泛的鼓励。 例如,加州大学伯克利分校的Project Genie开发了伯克利分时系统 - 一种从零开始构建的时间共享操作系统 - 通过破坏实验室SDS 930计算机的源代码。

然而,随着软件的生产变得越来越复杂和昂贵,软件公司想方设法阻止源代码的无限分享,以保护他们的收入来源,并且拒绝竞争者获得其实施。 他们开始对他们的产品(包括版权和租赁合同)进行法律限制,并开始根据专有许可分发他们的产品。 到二十世纪七十年代末,大多数软件公司已经停止运行包含源代码的软件。 这导致许多长期的电脑用户发出不满,他们的精神最终将成为自由软件运动的基础。

自由软件的开始

自由软件运动在很大程度上是理查德·斯托曼的思想。 Stallman在20世纪70年代初开始了他的计算机科学研究,之后才开始获得专利软件许可证,直到20世纪80年代初,他在麻省理工学院人工智能实验室担任研究员。 十多年来,他一直是学术黑客社区的成员,他对专有软件的传播感到沮丧,并认为这侵犯了人们对创新和改进现有软件的权利。

1983年,Stallman发起了GNU项目 - 努力创建一个完整的操作系统,为用户提供查看,更改和共享源代码的自由。 Stallman在“ GNU宣言”中阐述了他的项目动机。 其中他表示,他的信念是专有许可阻止了社区驱动的软件开发,有效地减少了创新,削弱了技术的进步。

据Stallman说,这给用户和开发人员带来了不公平的负担,否则这些用户和开发人员可以改变代码以适应自己的需要,或者改变代码来提供新的功能。 因此,GNU项目既可以被看作是对专有软件兴起的回应,也可以被看作是自由共享源代码和协作软件开发时代的回应。

1985年,Stallman以GNU项目为基础 ,成立了自由软件基金会 (FSF),这是一个致力于向更广泛的公众推广自由软件概念的非营利组织。 Stallman后来还开发了GNU通用公共许可证,这是一种保证最终用户自由运行,查看和共享源代码的权利的软件许可证。

根据FSF的说法,对于被认为是真正“免费”的软件,其许可证必须保证其用户有四项基本的自由:

  • 出于任何目的,随意运行程序的自由。
  • 学习程序如何工作的自由度,并对其进行修改,以便随心所欲地进行计算。 访问源代码是一个先决条件。
  • 自由重新分配副本,所以你可以帮助你的邻居。
  • 将修改版本的副本分发给其他人的自由。 通过这样做,您可以让整个社区有机会从您的更改中受益。 访问源代码是一个先决条件。

FSF认为任何不符合这些标准的软件都不是非免费的,因此是不道德的。

开源的崛起

Stallman选择了“自由软件”这个标签,将用户可以随意更改和共享源代码的想法联系起来。 这导致了多年来的一些混淆,因为许多人认为“自由软件”是指任何可以零成本获得的软件(将被更准确地标记为“免费软件”或“共享软件”)。 FSF着名的解释了“免费言论自由,而不是自由啤酒”这一说法。

但到了90年代后期,一些GNU和Linux爱好者担心这种双重含义会导致很大一部分用户错过自由软件背后的理念及其相对于专有代码的优势。 FSF也因其对各种专有软件的强硬的道德立场而闻名。 一些自由软件倡导者担心这种做法对商业利益太不友好,最终会阻碍自由软件运动的传播。

大教堂和集市

1997年,自由软件倡导者和开发者Eric S. Raymond写了“ The Cathedral and the Bazaar” ,这是一篇广泛引用的文章,比较了各种自由软件项目中使用的两种不同的开发模式。 “大教堂”指的是一种自上而下的开发模式,其中由开发人员生成代码,例如GNU Emacs的开发。 另一方面,“市集”是指通过互联网公开开发代码的方法,Linux内核开发的情况就是如此。

文章的中心论点是Bazaar模型本质上更有效地发现和解决软件缺陷,因为更多的人能够查看和试验源代码。 因此,雷蒙德认为,利用社区驱动的自下而上的开发过程会产生更安全,更可靠的软件。

部分为了响应“大教堂”和“集市”中提出的思想,Netscape于1998年初发布了其Communicator网络浏览器的源代码作为免费软件。(Communicator源代码稍后将成为Mozilla FireFox 1.0的基础)。 受到Netscape在源代码发布中看到的商业潜力的启发,一群自由软件爱好者(包括Raymond,Linus Torvalds,Philip Zimmerman等)试图重塑自由软件运动,并将其重点从伦理或哲学转向动机。 该组织选择“开源”作为自由共享软件的标签,希望能够更好地体现合作社区驱动的开发模式的商业价值。

此后不久,由雷蒙德和布鲁斯·佩伦斯(Bruce Perens)创立的开放源码倡议 (OSI)鼓励开放源代码原则的使用。 OSI还开发了开放源代码定义 - 一个软件许可证必须遵守的十个原则的列表,以便将其视为开放源代码:

  1. 免费再分配 - 许可证不得限制任何一方出售或赠送软件作为包含来自多个来源的程序的较大软件分发的组件。
  2. 源代码 - 该程序必须包含源代码,并且必须允许以源代码和编译形式进行分发。
  3. 派生作品 - 许可证必须允许修改和衍生作品,并且必须允许它们按照与原始软件的许可证相同的条款进行分发。
  4. 源代码的完整性 - 许可证可以限制源代码以修改后的形式发布,只有当许可证允许在源代码中分发“修补文件”以在构建时修改程序。
  5. 不得歧视个人或团体 - 许可证不得歧视任何人或团体。
  6. 不得歧视奋进领域 - 许可证不得限制任何人在特定领域内使用该程序。
  7. 许可证的分发 - 程序附带的权利必须适用于程序被重新分发的所有人,而不需要这些方执行额外的许可证。
  8. 许可证不得特定于产品 - 程序附带的权利不得依赖于程序作为特定软件分发的一部分。
  9. 许可证不得限制其他软件 - 许可证不得限制与许可软件一起分发的其他软件。
  10. 许可证必须是技术中立的 - 许可证的提供不得以任何个人技术或界面风格为依据。

免费和开源软件的区别

就大多数人而言,“自由软件”与“开放源码软件”之间的意义差异可以忽略不计,而来自于方法或哲学的细微差别。 正如开放源代码计划(Open Source Initiative)所看到的那样,这两个术语都意味着同样的东西,它们可以在任何情况下互换使用。 他们只是更喜欢“开源”标签,因为他们认为它提供了一个更清晰的软件描述和创作者应该如何使用它的意图。

然而,对于“自由软件”阵营来说,“开源”并没有充分表达移动的重要性,以及专有软件带来的潜在的长期社会问题。 自由软件基金会认为,OSI太关心提升非专有软件的实际效益(包括其盈利能力和社区驱动的开发模式的效率),而不关心限制用户权利的道德问题根据自己的条件改变和改进代码。

一个给定的软件是否是免费或开放源代码取决于它分发哪个许可证,以及该许可证是由开放源代码计划,自由软件基金会还是两者批准。 哪个组织批准了哪些许可证之间有很大的重叠,但是有一些例外。 例如,NASA开源协议是OSI认可的许可证,FSF认为这个许可证限制性太强。 因此,FSF不鼓励任何人使用根据该许可证分发的软件。 一般来说,如果可以将其描述为自由软件,那么很有可能符合开源软件的定义。

替代名称

多年来,这种软件的其他几个名字已经被提出来结束这场辩论。 “自由和开源软件” - 经常缩写为“FOSS” - 是使用最广泛的一种,被认为是两者之间的安全中立。 “自由软件”这个术语(“自由软件”来源于几种罗曼语言,大致意思是“自由状态”)已经获得了自己的一个后续,这样,首字母缩略词“FLOSS”(意为“自由/自由开源软件)也变得相当普遍。

应该指出的是,免费和开源软件都与公有领域的软件截然不同。 免费和开放源代码软件通过授权来定义自由,而公共领域软件可能会遵循某些相同的优点,但是不属于许可系统。 免费和开放源代码软件的一个重要区别是,基于免费或开放源代码的作品也必须以FOSS许可证发布。 发布到公共领域的软件没有这个要求。

公有领域软件的另一个问题是因为并不是所有的国家都承认非版权内容。 这使得一个软件在公共领域的全球公认的声明是不可能的。 因此FSF和OSI都不鼓励开发者将软件发布到公有领域。

结论

“自由软件”和“开放源代码软件”这两个术语在大多数情况下是可以互换的,而且某个人是否偏好于另一个,通常是语义学或哲学观。 但是,对于许多希望开发软件并将其推向公众的程序员,或者希望改变人们对技术进行交互的方式的活动人士来说,这种差异可能是非常重要的。 因此,在发布新软件时,仔细权衡不同许可证的利弊(包括专有许可证),并选择最适合您特定需求的软件。

如果您有兴趣了解哪些软件许可适用于您的下一个项目,自由软件基金会的许可列表提供了免费和非免费许可的详细说明。 另外,开放源代码计划的许可和标准页面也可能是有意义的。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏