免费软件与开源软件的区别

简介

软件开发中许多人往往忘记的一个方面是软件应该如何许可。软件许可证规定了被许可人(最终用户)如何使用和分发代码,这可能对技术的广泛采用产生重大影响。大多数现代软件是在专有许可下销售的,该许可允许发行者或创建者保留软件的知识产权。

然而,还有另一种观点认为,这让软件发行商获得了不必要的控制权。这种想法认为,通过阻止被许可方复制和更改软件的源代码,专有软件发行商扼杀了创新,阻碍了新技术的潜在增长。这一立场激发了许可证的创建,这些许可证授予用户根据自己的喜好学习、更改和共享软件源代码的权利。以这种方式获得许可的软件通常有两个名称:自由软件开放源码软件

从广义上讲,这两个术语指的是同一件事:对如何使用它几乎没有限制的软件。从其支持者的角度来看,自由和开源软件都比专有软件更安全,更有效,工作更可靠。但是,为什么我们对同一件事有两个标签?答案涉及一点历史,以及对形成两个独立但密切相关的运动的细微差别的理解。

小背景

允许使用软件的个人查看、编辑和共享其源代码而不承担法律后果的想法并不新鲜。在20世纪70年代之前,软件通常与其源代码一起分发,原因是软件通常是特定于硬件的,最终用户必须对其进行修改才能在其特定的机器上运行或添加特殊功能。

大多数在这个时候与计算机互动的人都是在严格的学术或研究环境中进行的。这意味着计算资源经常是共享的,并且广泛鼓励更换软件以创建更高效的工作流程或更可靠的解决方案。例如,加州大学伯克利分校的精灵项目通过黑客攻击实验室的SDS930计算机的源代码,开发了伯克利分时系统--一个从头开始构建的分时操作系统。

然而,随着软件的生产变得更加复杂和昂贵,软件公司想方设法停止肆无忌惮地共享源代码,以保护他们的收入来源,并阻止竞争对手获得他们的实现。他们开始对自己的产品进行法律限制,包括版权和租赁合同,并开始按照专有许可销售产品。到20世纪70年代末,大多数软件公司已经停止发布包含源代码的软件。这导致许多长期的计算机用户表达了他们的不满,他们的精神最终形成了自由软件运动的基础。

自由软件的开端

自由软件运动很大程度上是理查德·斯托曼的主意。斯托曼在20世纪70年代初开始学习计算机科学,当时专有软件许可证还没有兴起,他在麻省理工学院人工智能实验室担任研究员,直到20世纪80年代初。作为学术黑客社区的一员,他已经有十多年的时间了,他对专有软件的传播感到沮丧,并认为这侵犯了人们创新和改进现有软件的权利。

1983年,Stallman启动了GNU项目,旨在创建一个完整的操作系统,为用户提供查看、更改和共享源代码的自由。斯托尔曼在GNU Manifesto.]中阐明了他对该项目的动机他在书中表示,他坚信专有许可阻碍了社区驱动的软件开发,有效地孤立了创新,削弱了技术的进步。

根据Stallman的说法,这给用户和开发人员带来了不公平的负担,否则他们将能够更改代码以满足自己的需求,或者更改代码以提供新功能。因此,GNU项目既可以被视为对专有软件兴起的回应,也可以被视为对前一个免费共享源代码和协作软件开发时代的召回。

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

根据FSF的说法,要想让一款软件被认为是真正的自由,其许可证必须保证其用户享有四项基本自由:

  • 为任何目的,随心所欲地运行程序的自由。
  • 自由研究程序的工作方式,并对其进行更改,使其按您的意愿进行计算。访问源代码是实现这一点的前提条件。
  • 重新分发副本的自由,以便您可以帮助您的邻居。
  • 将您的修改版本的副本分发给他人的自由。通过这样做,您可以让整个社区有机会从您的更改中受益。访问源代码是实现这一点的前提条件。

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

开源崛起

Stallman选择了)。FSF曾用一句名言来解释这个名字的选择:把自由想象成言论自由,而不是免费啤酒。

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

大教堂和集市

1997年,Eric S. Raymond是自由软件的倡导者和开发者,他写了《大教堂和集市》,这是一篇被广泛引用的文章,比较了各种自由软件项目中使用的两种不同的开发模型。大教堂指的是一种自上而下的开发模型,其中一个专属的开发人员团队生成代码,GNU Emacs的开发就是一个例子。另一方面,集市指的是一种在互联网上公开开发代码的方法,就像Linux内核的开发一样。

这篇文章的中心论点是,Bazaar模型在发现和解决软件错误方面天生更有效,因为更多的人能够查看和试验源代码。因此,雷蒙德认为,利用社区驱动的、自下而上的开发过程可以产生更安全、更可靠的软件。

作为对《大教堂》和《芭莎》中提出的想法的部分回应,网景公司于1998年初以免费软件的形式发布了其通信器网络浏览器的源代码。(通信器源代码后来构成了Mozilla Firefox1.0的基础)。受Netscape在此次源代码发布中看到的商业潜力的启发,一群自由软件爱好者(包括Raymond、Linus Torvalds、Philip Zimmerman和其他许多人)试图重塑自由软件运动的品牌,并将其重点从伦理或哲学动机转移。该组织选择开源作为其免费共享软件的标签,希望它能更好地反映协作的、社区驱动的开发模式的商业价值。

此后不久,Raymond和Bruce Perens成立了Open Source Initiative(OSI),以鼓励使用这个新术语并传播开源原则。OSI还制定了开源定义--列出了软件许可证必须遵守的十项原则,以使其被视为开源:

1.免费再分发 -许可证不得限制任何一方将软件作为包含来自多个来源的程序的更大软件分发的组件进行销售或赠送。 2.源代码 -程序必须包括源代码,并且必须允许以源代码和编译形式分发。 3.派生作品 -许可证必须允许修改和派生作品,并且必须允许在与原始软件的许可证相同的条款下分发它们。 4.作者源代码的完整性 -只有在许可证允许分发带有源代码的补丁文件以在构建时修改程序的情况下,许可证才可以限制源代码以修改的形式分发。 5.不得歧视个人或团体 --许可证不得歧视任何人或团体。 6.不歧视奋进领域 -许可证不得限制任何人在特定努力领域使用该计划。 7.许可证的分发 -程序附带的权利必须适用于程序被重新分发到的所有人,而不需要这些各方执行额外的许可证。 8.许可证不得特定于产品 -程序的附加权利不得取决于该程序是特定软件分发的一部分。 9.许可证不得限制其他软件 -许可证不得对随许可软件一起分发的其他软件施加限制。 10.许可证必须是技术中立的 -许可证的任何条款不得基于任何单独的技术或界面风格。

自由软件与开源软件的区别

对大多数人来说,自由软件开源软件在含义上的区别是微不足道的,只是在方法或理念上略有不同。正如开放源码组织认为的那样,这两个术语的含义是一样的,它们几乎可以在任何上下文中互换使用。他们更喜欢开源这个标签,因为他们相信这个标签能更清楚地描述软件及其创建者应该如何使用软件的意图。

然而,对于),而不够关注限制用户根据自己的条件更改和改进代码的权利的伦理问题。

给定的软件是免费的还是开源的,取决于它是在哪种许可证下分发的,以及该许可证是由开放源码倡议组织、自由软件基金会还是两者共同批准的。哪些许可证是由哪个组织批准的,有很多重叠之处,但也有一些例外。例如,NASA开放源码协议是OSI批准的许可证,FSF认为它限制太多。因此,FSF不鼓励任何人使用在该许可证下分发的软件。但总的来说,如果它可以被描述为自由软件,它很有可能也符合开源软件的定义。

替代名称

多年来,这类软件的其他几个名称已经被提出,以结束这场辩论。)已经有了自己的追随者,以至于首字母缩写)也变得相当普遍。

应当指出,自由软件和开放源码软件都有别于公有领域的软件。自由和开源软件通过其许可来定义其自由,而公共领域软件可能坚持一些相同的优点,但通过脱离许可制度来做到这一点。自由和开放源码软件的一个重要区别是,基于自由或开放源码的作品也必须以自由/开源软件许可证发布。发布到公有领域的软件没有这一要求。

公有领域软件的另一个问题源于这样一个事实,即世界上并不是每个国家都承认非版权内容。这使得不可能做出全球公认的声明,即一件软件属于公有领域。因此,FSF和OSI都不鼓励开发人员将软件发布到公有领域。

结论

)的优缺点,并选择最适合您特定需求的许可证。

如果您有兴趣了解更多关于哪个软件许可证适合您的下一个项目,自由软件基金会的License List]提供了免费和非免费许可证的详细描述。此外,开放源码计划的许可证和标准页面也可能会引起人们的兴趣。

Published At
Categories with 技术
comments powered by Disqus