问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

自由软件和开源软件:概念、区别与许可证解析

创作时间:
作者:
@小白创作中心

自由软件和开源软件:概念、区别与许可证解析

引用
CSDN
1.
https://blog.csdn.net/Hominid_Pro/article/details/144120704

自由软件和开源软件是当今软件开发领域中两个至关重要的概念。它们不仅改变了软件的开发模式,也深刻影响了整个科技行业的发展。本文将从软件许可证讲起,逐步深入探讨自由软件和开源软件的核心理念、历史渊源以及它们之间的区别与联系。

概述

在介绍这两个概念之前,必须先解释一下什么是 软件许可证(Software License)在大多数法律体系下,软件默认的版权状态称为 版权所有(All Rights Reserved)。这意味着,除非软件作者明确声明了其他许可条款,否则该软件的所有权利完全归原作者所有。在没有得到授权或许可的情况下,其他人不能随意使用、复制或分发该软件。为了规范软件的使用,很多软件作者会发布许可证,作为一种法律协议来明确使用规则。软件许可证不仅规定了用户在使用、分发和修改软件时应遵守的条件,还会明确列出用户被授予的权利与限制。例如,它可能会规定是否允许商业用途,是否可以拷贝或修改软件的源码等。简单来说,软件许可证就是软件使用者与软件作者之间达成的一个协议,确保在合法范围内使用软件,而不违反作者的权益。

现在我们回到自由软件(FS,Free Software)开源软件(OSS,Open Source Software)这两个近乎等价的概念,两者给人最直接的感受就是源代码公开。如果抛开精神层面的追求以及它所使用的 License 不谈,可以认为它们是等价的。

自由非免费,商业亦自由

“自由软件”一词最初是由 理查德·斯托曼(Richard Stallman)提出的概念(或许你并不熟悉他,但你可能更熟悉他的作品:Emacs 编辑器、GCC 编译器、GDB 调试器、GPL 协议 ... ),而他之所以希望软件自由,也是因为遭受了 Unix 项目私有化的“迫害”。

需要特别强调的是 “Free” 一词表示的是“自由”,而不是“免费” (所以有时也也会使用西班牙单词 Libre 来表示自由,即Libre Software) ,它强调的是用户可以随意的对软件做任何处理。以下 4 点是 FSF 对 自由软件的定义 :

  1. 无论出于何种目的,用户都可以按照自己的想法运行该软件;
  2. 用于可以随意地阅读并修改该软件的源代码,以满足需求 (所以软件必须提供源代码,即开源是自由软件的必要条件) ;
  3. 用户可以随意地将该软件拷贝给其他人;
  4. 用户可以随意地将软件的修改版拷贝给其他人;

自由不代表免费意味着自由软件可以是商业软件(就是可以用于卖钱),实际上商业化反而是自由软件赞同的做法(商业化意味着强大的动力)。自由软件的发布者完全可以出售软件的源码或编译生成的可执行程序,发布者甚至可以有偿地提供后续的维护和更新服务,这都是自由软件的重要盈利模式。但是发布者不能限制用户只能通过付费的方式才能获得源代码(哪怕价格非常便宜,因为站在自由软件哲学的角度来看,付费 1 分钱和付费 100 万并没有本质区别,它们都限制了自由)。

综上所述,自由软件哲学强调的是用户的权利自由,但是这种自由并不是绝对的而是相对的,因为用户必须要遵守上述 4 点要求,否则该用户的行为就会影响到其他用户的自由。而自由软件许可证的目的就是保证自由软件的 4 项自由得以实现和延续,它为软件的自由性提供法律保障。

自由是精神,开源是手段

开源软件的本质就是公开源代码,即任何人都可以查看并修改这些源代码,它和自由软件的是非常类似且接近等价的概念,但两者还是存在差异(自由软件一定是开源软件,反之不然,但是几乎所有的开源程序事实上都是自由软件)。如果站在历史的时间线上来看,“开源”的概念却是源自于自由软件。部分自由软件用户和开发者不赞同自由软件运动的目标(或许是自由的理念过于极端),于是他们从自由软件阵营中的部分成员独立出来,成立了开放源代码组织(OSI,Open Source Initiative),并提出了开源的概念,详见 开源的官方定义;

这里重点谈论一下开源和自由的差异:

  • 核心理念的差异:自由软件的理念关注的是用户的自由,它不仅是一种技术手段,更是社会正义的一部分。自由软件的倡导者认为,用户应该拥有自由使用、修改和分发软件的权利,这种自由是更广泛的社会和精神层面的追求。自由软件的目标是确保每个用户在软件使用上都不受限制,享有完全的控制权。与此不同,开源软件的理念侧重于如何通过共享源代码来提升软件的质量和开发效率。开源软件的核心关注点在于软件的实用性,特别是通过开源协作的方式来加速开发过程,改进技术和方法。

  • 许可证上的差异:从许可证的角度来看,自由软件许可证通常较为严格,它确保了软件在被重新分发或商业化时,依然能保持其自由特性。也就是说,使用自由软件的开发者必须让自己的修改和衍生版本继续遵守自由软件的规则,保持开放源代码。相比之下,开源软件许可证则更加宽松。它允许开发者将开源软件的修改版本以闭源的方式发布,甚至可以将其用于商业化目的,而无需将衍生代码继续公开。这种灵活性使得开源软件在一些商业化应用中更具吸引力。

  • 对专有软件的态度:自由软件对于专有软件(源码不公开)的态度是非常强烈的,它认为专有软件本质上剥夺了用户的自由,因此在道德上是不可接受的。开源软件的态度则较为宽容。开源社区本身并不反对专有软件的存在,甚至会与商业公司进行合作,推动开源项目的发展。

FLOSS/FOSS

总的来说,开源软件和自由软件虽然在形式上相似,都是公开源代码并允许修改使用,但自由软件更注重用户的自由权利,视其为社会正义的一部分。而开源软件则侧重于通过开放源代码来提升软件的质量和开发效率。

为了忽略自由软件和开源软件的细节区别,有人提出了自由及开源软件(FLOSS,Free/Libre and Open Source Software) 的概念,即保持中立的态度,将既可归类为自由软件又可归类为开源软件的软件统称为 FLOSS,有时也会被称为FOSS(Free and Open Source Software),但 Stallman 认为 FOSS 一词会造成 “自由 = 开源” 的误导(正如他一如既往的风格,比如GNU/Linux)。

开源许可证

Copyleft License

著佐权(Copyleft) 一词是 Stallman 针对 著作权/版权(Copyright) 而发明的词汇,其目的是弥补 Copyright 的不足,保证软件的自由性。Copyleft License 是自由软件许可证的一种,这类许可证相对严格,它要求所有衍生软件必须使用相同或兼容的许可证,确保软件自由性的延续。

典型的 Copyleft 许可证包括:GPL(General Public License)、LGPL(GNU Lesser General Public License)、MPL(Mozilla Public License)、AGPL(Affero General Public License) 等。

Permissive License

这类开源许可证相比 Copyleft 许可证而言更加宽松,所以被称为宽松式许可证,它们不强制要求继承自由性(比如允许用户将源码用于闭源的商业项目中)。

典型的宽松式许可证包括:BSD License、MIT License、Apache 2.0 License 等。

小结

市面上存在的开源许可证种类非常繁多,但大致可以分类以上两类。虽然其间的各种细节差异诸多,但背后的思想不外乎是开源和自由。如果对许可证的细节感兴趣,或许可以在这里找到你想要的。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号