世纪大争论:Linux还是GNU/Linux?

我们在网上已经习惯用“Linux”来称呼Linux操作系统了,然而,偶尔也用“GNU/Linux”来称呼和指代同样的操作系统和软件。同时人们也在争论这两种称呼哪个更合适。
本文将不会选边站队,仅力图向你讲述这两种称呼的来历,并解释”Linux”与“GNU/Linux”之间的微妙差异。
什么是“Linux”?
“Linux”这个词仅仅代表内核——操作系统的核心。其他软件, 比如用来编译内核的GNU C编译器,bash命令行终端,GNU Shell组件(包括所有你用到的基本命令),X.org图形服务器, 一个图形化的桌面环境比如Unity(译者注:基于GNOME 3开发),以及在桌面环境上运行的各种软件,比如Firefox,这些都是由不同开发者来开发的。
Linux发行版则集合来所有这些由不同开发者开发的组件,我们习惯将这个有机整合的软件包称为“Linux”.有关更多Linux发行版的知识以及发行版之间的差别,可以阅读HTG 解码:什么是Linux发行版?它们之间有何差别?
GNU计划
1983年Richard Stallman(理查德·斯托曼)创立GNU计划。GNU的目标是创建一套完全由自由软件的兼容UNIX的操作系统。“GNU”是英文“GNU‘s Not Unix!”的递归缩写。(“自由软件”是对一类开源软件的称呼,而自由软件更强调自 由,不过,本文不打算讨论自由软件和开源软件的差异)
1991年的时候,GNU计划已经完成了GNU操作系统的绝大部分 组件,包括GNU C编译器(gcc),bash命令行终端和其他Shell命令行组件,以及Emacs文本编辑器等等。其他组件则有已经存在的自由软件来替代,比如X Windows系统来提供图形化桌面的接口。
然而,操作系统的内核——GNU Hurd内核——依旧没有完成。GNU计划非常冒险的选择了“微内核”设计架构(微内核是指将系统服务的实现,与系统的基本操作规则区分开来。它实现的方 式,是将核心功能模块化,划分成几个独立的进程,独立运行。可以减少系统之间的耦合度,易于实现与除错,也可增进可移植性。它可以避免单一组件失效,而造 成整个系统崩溃。Windows NT以及Mac OS均是微内核架构。——译者注,摘自维基百科“微内核”词条),也正因为选用了微内核架构造成开发周期异常漫长。(到2013年,GNU Hurd内核已经开发了23年依然没有发布稳定版)。
千呼万唤Linux来!
对GNU操作系统来说,缺失的最后一环就是内核(kernel), 同时这也是最重要的一环,可谓是“万事俱备只欠东风”。时间到了1991年,芬兰赫尔辛基大学的学生Linus Torvalds(林纳斯·托瓦兹)发布了Linux内核的第一个版本。将Linux内核、GNU软件以及X窗口管理系统整合在一起,就可以成为了一个完 整的且自由分发的操作系统了(就如同现在的“Linux发行版”)。
刚开始就已经有这种操作系统应该如何称呼的争论。1992 年,Yggdrasil计划用““Yggdrasil Linux/GNU/X”来命名其整合起来的软件。而Richard Stallman和自由软件基金会更加推崇使用“GNU/Linux”。Debian目前一直将其软件称为“GNU/Linux”。(Debian以其坚 守Unix和自由软件的精神,以及其给予用户的众多选择而闻名。现时Debian包括了超过37500个软件包并支持12个计算机系统结构。——译者注, 摘自维基百科“Debian”词条)。

不同的声音:GNU/Linux
GNU计划要开发一个叫“GNU”的完全自由的操作系统,而 Linux的绝大部分软件也是GNU计划提供的。然而这就出现了一个显而易见的问题,也正如Richard Stallman反对的,称之为“Linux”会泯灭GNU的意义以及其初始目标——一个完全自由的操作系统并为用户提供自由。而这也就与另一组争论交织 在一起了——“自由软件”和“开源软件”,“自由软件”这个称呼更加强调自由权力,而“开源软件”则关注于技术优势而淡化意识形态纷争。
正如2005年Richard Stallman在接受ZNET采访时所说:” 设计Linux的目的并不是为了解放网络世界,而且Linux的开发动机也并不会带给我们今天所看到的整个GNU/Linux系统。今天有数十万用户使用 这样的操作系统,他们因此而获得了自由——但他们却并没有意识到这一点,因为他们觉得这个系统就是Linux,而且是一个学生因为“只是觉得好玩”而开发 出来的。”
(1991年Linus Torvalds发布Linux内核第一版的时候是芬兰赫尔辛基大学研二的学生,第一次发布到新闻组的时候称其写Linux只是“Just For Fun”,后来他在2002年出版了一本自传,也取名为《Just For Fun》——译者注)
更多有关此的思考可以在GNU网站上找到。

不同的声音:Linux
而支持使用“Linux”这个称呼的人认为,仅仅关注GNU是个错误,那么基于同样的理由,众多发行版包含不同组织的软件那么就应该称为“Mozilla/KDE/Apache/X.org/GNU/Linux”。(这是典型的诡辩——译者评价)
大多数人仍旧使用“Linux”这个称呼。除非有更好的,因它简单易记,朗朗上口。且无论这理想的名字是什么,“Linux”都会是大多人对这操作系统的简称。你可以在这里看到“Linux”也能在别处看到,因为这对读者来说是能够第一时间就明白的称呼。
好了,我们以Linus Torvalds于1996年在新闻组里的话做结尾:“嗯,关于这个的讨论已经够多的了,非常感谢!对于公众来说,如何称呼Linux这根本就不算个事,只要可以自圆其说就够了(对双方而言)。从我个人的角度,我会非常乐意继续称之为Linux”。
如果想了解更多关于Linux的起源与发展,这里极客范推荐给大家 一个视频:Code Linux。视频中有包括Linus Torvalds、Richard Stallman、Alan Cox、Eric S. Raymond等一众大神现身说法,推荐给程序员和极客们。
原文: Chris Hoffman 翻译: 极客范 - 爱开源的贡献开源社区
世纪大争论:Linux还是GNU/Linux?的更多相关文章
- GNU/Linux与开源文化的那些人和事
一.计算机的发明 世上本无路,走的人多了,就有了路.世上本无计算机,琢磨的人多了--没有计算机,一切无从谈起. 三个人对计算机的发明功不可没,居功至伟.阿兰·图灵(Alan Mathison Tur ...
- [转帖]GNU/Linux与开源文化的那些人和事
GNU/Linux与开源文化的那些人和事 时间:2015-09-24 作者:admin 分类:新手入门 阅读:167次 http://embeddedlinux.org.cn/emb-linux/ ...
- Linux简介及Linux学习路线图
一.Linux 为何物 Linux 就是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS ,至于操作系统是什么,就不用过多解释了,如果你学习过前面的入门课程,应该会有 ...
- 大神教你Debian GNU/Linux 9.7 “Stretch” Live和安装镜像开放下载
Debian项目团队于昨天发布了Debian GNU/Linux 9 "Stretch" 的第7个维护版本更新,重点修复了APT软件管理器中存在的安全漏洞.在敦促每位用户尽快升级系 ...
- 完全用 GNU/Linux 工作(转)
转自:http://www.chinaunix.net/old_jh/4/16102.html 看到一半,实在太长,但已觉得很好,转来分享一下. 完全用 GNU/Linux 工作 - 摈弃 Windo ...
- UNIX发展史(BSD,GNU,linux)
先前的一個理想 UNIX 系统自 1969 年 Ken Thompson 与 Dennis Ritchie 在美国贝尔电话实验室(Bell Telephone Laboratories)发展出雏形至今 ...
- UNIX发展史(BSD,GNU,linux)(转)
转自 UNIX发展史(BSD,GNU,linux) 这篇文章写的非常好,在这里转一下. 先前的一個理想 UNIX 系统自 1969 年 Ken ThompsonKen Thompson 与 Denni ...
- 【历史】- UNIX发展史(BSD,GNU,linux)
先前的一個理想 UNIX 系统自 1969 年 Ken Thompson 与 Dennis Ritchie 在美国贝尔电话实验室(Bell Telephone Laboratories)发展出雏形至今 ...
- [转自王垠]完全用GNU/Linux工作,摈弃Windows低效率的工作方式
ZT (a qinghua student's article) 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果 ...
随机推荐
- Yoga安装Ubuntu后,wifi和亮度调节问题
http://askubuntu.com/questions/318608/lenovo-yoga-13-realtek-wireless-driver/358479#358479 http://it ...
- 云风:我所偏爱的C语言面向对象编程范式
面向对象编程不是银弹.大部分场合,我对面向对象的使用非常谨慎,能不用则不用.相关的讨论就不展开了. 但是,某些场合下,采用面向对象的确是比较好的方案.比如 UI 框架,又比如 3d 渲染引擎中的场景管 ...
- 使用 JUnit 进行单元测试 - 教程
tanyuanji@126.com 版本历史 JUnit 该教程主要讲解 JUnit 4.x 版本的使用,以及如何在Eclipse IDE 中如何使用JUnit 目录 tanyuanji@126. ...
- Qt Creator快捷键大全,附快捷键配置方法
一.快捷键配置方法: 进入“工具->选项->环境->键盘”即可配置快捷键. 二.常用默认快捷键: 编号 快捷键 功能 1 Esc 切换到代码编辑状态 2 F1 查看帮助( ...
- 开发反模式(GUID) - 伪键洁癖
一.目标:整理数据 有的人有强迫症,他们会为一系列数据的断档而抓狂. 一方面,Id为3这一行确实发生过一些事情,为什么这个查询不返回Id为3的这一行?这条记录数据丢失了吗?那个Column到底是什么? ...
- linux中的文件结构
linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的 ...
- Java学习作业(14.4.21)
前三次作业都是基础语法.真的好水啊.从这次开始记录. 1.编写Java程序,把当前目录下扩展名为txt的文件的扩展名全部更名为back. import java.io.*; import java.l ...
- Hibernate(四)——缓存策略+lazy
Hibernate作为和数据库数据打交道的框架,自然会设计到操作数据的效率问题,而对于一些频繁操作的数据,缓存策略就是提高其性能一种重要手段,而Hibernate框架是支持缓存的,而且支持一级和二级两 ...
- 把一个select查询结果插入到一个表(可选指定字段和值实例)
把一个select查询结果插入到一个表(可选指定字段和值实例) insert into bak (cc,yf) select cc,9 from ket insert into bak (cc,yf ...
- Linq to Entities中无法构造实体或复杂类型
EF中在使用linq就行查询select时不能直接使用自动映射生成的类,需要在单独声明一个类或者使用匿名类在查询完成后再转为对应的对象. public partial class WebForm1 : ...