GNU 起源

  在unix平台下开发了一年多,整天埋头写C的代码。某天查资料时发现自己的无知。连GNU,GNOME,GTK+这些名词还不是和了解,于是恶补。在这把网上找的资料整理了一下,当笔记留在博客上。希望老鸟们不要笑。

gnu

GNU 起源_第1张图片
GNU计划,又称革奴计划,是由 Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带一份《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。
  GNU是“GNU's Not Unix”的递归缩写。Stallman宣布GNU应当发音为Guh-NOO以避免与new这个单词混淆(注:Gnu在英文中原意为非洲牛羚,发音与new相同)。UNIX是一种广泛使用的商业操作系统的名称。由于GNU将要实现UNIX系统的接口标准,因此GNU计划可以分别开发不同的操作系统部件。GNU计划采用了部分当时已经可自由使用的软件,例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的自由软件。
  为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都在一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。这个就是被称为“反版权”(或称Copyleft)的概念。
  1985年Richard Stallman又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的Cygnus Solutions。
  到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs,C语言编译器GCC,以及大部分UNIX系统的程序库和工具。唯一依然没有完成的重要组件就是操作系统的内核(称为HURD)。
  1991年Linus Torvalds编写出了与UNIX兼容的 Linux操作系统内核并在GPL条款下发布。Linux之后在网上广泛流传,许多程序员参与了开发与修改。1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。(尽管如此GNU计划自己的内核Hurd依然在开发中,目前已经发布Beta版本。)
  许多UNIX系统上也安装了GNU软件,因为GNU软件的质量比之前UNIX的软件还要好。GNU工具还被广泛地移植到Windows和Mac OS上。
  GNU 包含3个协议条款,
  GPL:GNU通用公共许可证(GNU General Public License)
  LGPL:GNU较宽松公共许可证 (GNU Lesser General Public License), ) ,旧称 GNU Library General Public License (GNU 库通用公共许可证);
  GFDL :  GNU自由文档许可证(GNU Free Documentation License )的缩写形式。
  这里指的自由,并不是价格免费,这和价格无关而是使用软件对所有的用户来说是自由的。GPL 通过如下途径实现这一目标: 
  1.它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。 
  2.如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码。 
  3.GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。 
  由于GPL很难被商业软件所应用,它要求调用它的库的代码也得GPL,全部开放,并且一同发布,不能直接连接。所以后来GNU推出了LGPL许可证
  如果你准备在你的项目中使用Linux,那么你必须了解的两个上述两个两个许可证,GPL与LGPL..
  相同点:
  因为GPL和LGPL,都是自由软件基金会建立的,所以它们之间非常类似,它们都具备Copyleft的重要特性:
  术语copyleft源于GNU项目中的俗语,是英语Copyleft的双关语(Copyright:版权),表示反版权,也就是非盈利版权的意思。他指的是开放源代码许可证中如下条款:任何人或者公司都不能把GPL/LGPL保护下的软件源代码拷贝,修改后,把这些修改保护起来——即使他们的修改可能使得软件的性能比原始的版本更好。一旦一段代码被GPL或者LGPL保护,那么代码本身和所有对它所做的修改都必须在对它感兴趣的人和组织面前公开,如果第三方修改并发布这段代码,那么必须把修改的代码和原始代码都向接受代码的人公开。
  不同点:
  在GPL与LGPL许可证保护下发布源代码的结果很相似,对旧代码所做的任何修改对于想知道这些代码的人必须是公开的,唯一真正的不同之处在于私人版权代码是否可以与开放源代码相互连接,LGPL允许实体连接私人代码到开放源代码,并可以在任何形式下发布这些合成的二进制代码。只有这些代码是动态连接的就没有限制。(使用动态链接时,即使是程序在运行中调用函数库中的函数时,应用程序本身和函数库也是不同的实体)
  GNU (pronounced /gnu/) is a free software operating system. Its name is a recursive acronym for "GNU's Not Unix", which was chosen because its design is Unix-like, but it contains no actual UNIX code. The GNU system, combined with a third-party kernel called Linux, is one of the most widely used operating systems in the world known as "GNU/Linux". The plan for the GNU operating system was announced in September 1983 by Richard Stallman and software development work began in January 1984. The project to develop GNU is known as the GNU Project, and programs released under the auspices of the GNU Project are called GNU packages or GNU programs.
  History 
  The GNU project was announced publicly on September 27, 1983, on the net.unix-wizards [1] and net.usoft newsgroups. Software development began on January 5, 1984, when Stallman quit his job at Massachusetts Institute of Technology so that they could not claim ownership or interfere with distributing GNU as free software. The correct pronunciation of GNU is g'noo (IPA: /gnu/), with a hard "g", to distinguish it from the word new. According to Stallman, the name was inspired by various plays on words, including the song The Gnu.
  The goal was to bring a wholly free software operating system into existence. Stallman wanted computer users to be free - as most were in the 60s and 70s - free to study the source code of the software they use, free to modify the behaviour of the software, and free to publish their modified versions of the software. This philosophy was published in March 1985 as The GNU Manifesto.
  The majority of the software needed had to be written from scratch, but when compatible free software components already existed, they were used. Two examples were the TeX typesetting system, and the X Window System. Most of GNU has been written by volunteers; some in their spare time, some paid by other companies. In October 1985, Stallman set up the Free Software Foundation (FSF). In the mid- and late-80s, FSF hired software developers to write the software needed for GNU. At its peak it had 15 people on its staff. FSF also holds the copyrights for some GNU software packages. Most GNU packages are licensed under the GNU General Public License (GNU GPL), while a few use the GNU Lesser General Public License (GNU LGPL), and a still smaller amount use other free software licenses.
  So that it would be convenient for people to switch to GNU, it was decided that GNU would be mostly compatible with Unix, which was a popular proprietary operating system at the time. The design of Unix had proven to be solid, and it was modular, so it could be reimplemented piece by piece.
  As GNU gained prominence, interested businesses began contributing to development or selling GNU software and technical support. The most prominent and successful of these was Cygnus Solutions, now part of Red Hat.
  Licensing 
  In order to ensure that GNU software remains free, the project released the first version of the GNU General Public License (GNU GPL) in 1989. This license is now used by most GNU programs, as well as a large number of free software programs that are not part of the GNU project; it is the most commonly used free software license in the world. It gives all recipients of a program the right to run, copy, modify and distribute it, while forbidding them from imposing further restrictions on any copies they distribute. This idea is referred to as copyleft.
  Design and implementation 
  The initial plan for GNU was to be mostly Unix-compatible, while adding enhancements where they were useful. The design of the kernel was GNU's largest departure from "traditional" Unix. GNU's kernel was to be a multi-server micro-kernel.
  The GNU Hurd runs on a microkernel (currently Mach) and consists of a set of programs called servers that offers the same functionality as the traditional Unix kernel (or Linux).
  GNU (using Hurd) can be tried using a live CD. (See External links).
  By 1990, the GNU system had an extensible text editor (Emacs), a very successful optimizing compiler (GCC), and most of the core libraries and utilities of a standard Unix distribution. The main component still missing was the kernel. In the GNU Manifesto, Stallman had mentioned that "an initial kernel exists but many more features are needed to emulate Unix." He was referring to TRIX, a remote procedure call kernel developed at MIT, whose authors had decided to distribute for free, and was compatible with Version 7 Unix. In December 1986, work had started on modifying this kernel. However, the developers eventually decided it was unusable as a starting point, primarily because it only ran on "an obscure, expensive 68000 box" and would therefore have to be ported to other architectures before it could be used. By 1988, the Mach message-passing kernel being developed at Carnegie Mellon University was being considered instead, although its release as free software was delayed till 1990 while its developers worked to remove code owned by AT&T.
  Since the Mach microkernel, by design, provided just the low-level kernel functionality, the GNU Project had to develop the higher-level parts of the kernel, as a collection of user programs. Initially, this collection was to be called Alix, but developer Michael Bushnell later preferred the name Hurd, so the Alix name was moved to a subsystem and eventually dropped completely. Eventually, development of the Hurd stalled due to technical reasons and personality conflicts.
  GNU/Hurd refers to the GNU OS distribution that uses GNU Hurd as its core. GNU Hurd is the set of programs or servers run on top of a microkernel (it currently uses the GNU Mach microkernel, but efforts port the Hurd to the L4 microkernel are currently ongoing). The "GNU" in GNU Hurd indicates that it is a part of the GNU project, while "GNU/Hurd" distinguishes it as one of the two currently available GNU systems, that is, Linux-based GNU systems (or "GNU/Linux") as opposed to Hurd-based GNU systems (or "GNU/Hurd"). Just "GNU" refers to GNU/Hurd or a Hurd-based GNU system. "GNU/Linux" is pronounced "GNU-slash-Linux", or more often, just "GNU Linux". However, the FSF contests that "GNU Linux", by the rules of the English language, refers to a distribution of the kernel Linux by the GNU project or GNU project's version of it; "GNU/Linux", they say, makes it clear that a person is referring to the combination of the kernel Linux and the GNU userland binaries, forming a complete GNU OS. Linus Torvalds, original author of the kernel, does not approve of the term "GNU/Linux"; he prefers "GNU Linux" if the GNU project "wants its own distribution."
  In 1991, Linus Torvalds wrote the Unix-compatible Linux kernel. Although it was not originally free software, Torvalds changed the license to the GNU GPL in 1992. Linux was further developed by various programmers over the Internet. In 1992, it was combined with the GNU system, resulting in a fully functional free operating system. The GNU system is most commonly encountered in this form, usually referred to as a "GNU/Linux system" or a "Linux distribution". As of 2005, Hurd is in slow development, and is now the official kernel of the GNU system. There is also a project working on porting the GNU system to the kernels of FreeBSD and NetBSD.
  On the 20th anniversary of the GNU Project (January 5, 2004), the Irish Free Software Organisation was founded to promote free software in Ireland.
  GNU software 
  Prominent components of the GNU system include the GNU Compiler Collection (GCC), the GNU C Library (glibc), the GNU Emacs text editor, and the GNOME graphical desktop.
  Many GNU programs have been ported to other operating systems and are often installed on proprietary UNIX systems to replace the proprietary utilities. As well as giving users freedom, many of these GNU programs have been proven to be more reliable than their proprietary Unix counterparts [2]. The reputation of GNU software is especially good for its software development tools, which are sometimes collectively called the GNU toolset. Making up but a small fraction of the GNU system as a whole, some people consider the toolset to be of superior quality to many of the equivalent Unix versions, even if the GNU versions are not totally POSIX compliant. With the popularity of GNU/Linux systems, many developers install the GNU toolset on other systems for compatibility or to capture uniform behavior across platforms. Many GNU programs have also been ported to Microsoft Windows, Mac OS X, and various other proprietary platforms, however, the motive for developing these programs was to contribute to replacing those systems with free software, not to enhance them.
  GNU理念
  我从www.gnu.org上找到了一篇名叫“Why Software Should Be Free”的文章,里面阐述了FREE SOFTWARE理念,这里翻译并列出其主要观点。注意,以下并非原文,但基本符合原意
  支持软件私有的人通常持有以下观点,软件私有可以为软件开发者提供必要的经济支持,而如果没有这种经济支持,那么将没有人会去开发软件。这种观点的逻辑是要么接受软件私有,要么失去软件,而事实上这是一种变相的讹诈,软件私有并非是软件存在的必要条件。如果我们假设“软件私有”与“软件开发”是无关的,那么我们就应该分别分析两者的利弊,那个方面对社会有害,我们就应该单独的抛弃它而不是把两者捆绑在一起。
  现在我们来分析一下软件私有的坏处。一共有四点;
  一, 它限制了软件的使用人数。假设一个软件已经开发出来,那么这个软件的所有投资都已经付出(无论有多少人使用它),从社会的角度来看,任何限制软件使用的行为都是对其投资的浪费
  二, 它破坏了社会和谐。假如你和你的邻居都想使用同一个软件,你购买了这个软件,你的邻居向你借,那你就会陷入两难的境地。如果借,那么你违反了版权法,如果不借,你就违背邻里互助的美德。
  三, 它不允许用户修改代码,这导致了用户无法根据自己的需求重写软件。如果一个现有的软件不能满足需求(很可能只要在原有的修改少量代码即可),用户要么自己重新写一个软件,要么就忍受现有软件的不完美。
  四, 它不利于软件的开发。“我看得远,是因为我站在巨人的肩膀上”,但是因为软件私有,我们无法获得原代码(因为这属于商业机密),所以我们每个人都无法借鉴现有的软件开发经验,至多我们只能站在周围人的肩膀上
  那么是不是消除了软件私有,我们就无法开发软件了呢?不是的,理由有两点
  一, 编程是一件有趣的事情。70年代还没有软件私有的观念,但人们同样开发了很多软件,他们是完全是出于自身的喜好去编程,并没有想到利用编程使自己变得富有。但是后来人心不古,世风日下,人们被吸引去开发软件仅仅是为了获得高的回报,所以才有了今天的局面;如果我们降低开发软件的回报(通过自由软件),事情就会慢慢回到从前,人们就又会出于自身的兴趣去开发软件。另外,相对于使程序员变得富有,仅仅养活一个程序员还是很容易做到的
  二, 自由软件也是有资金保障的。硬件开发商有时会开发相关的软件,在70年代这些软件通常是自由软件。大学也会开发软件,虽然今天他们会出售这些软件,但是在70年代,这些也是免费的。如果我们取消了软件私有制度,那么这些大学显然会被迫重新开发自由软件。而且虽然自由软件意味着软件本身是免费,但是我们可以对为软件提供服务来收取费用,比如说使用培训费,升级维护费等。另外虽然软件本身免费,但软件所依附的介质还是要收费的,靠出售这些介质也能获得一定收入。最后,自由软件组织通常会得到相当可观的捐助。所以就算是取消了软件私有制度,我们也有资金支持,不用担心没有软件用
  自由软件相对于软件私有制度还有如下的优越性
  一, 自由软件极大的提高了软件开发的生产力,因为他能使软件得到最大范围的利用,使用户能够定制自己的软件,使我们能够自由的复用别人的开发成果而避免重复劳动,使学生们能够更好的学习软件开发。
  二, 软件私有制度会将商业利益引入到软件开发中,这往往会带来恶性竞争。良性的竞争是“使优秀的事物生存下来”,而恶性竞争是“使自己存活下来,不管优秀与否。
  三, 自由软件制度不是苏联式的共产主义。苏联式的共产主义制度从本质上是中央集权,并且拒绝向公众公开信息,从这个角度来说,控制软件传播的软件私有制度才是真正的苏式共产主义
  前提与结论
  软件使用者的权益与程序开发者的权益具有同等的地位,在此基础上我们讨论何种制度可以使两者的利益最大化。以上是我立论的前提,对于那些认为软件开发者的利益至高无上的人,我只好说“道不同不相为谋”。
  软件私有化是人类私欲的一种体现形式,它是典型的为了一己私利损害公共利益的行为。我们不是活在原始森林里的野蛮人,我们生活在文明社会,人们应该互帮互助。同志们,至少在软件领域,让我们摒弃那种野蛮人的行径,建立一个充满协作精神的新社会吧!


你可能感兴趣的:(linux,unix,System,emacs,compiler,Components)