GNU歌手资料
基本简介
GNU是“GNU's Not Unix”的递归缩写。Stallman宣布GNU应当发音为Guh-NOO以避免与new这个单词混淆(注:Gnu在英文中原意为非洲牛羚,发音与new相同)。UNIX是一种广泛使用的商业操作系统的名称。由于GNU将要实现UNIX系统的接口标准,因此GNU计划可以分别开发不同的操作系统部件。GNU计划采用了部分当时已经可自由使用的软件,例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的自由软件。
相关历史
1985年Richard Stallman又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的Cygnus Solutions。
到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs。GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。以及大部分UNIX系统
GNU操作系统的内核Linux
的程序库和工具。唯一依然没有完成的重要组件就是操作系统的内核(称为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
Linux内核的缔造者Linus Torvalds
通过如下途径实现这一目标:
1.它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。
2.如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码。
3.GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。
由于GPL很难被商业软件所应用,它要求调用它的库的代码也得GPL,全部开放,并且一同发布,不能直接连接。所以后来GNU推出了LGPL许可证
在GPL与LGPL许可证保护下发布源代码的结果很相似,对旧代码所做的任何修改对于想知道这些代码的人必须是公开的,唯一真正的不同之处在于私人版权代码是否可以与开放源代码相互连接,LGPL允许实体连接私人代码到开放源代码,并可以在任何形式下发布这些合成的二进制代码。只要这些代码是动态连接的就没有限制。(使用动态链接时,即使是程序在运行中调用函数库中的函数时,应用程序本身和函数库也是不同的实体)
自由软件
“自由软件” 是权利问题,不是价格问题。要理解这个概念,自由应该是“言论自由”中的“自由”,而不是“免费啤酒”中的“免费”。
自由软件关乎使用者运行、复制、发布、研究、修改和改进该软件的自由。 更精确地说,自由软件赋予软件使用者四种自由:
不论目的为何,有运行该软件的自由(自由之零)。
有研究该软件如何运行,以及按需改写该软件的自由(自由之一)。取得该软件源代码为达成此目的之前提。
有重新发布拷贝的自由,这样你可以借此来敦亲睦邻(自由之二)。
有改进该软件,以及向公众发布改进的自由,这样整个社群都可受惠(自由之三)。取得该软件源码为达成此目的之前提。
GNU理念
我从www.gnu.org上找到了一篇名叫“Why Software Should Be Free”的文章,里面阐述了FREESOFTWARE理念,这里翻译并列出其主要观点。注意,以下并非原文,但基本符合原意。
支持软件私有的人通常持有以下观点,软件私有可以为软件开发者提供必要的经济支持,而如果没有这种经济支持,那么将没有人会去开发软件。这种观点的逻辑是要么接受软件私有,要么失去软件,而事实上这是一种变相的讹诈,软件私有并非是软件存在的必要条件。如果我们假设“软件私有”与“软件开发”是无关的,那么我们就应该分别分析两者的利弊,那个方面对社会有害,我们就应该单独的抛弃它而不是把两者捆绑在一起。
现在我们来分析一下软件私有的坏处。一共有四点;
一, 它限制了软件的使用人数。假设一个软件已经开发出来,那么这个软件的所有投资都已经付出(无论有多少人使用它),从社会的角度来看,任何限制软件使用的行为都是对其投资的浪费。
二, 它破坏了社会和谐。假如你和你的邻居都想使用同一个软件,你购买了这个软件,你的邻居向你借,那你就会陷入两难的境地。如果借,那么你违反了版权法,如果不借,你就违背邻里互助的美德。
三, 它不允许用户修改代码,这导致了用户无法根据自己的需求重写软件。如果一个现有的软件不能满足需求(很可能只要在原有的修改少量代码即可),用户要么自己重新写一个软件,要么就忍受现有软件的不完美。
四, 它不利于软件的开发。“我看得远,是因为我站在巨人的肩膀上”,但是因为软件私有,我们无法获得原代码(因为这属于商业机密),所以我们每个人都无法借鉴现有的软件开发经验,至多我们只能站在周围人的肩膀上。
那么是不是消除了软件私有,我们就无法开发软件了呢?不是的,理由有两点
一, 编程是一件有趣的事情。70年代还没有软件私有的观念,但人们同样开发了很多软件,他们是完全是出于自身的喜好去编程,并没有想到利用编程使自己变得富有。但是后来人心不古,世风日下,人们被吸引去开发软件仅仅是为了获得高的回报,所以才有了现在的局面;如果我们降低开发软件的回报(通过自由软件),事情就会慢慢回到从前,人们就又会出于自身的兴趣去开发软件。另外,相对于使程序员变得富有,仅仅养活一个程序员还是很容易做到的。
二, 自由软件也是有资金保障的。硬件开发商有时会开发相关的软件,在70年代这些软件通常是自由软件。大学也会开发软件,虽然他们会出售这些软件,但是在70年代,这些也是免费的。如果我们取消了软件私有制度,那么这些大学显然会被迫重新开发自由软件。而且虽然自由软件意味着软件本身是免费,但是我们可以对为软件提供服务来收取费用,比如说使用培训费,升级维护费等。另外虽然软件本身免费,但软件所依附的介质还是要收费的,靠出售这些介质也能获得一定收入。最后,自由软件组织通常会得到相当可观的捐助。所以就算是取消了软件私有制度,我们也有资金支持,不用担心没有软件用。
自由软件相对于软件私有制度还有如下的优越性
一, 自由软件极大的提高了软件开发的生产力,因为他能使软件得到最大范围的利用,使用户能够定制自己的软件,使我们能够自由的复用别人的开发成果而避免重复劳动,使学生们能够更好的学习软件开发。
二, 软件私有制度会将商业利益引入到软件开发中,这往往会带来恶性竞争。良性的竞争是“使优秀的事物生存下来”,而恶性竞争是“使自己存活下来,不管优秀与否。
三, 自由软件制度不是苏联式的共产主义。苏联式的共产主义制度从本质上是中央集权,并且拒绝向公众公开信息,从这个角度来说,控制软件传播的软件私有制度才是真正的苏式共产主义
前提与结论
软件使用者的权益与程序开发者的权益具有同等的地位,在此基础上我们讨论何种制度可以使两者的利益最大化。以上是我立论的前提,对于那些认为软件开发者的利益至高无上的人,我只好说“道不同不相为谋”。
软件私有化是人类私欲的一种体现形式,它是典型的为了一己私利损害公共利益的行为。我们不是活在原始森林里的野蛮人,我们生活在文明社会,人们应该互帮互助。同志们,至少在软件领域,让我们摒弃那种野蛮人的行径,建立一个充满协作精神的新社会吧!