GNU计划,有译为“革奴计划”,是由
理查德·斯托曼在1983年9月27日公开发起的
自由软件集体协作计划。它的目标是创建一套完全
自由的操作系统
GNU。
简介
GNU计划,有译为“革奴计划”,是由
理查德·斯托曼在1983年9月27日公开发起的,它的目标是创建一套完全自由的操作系统。理查德·斯托曼最早是在net.unix-wizards新闻组上公布该消息,并附带一份《
GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。
GNU是“GNU's Not UNIX”的
递归缩写,为避免与
gnu(非洲
牛羚,发音与“new”相同)这个单词混淆,斯托曼宣布
GNU应当发音为“Guh-NOO”(/ˈgnuː/ (帮助·关于)),与“canoe”发音相似。
UNIX是一种广泛使用的商业操作系统的名称。由于GNU将要实现
UNIX系统的接口标准,因此GNU计划可以分别开发不同的操作系统。GNU计划采用了部分当时已经可自由使用的软件,例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的自由软件,这些软件也被移植到其他操作系统平台上,例如Microsoft Windows、
BSD家族、
Solaris及MacOS。
为保证
GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都包含一份在禁止其他人添加任何限制的情况下,授权所有权利给任何人的协议条款,
GNU通用公共许可证(GNU General Public License,
GPL)。这个就是被称为‘公共版权’的概念。
GNU也针对不同场合,提供
GNU宽通用公共许可证与
GNU自由文档许可证这两种协议条款。
发展历程
1985年,
理查德·斯托曼又创立了
自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但
FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的Cygnus Solutions。
到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器
Emacs、
C语言编译器
GCC以及大部分
UNIX系统的程序库和工具。唯一依然没有完成的重要组件,就是操作系统的内核(称为
HURD)。
1991年,
林纳斯·托瓦兹编写出了与UNIX兼容的Linux操作系统内核并在
GPL条款下发布。
Linux之后在网上广泛流传,许多程序员参与了开发与修改。
1992年,Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“
GNU/Linux”或简称Linux。(尽管如此,GNU计划自己的内核
Hurd依然在开发中,目前已经发布Beta版本。)
许多
UNIX系统上也安装了
GNU软件,因为GNU软件的质量比之前UNIX的软件还要好。
GNU工具还被广泛地移植到Windows和Mac OS上。
GNU工程十几年以来已经成为一个对软件开发主要的影响力量,创造了无数的重要的工具,例如:强健的编译器,有力的文本编辑器,甚至一个全功能的操作系统。这个工程是从1984年
麻省理工学院的程序员
理查德·斯托曼的想法得来的,他想要创建一个自由的、和UNIX类似的操作环境。从那时开始,许多程序员聚集起来开始开发一个自由的、高质量、易理解的软件。
软件开发
到上世纪90 年代初,GNU 项目已经开发出许多高质量的免费软件,其中包括有名的emacs 编辑系统、bash shell 程序、gcc 系列
编译程序、gdb
调试程序GNU一个利用 Lisp 编写的
Emacs文本编辑器,一个
原码级的调试器,一个与 yacc 兼容的
语法分析器,一个连接器,和大概 35 个应用程序。有一个 shell (命令解释器)已经接近完成。一个新的、具可移植性的、有优化功能的C编译器已经可以自我编译,并应可以在今年发布。还有一个初具规模的内核但是需要更多的特性以模拟 UNIX。当内核和编译器工作完成后,我们就能够发布一个适合软件开发的 GNU 系统。我们会使用 TeX 作我们的文本编辑器,但是也正在编写一个 nroff。我们也会用免费的、具可移植性的 X 视窗系统。之后我们会加一个可移植的 Common Lisp、一个 Empire 游戏、一个
电子表格软件、和其他各式各样的东西,以及在线的文档。
开源项目:
GNU系列:GNU Emacs,GNU调试器。
特性
GNU 将能够执行 Unix 的程序,但是不会和 Unix 完全一样,特别是GNU计划拥有支持更长文件名、文件版本号、一个不怕死机的文件系统,或许还要有自动文件名补全、与
终端机无关的显示支持、可能最后还要有一个基于
Lisp的视窗系统,以使好几个 Lisp 程序和普通的 Unix 程序能共享同一屏幕。C 和 Lisp 都将成为系统的程序语言。我们会设法支持 UUCP,MIT Chaosnet,及 Internet 的通讯协议。
GNU 最初的目标是在有虚拟内存的 68000/16000 系列机器上开发,因为这样的环境是最容易开发程序来实现 GNU 的运行。剩下来让 GNU 能在其它较小的机器上运行的工作,将会留给那些希望能在这些机器上使用的人。
GNU不是公共的,毫无约束的软件(public domain)。GNU计划允许每一个人修改及传播 GNU,但是绝不允许传播者对他传播的程序再加进其他的限制。也就是说,不允许将修改后的程序据为己有。GNU计划希望能确保 GNU 所有的版本都能保持自由。
GNU的核心精神是自由与分享,和hacker精神有异曲同工之妙,虽不能说GNU精神就是hacker精神,不过很难把两者清楚的分开,实际上很多hacker都为GNU做出了巨大的贡献。对知识的渴求是支持他们探索的唯一动力。
项目工程
DotGNU是.NET策略的完全替代,由多个软体计划组成。
Free Film Project 是一个套完整的工具集,当整合起来使用时可以形成一个完整的虚拟电影工作室。
GPKCS-11 是PKCS#11的一个实现:加密介面标准。
GNU Cobol是为
COBOL语言创建一个
编译程序的一个结果。
Gnucomm 计划目的在于为一般的通讯问题提供更好的解决方案。
GNU Enterprise 的宗旨是为各种商务需求开发一个完整的系统。
GNU GLUE 目的在于建立一个分布式的
群件应用框架,这些应用基于新出现的互联网标准。比如,XML WEBDAV和RTSP,并适用于同步和异步以及在线和离线操作。
GNU Octal 计划目的在于建立一组自由组件,这些组件一起作为一个类UNIX系统的数位音乐工作站工作。
GYVE代表``
GNU向量编辑器(GNU Yellow Vector Editor)''。它是一个受到Adobe公司的
Illustrator和Corel Draw产品的启发而制作的基于向量的绘图程序。
参考资料
GNU.iteye博客(原创).2011-01-07