大家可能都听过,PC端三大系统:Windows ,Linux,macOS,
关于“Linux系统”,你可以知道他是一个叫Linus,脾气不怎么好的人创建的。
但是Linux系统这样的的命名方式,到现在其实都是有争议的,主要是集中在是否要加上GNU。
那么,今天我们就来看看什么是GNU,Linux与GNU/Linux之争又是什么?
什么是自由软件(free software)?
在提到GNU之前,不得不先来说说另外一个概念——自由软件。
“自由软件”,正如字面上的“自由”二字,它尊重用户的自由。一个软件如果是自由软件,这意味着用户可以自由地运行,复制,分发,学习,修改并改进该软件。所以,“自由软件”是关乎自由的问题,与是否收费无关,软件如何定价并不影响它是否被归类为自由软件。
英文Free Software翻译而来,而 Free一词既有自由,也有免费的意思。通常为了避免歧义,在使用英文时,会借用法语或西班牙语的“Libre Software”来指自由软件。
自由软件对商业发展特别是硬件有巨大的贡献,多数嵌入式设备系统厂商鉴于自身无需支付许可费用和实用性方面的原因考虑也会在自由软件的基础上开发操作系统。世界上绝大多数操作系统多少都会包含有自由软件组件(例如BSD的TCP/IP协议栈广泛被包括MacOS,Windows在内的专有商业操作系统使用)。随着越来越多的自由软件支持 Microsoft Windows 平台,还有得益于 Android 平台的普及,当前有上亿的用户在日常生活或工作中使用自由软件。
有了这些自由,软件用户,无论是个人还是集体,都可以完全掌控所运行的软件,并决定这些程序如何为自己服务。如果一个软件令用户失去了这种控制权,那么则称它就是“非自由”的,或“专有”的程序。
如果一个软件被称为自由软件,认为它需要四项基本特征(自由度):
自由度0:无论用户出于何种目的,必须可以按照用户意愿,自由地运行该软件。
自由度1:用户可以自由地学习并修改该软件,以此来帮助用户完成用户自己的目的。所以,这就要求软件的源码是能查看到的。
自由度2:用户可以自由地在互联网分发该软件。
自由度3:用户可以自由地分发该软件修改后的版本。,而他人也可以据此修改,分发再次修改的版本呢(免费,收费都行 )。
一个软件只有满足上述的几个特征,才可以被成为自由软件。
只有所有用户使用的代码都满足了这四项基本自由,该程序才能被视作自由软件。例如,有两个程序,A程序运行的时候会自动调用B程序。发布A程序意味着用户必须使用到B程序,那么必须AB两个程序都是自由的,A程序才算是自由的。如果通过修改A程序,使其不再依赖B程序,那么仅仅以自由软件的形式发布B程序即可。
另外,“自由软件”不等于“非商业软件”。一个自由软件必须允许商业用户、商业开发和商业发布。商业开发自由软件早就司空见惯了,这样的自由软件非常重要。你可能需要花钱购买自由软件,也可能免费拿到。但是无论你如何获得你的拷贝,作为用户,你的四大自由都会被保证,你可以自由地运行,修改,发布甚至出售你拿到的自由软件。
假如获得自由软件拷贝的用户遵守了自由软件的许可证条款,那么该自由软件必须为用户提供自由软件的四项基本自由。在自由方面对用户加以限制或者要求付费才能实践这些自由和不赋予用户自由没有什么两样,因此这样的程序不是自由软件。
GNU是什么?
“GNU”这个名字是“GNU’s Not Unix”的递归首字母缩写词,它是一个类Unix操作系统,由多个应用程序、系统库、开发工具乃至游戏构成的程序集合。GNU的开发始于1984年1月,称为GNU工程,在GNU工程下发布的软件,就被称为GNU软件包,因此,也可以说GNU操作系统是包括GNU软件包(专门由GNU工程发布的程序)和由第三方发布的自由软件。
简而言之,GNU就是一个自由软件,是一个操作系统。和Windows, MacOS不同之处,GNU操作系统对使用者是完全自由的,你完全可以自主的运行,修改,分发它。
Linux还是GNU/Linux ?
正如在上面提到的,GNU是一个类Unix操作系统。在这类系统中,用于计算机资源分配和硬件管理的程序称为“内核”。虽然GNU工程有官方内核程序Hurd,但是目前GNU系统所用的典型内核是Linux。因此就把这样的组合叫做GNU/Linux操作系统。
GNU/Hurd Live CD界面
GNU/Linux这一名称是由自由软件基金会(FSF)的创立者与GNU计划的发起人理查德·斯托曼所提出的。
GNU的开发者们,希望以该名字来作为此操作系统的正式名称。他们认为,此操作系统,包括了GNU系统软件包与Linux核心,使用GNU/Linux这个名称,可以良好概括它的主要内容。而且,GNU项目原本就是以发展一个自由的操作系统为愿景,但迟迟没有完成。而Linux核心的出现刚好可以补足这个缺口。
理查德·斯托曼认为:“今天有数千万个用户,在使用的这个操作系统,他们可以自由的使用。但是他们并不清楚GNU,因为他们以为这个系统是Linux,只是是由一个学生“为了好玩”而发展出来的“。
并且他强调,”Linux的成功,是基于GNU项目之上,所以,如果要为这样的系统起个名,最适合的唯一选择就是GNU。但我们不认为这是唯一正确答案。因为GNU计划,过去不是,现在也不是,一个为了发展特定软件包而创建的项目。……许多人为了这个系统中的自由软件都做出了贡献,而这些功劳都应该归给他们。
在某种程度上,你要设个标准,省略掉许多其他次要贡献者的名字。所以无论你设置的标准在哪,我们都不会提出抗议。……但是考虑到公平性,以及贡献,不管标准是什么,有个名字都是不应该被使用的,那就是“Linux”。把所有的功劳都归给一个次要的贡献者(Linux),但是忽略主要的贡献者(GNU),这是不公平的。“
Linux内核本身并不是GNU计划的一部分,GNU/Linux这个名称在Linux社群中并没有得到一致认同。一些发行版社群例如Debian采用了GNU/Linux这一名称,但其他许多Linux社群中认为使用Linux这一名称是更好的,Linux这个名字朗朗上口,且在公众与媒体中更为通用。Linux内核项目的发起人Linus也偏好于使用Linux,但对于GNU/Linux这个名字并不强烈反感。
在接受记录片《操作系统革命》(Revolution OS)访谈时,Linux也表达过对GNU/Linux这个名称的想法,他认为这个称呼是合理的……这就像是他觉得“RedHat Linux”,或“SuSE Linux” 或“Debian Linux”这些名称是很好的,因为如果你真的做了一个你自己的Linux发行版时,你必须要帮它取个名称,但是要把Linux全部通称“GNU Linux”,我觉得这很荒谬。
使用Linux内核的GNU系统,并不只是一人的杰作,而是全世界无数的知名的,默默无闻的大神们,在推进Libre Software发展进程中的产物。 不管是叫Linux系统还是叫GNU/Linux系统,都不能抹杀这一点。
当小编第一次知道GNU/Linux这样的叫法的时候,自己也没有过多在意。
平常我们提到Linux系统的时候,其实也是说某个特定的发行版,比如说怎么安装Ubuntu系统,怎么解决CentOS系统的XX问题,甚至连Linux都没提到。
关于Linux以及GNU/Linux的看法,欢迎一起讨论:http://www.makeru.com.cn/course/details/2478?s=143793