zl程序教程

您现在的位置是:首页 >  其他

当前栏目

趣谈自由软件与开源软件(一):什么是自由软件

2023-03-20 15:00:25 时间

今天的程序员,说起开源软件,相信没有人不知道。

开源生态已经成为一种强大的存在,从语言,框架,工具到各种软件,开源的东西可谓应有尽有,一应俱全。

但在开源软件之前,还存在另外一个很重要的概念,可能现在有非常多的程序员并不是非常熟悉这个概念,那就是:自由软件及其背后的自由软件运动

从本篇开始,我将谈论这个非常有趣的话题,那就是自由软件与开源软件

这是第一篇

不为人所知的自由软件

其实,很长一段时间内,我也不太清楚什么是自由软件,对它也没有太多概念。更不知道它与开源软件的方方面面的有趣的事情。我相信这个现象在国内程序员或业界应该也是普遍存在的,许多人也并不非常了解或甚至没有听过自由软件这个概念及它背后的理念。

一直以来,国内更流行的概念是开源,使用开源,推广开源。从阿里2008年发起去IOE运动以来,开源的理念在国内业界早已深入人心。

阿里去IOE靠的是什么,当然就是开源了。

开源的理念对程序员来说早已是家喻户晓了,但与开源有千丝万镂关系的另一个概念自由软件,却处于一种相对较为尴尬的处境,它所倡导的理念及它本身在国内并不为人非常熟悉。

最开始听说与自由软件相关的理念,是FOSS这个概念。

在我浏览国外技术文章的过程中,最经常遇到FOSS这个词,后面无意间我才知道这个词代表的是Free and Open Source Software,由于不知道自由软件的概念,我一直认为这个代表的是“免费与开源软件”的意思。后面经过查阅才理解,原来它真正的意思是”自由与开源软件“

什么是自由软件?我第一次非常好奇这个概念

而后在寻找CentOS的替代服务器版本时,一路寻找到Debian这个发行版本。而在Deiban官网的首页中,它们对宣称自己是:

Debian是一个完全自由的操作系统

它们说自己是完全自由的操作系统,没有说自己是开源免费的操作系统。我一直以来对Linux这种操作系统的理解都停留在它们都是开源免费的,并没有自由的理解在内。

而后在Debian的"我们的理念“文章中,我真真正正看到了一个基于自由理念信念下的自由的操作系统是怎么一回事了。

这里,当我们使用自由(Free)这个词时,我们关心的不是金钱,而是软件自由。

自由软件的定义

首先可以肯定一点是,自由软件与开源软件肯定是不一样的,不然也不需要用另一个名字。事实上,开源软件是从自由软件中衍生出来的,这一点后面再说。

自由软件关注的是使用软件的自由

自由软件是由以下四个自由来定义的,它们包括

  • 自由之零:无论用户出于何种目的,必须可以按照用户意愿,自由地运行该软件。
  • 自由之一:用户可以自由的学习与修改软件,那做为这个的前提,用户是要能自由的访问到软件的源码
  • 自由之二:用户可以自由的分发软件给别人,以帮助他人
  • 自由之三:用户可以自由的分发修改后的软件版本,以使整个社区从修改中受益。

当一个软件满足了上述四个要求之后,就可以称自己为自由软件

自由软件的倡导者认为,不满足上述要求的软件,就是非自由软件,按照上述标准,有非常多的开源软件并不完全满足这个标准。

自由软件的关注点在于使用软件的自由,它将专有软件或叫私有软件视为对立。

自由软件运动是为用户的计算自由而战斗。

自由软件的极简史

自由软件带有比较明显的个人印记,直到现在仍是如此。推动自由软件的核心人物是:Richard Stallman

这里简要列出一些有关自由软件运动的历史,有助于大家对自由软件运动有更好的理解。

发起GNU运动 1983年

自由软件的创始人Richard Stallman在1983年,就发起了一个叫GNU的运动,也就是开发一套与Unix完全兼容,并且100%完全自由的操作系统。

这就是GNU运动。GNU是一个集合,代表着构建一个完全自由的操作系统的所有方面,从内核到编译器,到桌面等。比如Gnome属于GNU的一部分。GCC也属于GNU的一部分。GNU也有自己的内核 - Hurd (还在开发中)

事实上,现在大家熟知Linux系统中相当一部分的软件都属于GNU。

成立自由软件基金会 1985年

GNU并不是Richard Stallman一个人在开发,有许多的人参与到这个运动,为了开发一个完全自由的操作系统。Richard Stallman是其中的核心与精神领袖。

为了更好的推动GNU,使之可持续下去,Richard Stallman在1985年的时候成立了自由软件基金会。

GNU + Linux的双剑合并。1991年

事实上,在1990的时候,GNU运动已经开发出了一个操作系统几乎所有方面的软件,这确实是令人难以置信的工作。

但是,它们独独缺少一个稳定的操作系统内核。虽然GNU有自己的内核开发-Hurd。但直到现在,这个内核仍然没有稳定,内核工作的复杂度远超他们的预计。

但幸运的是,Linux的创始人Linus Torvalds在1991年时,编写了一个类Unix内核并开源出来。

对GNU来说,这是个很好的东西,于是GUN在做了大量修改与适配后,后面与Linux内核结合起来。形成了自由的操作系统。

对自由软件运动来说,他们认为这样的操作系统应该称呼为:GNU/Linux。

但今天,我们基本上称呼这样的系统为另一个名字:Linux

开源软件的兴起与发展 1998年

并非全部的自由软件用户和开发者都赞同自由软件运动的目标。1998年,自由软件阵营中的部分成员分裂出来,并以“开源”为名继续开展活动。

而后,我们都知道,开源的理念不断兴起,它不断的发展与壮大,其声势与影响力早已远超自由软件的运动。

现在,开源的理念早已远胜于自由运动的理念。

不要说普通计算机用户,就算对于大多数程序员来说,可能知道开源的也远胜于知道自由软件运动。

自由软件与开源软件的分歧

如果按照各自的理念与要求,自由软件一定是需要开放源代码,否则无法实现自由运动的四个自由。而开源软件有相当一部分也其实是满足这四个自由。

也就是它们之间有非常大的重叠。

但自由软件运动并不赞同开源软件运动,他们认为开源软件运动错失了自由软件的初衷与目标。