什么是GNU计划?

Category : 工作学习 / Tags : , / Date : 2009.04.10 / /

  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理念

  www.gnu.org上找到了一篇名叫“Why Software Should Be Free”的文章,里面阐述了FREE SOFTWARE理念,这里翻译并列出其主要观点。注意,以下并非原文,但基本符合原意

  支持软件私有的人通常持有以下观点,软件私有可以为软件开发者提供必要的经济支持,而如果没有这种经济支持,那么将没有人会去开发软件。这种观点的逻辑是要么接受软件私有,要么失去软件,而事实上这是一种变相的讹诈,软件私有并非是软件存在的必要条件。如果我们假设“软件私有”与“软件开发”是无关的,那么我们就应该分别分析两者的利弊,那个方面对社会有害,我们就应该单独的抛弃它而不是把两者捆绑在一起。

  现在我们来分析一下软件私有的坏处。一共有四点:

  一、它限制了软件的使用人数。假设一个软件已经开发出来,那么这个软件的所有投资都已经付出(无论有多少人使用它),从社会的角度来看,任何限制软件使用的行为都是对其投资的浪费
  二、 它破坏了社会和谐。假如你和你的邻居都想使用同一个软件,你购买了这个软件,你的邻居向你借,那你就会陷入两难的境地。如果借,那么你违反了版权法,如果不借,你就违背邻里互助的美德。
  三、 它不允许用户修改代码,这导致了用户无法根据自己的需求重写软件。如果一个现有的软件不能满足需求(很可能只要在原有的修改少量代码即可),用户要么自己重新写一个软件,要么就忍受现有软件的不完美。
  四、 它不利于软件的开发。“我看得远,是因为我站在巨人的肩膀上”,但是因为软件私有,我们无法获得原代码(因为这属于商业机密),所以我们每个人都无法借鉴现有的软件开发经验,至多我们只能站在周围人的肩膀上

  那么是不是消除了软件私有,我们就无法开发软件了呢?不是的,理由有两点

  一、编程是一件有趣的事情。70年代还没有软件私有的观念,但人们同样开发了很多软件,他们是完全是出于自身的喜好去编程,并没有想到利用编程使自己变得富有。但是后来人心不古,世风日下,人们被吸引去开发软件仅仅是为了获得高的回报,所以才有了今天的局面;如果我们降低开发软件的回报(通过自由软件),事情就会慢慢回到从前,人们就又会出于自身的兴趣去开发软件。另外,相对于使程序员变得富有,仅仅养活一个程序员还是很容易做到的
  二、自由软件也是有资金保障的。硬件开发商有时会开发相关的软件,在70年代这些软件通常是自由软件。大学也会开发软件,虽然今天他们会出售这些软件,但是在70年代,这些也是免费的。如果我们取消了软件私有制度,那么这些大学显然会被迫重新开发自由软件。而且虽然自由软件意味着软件本身是免费,但是我们可以对为软件提供服务来收取费用,比如说使用培训费,升级维护费等。另外虽然软件本身免费,但软件所依附的介质还是要收费的,靠出售这些介质也能获得一定收入。最后,自由软件组织通常会得到相当可观的捐助。所以就算是取消了软件私有制度,我们也有资金支持,不用担心没有软件用

  自由软件相对于软件私有制度还有如下的优越性

  一、自由软件极大的提高了软件开发的生产力,因为他能使软件得到最大范围的利用,使用户能够定制自己的软件,使我们能够自由的复用别人的开发成果而避免重复劳动,使学生们能够更好的学习软件开发。
  二、软件私有制度会将商业利益引入到软件开发中,这往往会带来恶性竞争。良性的竞争是“使优秀的事物生存下来”,而恶性竞争是“使自己存活下来,不管优秀与否。
  三、自由软件制度不是苏联式的共产主义。苏联式的共产主义制度从本质上是中央集权,并且拒绝向公众公开信息,从这个角度来说,控制软件传播的软件私有制度才是真正的苏式共产主义

  前提与结论

  软件使用者的权益与程序开发者的权益具有同等的地位,在此基础上我们讨论何种制度可以使两者的利益最大化。以上是我立论的前提,对于那些认为软件开发者的利益至高无上的人,我只好说“道不同不相为谋”。

  软件私有化是人类私欲的一种体现形式,它是典型的为了一己私利损害公共利益的行为。我们不是活在原始森林里的野蛮人,我们生活在文明社会,人们应该互帮互助。同志们,至少在软件领域,让我们摒弃那种野蛮人的行径,建立一个充满协作精神的新社会吧!

  GNU/Linux

  GNU/Linux是GNU计划的支持者与开发者,特别是其创立者Richard Stallman对于一个以Linux闻名的类Unix操作系统的称呼。

  由林纳斯·托瓦兹及其他人士开发的Linux并不是一个完整的操作系统,而仅仅是一个类Unix内核。事实上,Linux一开始是以完成Minix内核的功能为目标,Linus想做一个“比Minix更好的Minix”。而GNU计划始于1984年,终极目标是完成一套基于自由软件的完整作业操作系统。到1991年Linux的第一个版本公开发行时,GNU计划已经完成除了操作系统内核之外的大部分软件,其中包括了一个壳程序(shell),C语言程序库以及一个C语言编译器。林纳斯·托瓦兹及其他早期Linux开发人员加入了这些工具,而完成了Linux操作系统。但是尽管Linux是在GNU通用公共许可证下发行,它却不是GNU计划的一部分。

  正是由于Linux使用了许多GNU程序,Richard Stallman认为应该将该操作系统称为“GNU/Linux”比较恰当。

  有部分Linux套件,包括了Debian,采用了“GNU/Linux”的称呼。但大多数商业Linux套件依然将操作系统称为Linux。有些人也认为“操作系统”一词指的应该只是系统的内核,其他程序都只能算是应用软件,这么一来,该操作系统的内核应叫Linux,而Linux套件是在Linux内核的基础上加入各种GNU工具。
  一些人拒绝使用“GNU/Linux”作为操作系统名称的人认为:1)Linux朗朗上口;名字较短又好记;2)Richard Stallman直到1990年代中期,Linux开始流行后才要求更名。

  大多数GNU/Linux套件使用XFree86或X.Org服务器作为图像系统,并使用GNOME和KDE等桌面管理器。



无觅相关文章插件,快速提升流量

Comments

There are no comments.

Leave a Reply

You must be logged in to post a comment.

传奇 似水流年 绽放 风筝 八月照相馆