微言码道 · 手记

趣谈自由软件与开源软件(三):一个名称的争议,究竟是该叫Linux还是GNU/Linux

—— 在我们行业中,有一个众所周知的英雄故事: “一个芬兰的大学小伙,因没有足够的钱购买UNIX,后面就决定自己做一个类似的操作系统,在1991年的时候,他凭个人之力发布了Linux内核的第一个版本“。这就是Linux之父Linus Torvalds。 很多误认为是他创建了整个Linux操作系统,但这并不是事实。

在我们行业中,有一个众所周知的英雄故事:

“一个芬兰的大学小伙,因没有足够的钱购买UNIX,后面就决定自己做一个类似的操作系统,在1991年的时候,他凭个人之力发布了Linux内核的第一个版本“

这就是Linux之父Linus Torvalds。

他还是Git这个版本管理工具的创始人。今天使用GIT来对代码进行分布式管理是绝对的主流。

这样的人,我只能用一个词来形容,那就是“天才”

我也非常崇拜他,但还是进入今天我要聊的话题。那就是:

Linux该不该叫Linux

本篇为趣谈自由软件与开源软件的第三篇,本系列其它文章为:

  1. 趣谈自由软件与开源软件(一):什么是自由软件
  2. 趣谈自由软件与开源软件(二):自由软件与开源软件的分歧

谁提出了这个问题?

大家都把Linux这种操作系统叫Linux,这应该是主流。

那到底是谁提出了这个问题,为什么本来是被大家都接受的事实为什么又有人提出争议了呢?

提出这个问题的是来自GUN运动阵营的一些人,他们提出了

使用Linux来称呼这样的操作系统是不公平的,使用GUN/Linux可能是更公正的

自由软件之父,GNU运动发起人Richard Stallman还特意写了篇文章,以支持这个提议。

当然,这个提议并不是空穴来风的,背后确实有一定的理由来支撑的。

那这究竟是怎么回呢,我就从Linux操作系统究竟是怎么组成的说起吧。

Linux操作系统的组成

操作系统是相对于硬件来说,它是软件。

对于大众来说,他们所认知的操作系统大致应该是这样:

文章《趣谈自由软件与开源软件(三):一个名称的争议,究竟是该叫Linux还是GNU/Linux》中的配图 1

大多数人的认知中,硬件与操作系统可能会分为三层:

  • 硬件层。操作系统的能力都是建立在硬件之上的。
  • 系统层。操作系统自带的一些基本能力和软件。比如Windows的服务管理,自带的IE浏览器等。
  • 第三方生态。基于操作系统提供的扩展能力,开发及供大众使用的软件。比如QQ,微信等

其实这个理解也不能说是错的。

但如果按这个理解来说,我们的大神开发的东西在Linux系统在上面没有任何立足之地,也就是整个操作系统和我们的Linus Torvalds大神开发的东西没有任何关系。

当然这不是事实。

一个误解

可能有相当一部分人,甚至是程序员群体中可能也存在,会认为Linus Torvalds开发了Linux操作系统。

严格的说,这不是事实,Linus Torvalds开发的其实是:Linux内核

那Linux内核在操作系统中究竟处于什么地位?

Linux内核

简而言之,Linux内核是硬件与软件打交道的中介。所以它叫内核。

内核是计算机硬件与其进程之间的核心接口。它负责两者之间的通信,还要尽可能高效地管理资源

Linux内核的主要用途

  • 内存管理
  • 进程管理
  • 设备驱动程序
  • 系统调用与安全服务

内核这个东西不只在Linux中存在,任何系统包括大家使用的Windows,也有内核。只不过内核是在背后支撑性的,我们使用操作系统压根不可能接触到内核,所以对它可能不太熟知。

我们的Linus Torvalds大神开发的其实是Linux内核。

所以,一个操作系统严格说来,是这样组成的:

文章《趣谈自由软件与开源软件(三):一个名称的争议,究竟是该叫Linux还是GNU/Linux》中的配图 2

那究竟我们用的Linux系统除了内核这个见不到的东西之外,到底我们使用的那些系统服务及软件究竟是哪来的?

GUN + Linux内核 = Linux操作系统

我在前面的文章中说到,自由软件之父早在1983年时就发起了GNU计划与运动,计划编写一个完全自由的,替换UNIX的操作系统。

按照上述所说,一个操作系统包括很多东西,有内核,有系统的一些必备的组件,还得有UI界面,甚至是游戏。

在Richard Stallman发起这个GNU运动时,还是1983年,那个时候可没Linus Torvalds什么事。

事实上,GNU确实是一项伟大的工作,与Linus Torvalds是独自己一个开发出一个内核不同,GNU运动是一群杰出的有理想的程序员共同参与的事情。

在GNU运动中,它们规划了操作系统所需要的方方面面的东西,也包括内核,甚至是游戏。

今天你使用的Linux操作系统,以下一些你可能熟悉的部件,其实是属于GNU的成果。

  • 最有名的,GNOME是GNU的一部分,因为一个操作系统是需要UI的
  • 编译器套装GCC,GNU的C库glib
  • Bash,是GNU的UNIX兼容Shell
  • GRUB,统一引导加载程序
  • 著名的Emac,noao等编辑器,GIMP图像处理工具等。

其实这个列表还有很长,当然最重要的是GNU其实是有自己的内核计划的,那就是Hurd。

但是,GNU自己计划的内核Hurd始终没有稳定,一直在开发中。而在1991年,众所周知,Linus Torvalds开发了Linux内核。

于是,把GNU的已开发出来的东西和Linux内核一整合,最终推动并发展出了现在的Linux操作系统。

所以,严格的说,Linux操作系统 = GNU + Linux内核,并且以代码量占比来说,一个Linux发行版本中,可能GNU的代码量占到28%左右,而内核代码量是3%左右。

那你应该了解了为什么GNU阵营有人这样主张了么。这妥妥的有一定的道理。

他们主张应该把这样的操作系统称呼为:GUN/Linux,这才是更公平的,体现并尊重了GNU运动做出的贡献,更重要的是传播了自由软件的理念。

不过,这个是有争议的,Linux社区对此并未形成统一意见。大多数人可能仍然认为沿用Linux更好。包括Linus Torvalds。

我的看法

文化是约定俗成的,但不代表它是正确的

名称其实也是文化的一种,名称不正确但却被大家接受,属于约定俗成的,这种例子也不少。

从Linux操作系统上来说,考虑到尊重GNU运动及背后的程序员做出的贡献来说,使用GUN/Linux的确是个更正确的名称。

但如我所说,文化并不是完全正确的,它只是约定俗成的。在大众甚至是程序员群体,已经基本接受Linux这个名称的前提下,改变它的名称并因为这一点引发太多争议我认为并无太多必要。

所以,对于那些愿意称它为GNU/Linux系统的群体来说,比如Debian,它就称自己是GNU/Linux系统,我们应该非常欢迎。而对于仍然愿意沿用Linux或主流称为Linux的,我觉得也很合理。

我认为,更重要的事情是,宣扬GNU及其背后的自由软件的理念,才是更需要去做的一件事情。

至于去讨论Linux内核和GNU那些软件,哪个更重要,这种争议并不会产生什么实质价值,只会分裂不同群体而已。

所以,我在了解了自由软件及其背后的GNU运动后,就决定写下这个系列,我认为可能有非常多的程序员,特别是在国内程序员,对自由软件或GNU并不是非常了解,希望我的文章能让更多人知道GNU及其背后的自由软件运动。

一个非常奇怪的事情是,基于GNU的大多数主流Linux并不被认为是完全自由的操作系统,这是怎么一回事?

下一篇:趣谈自由软件与开源软件(四):为什么主流的Linux发行版本不被认可为完全自由的操作系统