linux和GNU计划


一.GNU计划

回到顶部
GNU为GNU is Not Unix的递归缩写,意思是GNU并不是Unix。
Gnu在英文中原意为非洲牛羚,发音与new相同,为避免与new这个单词混淆,GNU的发音为Guh-NOO。
按照GNU的定义GNU=GNU is Not Unix,我们可以将GNU无限展开:GNU is Not Unix is Not Unix is Not Unix is Not Unix is Not Unix...
gun吉祥物 GNU计划由Richard Mathew Stallman于1984年发起, 目前我们所使用的大多数自由软件或开源软件,几乎都直接或间接受益于GNU计划! GNU计划对于整个自由软件与开源软件发展具有不可磨灭的作用!
Stallman在AI实验室的工作经历,使他认为写程序最大的快乐就是将自己开发的软件连同软件源代码一起分享给用户! 每个人所使用的计算机软硬件环境并不相同, 程序源码(Source code)应该和程序一起发布, 这样就可以方便大家根据自己的计算机环境做相应的修改! 并且还可以帮助改进程序的错误,使程序越来越健壮,越来越优秀! 这就是GNU发起的自由软件(FreeSoftware)运动!
Richard Mathew Stallman生于1953年, 网络ID为RMS!
Stallman 1971年进入黑客圈中相出名的人工智能实验室AI Lab.。 那时的黑客专指计算机技术造诣很深的技术大牛,而非破坏计算机的怪客cracker!
AI实验室的黑客们具有强烈的软件分享精神,他们喜欢将自己的程序连同源代码一起发布,供人们学习讨论! 同时也可以让自己写的软件程序越来越优秀。 实验室的分享文化对Stallman产生了深远的影响。
Stallman一直在lisp操作系统上开发软件,后来Stallman意识到lisp是麻省理工学院的专利软件,无法自由分享。 1983年,Stallman接触到了unix,虽然Unix也是专利软件, 但Unix架构相对比较开放,并且unix具有很强的移植性。 于是Stallman开始将原本在lisp上开发的程序软件移植到Unix系统。
1984年,Stallman启动GNU计划, GNU计划的目的是建立一个自由、开放的Unix操作系统(FreeUnix)。 要实现这样一个宏伟的目标,首先必须开发出一个操作系统内核。但是开发操作系统内核的开发难度非常大。 Stallman反其道而行,先开发出可以在Unix上面运行的小程序。 Stallman参考Unix上面现有的软件,并依据这些软件的作用开发出功能相同的软件, 为了避免版权纠纷,在开发期间Stallman绝不看其他软件的源代码。
stallman将开发的这些软件工具连同源代码免费发布出去, 人们发现这些免费的软件工具和收费的商业软件功能没有多大的区别,甚至比UNIX原来的软件还好用,于是转而使用GNU软件, 这样GNU计划也就逐渐打开了知名度。
不论是什么软件, 都必须经过编译器编译成二进制可执行文件(binary program)后才能够执行, 当时C语言编译器程序版本众多,但都是专利软件。如果能有一款免费使用的编译器软件, 那么GNU在人们心目中的地位就不言而喻了,当时Stallman意识到编译软件的重要性! 于是便开始编写C语言编译器程序,这就是后来大名鼎鼎的GNU C Compiler(gcc)!
但在开发gcc过程中遇到了很多困难,于是stallman先将之前就已经写好的文本编辑器Emacs移植到Unix上。 普通的文本编辑器无法进程程序语法的检验,只能在编译阶段由编译器检查程序语法。 而Emacs可以在编写程序的过程中进行语法检验,大大提高了软件工程师编写程序的效率! 此时因特网尚未流行,Stallman便将Emacs以磁带(tape)的形式出售,凭借着Emacs优秀的程序编写能力,很快就受到人们的喜爱。 stallman也因此赚到了一笔资金,为后续建立自由软件基金会提供物质基础。
1985年Richard Stallman创立了自由软件基金会(FSF, Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。 GNU计划大部分是由个人志愿者无偿贡献,FSF也会聘请程序员帮助开发软件。最终成功完成了编译器GCC的开发工作。 GCC的成功开发对于GNU具有里程碑意义。
到1990年,GNU计划已经开发出了可在unix环境下运行的大部分基础软件工具和函数库。
这些软件中具有重大意义的有如下几个:
功能强大的文本编辑器Emacs;
程序编译器GCC(GNU Compiler Collection,GNU编译器集合);
一套函数库glibc(GNU C library);
可以用来操作系统的界面工具BASH shell。
这些基础软件为后来的软件开发者提供了巨大的便利,即便到今天这些基础软件工具依然是软件开发者和运维工程师的强大利器! 为自由软件的壮大提供了坚实的基础!
GNU工具还被广泛地移植到Windows和Mac OS上。
当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的 Cygnus Solutions。
但是因为当时还没有出现linux,所有的这些软件工具都是在unix操作系统上面开发,由于UNIX操作系统是商业软件,具有商业版权。 因此GNU计划的目标还远远没有实现,离建立一个自由的Unix操作系统的目标还差重要的一步,就是需要一个"自由的unix内核", 事实上,GNU也有自己的内核开发计划,这个内核称为hurd,是一个架构非常先进的内核。 但是由于开发者在开发的过程中对于系统的要求过于严谨,导致hurd正式版的发布一推再推!
直到1991年,linux作为"自由的unix内核"横空出世... UNIX是一种广泛使用的商业操作系统的名称。由于GNU将要实现UNIX系统的接口标准,因此GNU计划可以分别开发不同的操作系统部件。 GNU计划采用了部分当时已经可自由使用的软件,例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的自由软件。

二.GNU通用公共许可证GPL

回到顶部
1985年,在创立自由软件基金会后,为了避免GNU所开发的自由软件被其他人变成专利软件, 引发版权纠纷。 Richard Stallman与律师草拟了著名的通用公共许可证GPL(General Public License), 并将其称为copyleft(相对于专利软件的copyright!)。所有GUN计划开发的软件都会附上GPL版权声明。 FSF核心观念认为版权制度是促进社会进步的手段, 版权本身不是自然权力。 GNU认为任何软件都应当以自由软件发布。要让一个软件成为自由软件您需要把它以自由软件许可证发布。 Stallman对GPL中的Free解释如下:
"Free software" is a matter of liberty, not price. To understand the concept, you should think of "free speech", not "free beer". "Free software" refers to the users' freedom to run, copy, distribute, study, change,and improve the software
具备GPL声明的软件就成为自由软件,Free Software(自由软件)中的free即表示自由也表示免费,但是更侧重自由! 你可以拥有自由呼吸的权力、拥有自由发表言论的权力,但是并不代表你可以喝免费的啤酒(free beer)! 自由软件的重点并不是免费,而是自由freedom。 用户可以自由的执行、复制、再发行、学习、修改与强化自由软件。
GPL通过如下途径实现这一目标:
1.软件应该以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。
2.如果用户的软件使用了受GPL保护的任何软件的一部分,那么该软件就继承了GPL软件,并因此而成为GPL软件,也就是说必须随应用程序一起发布源代码。
3.GPL并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。
GPL规定用户可以:
获取软件和程序源码;
自由的复制该软件;
根据自己的需求修改程序源码;
可以将修改后的软件再次发布;
用户应该将修改过的程序代码回馈于社群!
GPL同时规定用户不可以:
修改授权:不能将一个GPL授权的自由软件,在修改后取消GPL授权
单纯贩卖:不能单纯的贩卖自由软件。自由软件可以搭配售后服务和相关介质一起出售
Stallman史托曼就是通过贩卖Emacs磁带取得一些活动经费,不至于让自己的生活过于拮据!
由于GPL很难被商业软件所应用,它要求调用它的库的代码也得GPL,全部开放,并且一同发布,不能直接连接。 后来GNU推出了LGPL许可证,在GPL与LGPL许可证保护下发布源代码的结果很相似,对旧代码所做的任何修改对于想知道这些代码的人必须是公开的, 唯一真正的不同之处在于私人版权代码是否可以与开放源代码相互连接, LGPL允许实体连接私人代码到开放源代码,并可以在任何形式下发布这些合成的二进制代码。 只要这些代码是动态连接的就没有限制。使用动态链接时,即使是程序在运行中调用函数库中的函数时,应用程序本身和函数库也是不同的实体。 到目前为止,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 )。
我们通常使用 GNU 通用公共许可证 (GNU GPL) 发布软件,但有时我们也使用 其它自由软件许可证发布软件。 在 GNU 软件包中,GNU 只使用与GNU GPL兼容的许可证。 自由软件的文档应当是 自由文档 ,以便人们可以随着软件的改进去更新它或是重新发布它。 若要把文档以自由文档的形式发布,您需要使用自由文档许可证。我们通常使用 GNU 自由文档许可证 (GNU FDL), 但少数情况下我们也使用 其它的自由文档许可证 。 到目前为止,GNU软件包列表的基本组成包括GNU编译器套装(GCC)、GNU的C库(glibc)、以及GNU核心工具组(coreutils),另外也是GNU除错器(GDB)、 GNU二进制实用程序(binutils)的GNU Cashshell中和GNOME桌面环境。 GNU开发人员已经向GNU应用程序和工具的Linux移植,也广泛应用在其它操作系统中使用,如BSD变体的Solaris,和OS X作出了贡献。
许多GNU程序已经被移植到其他操作系统,包括专有软件,如Microsoft Windows和OS X. GNU计划已经被证明是比他们的专有Unix更为可靠。截至2015年11月,全国共有466 GNU软件包(包括退役,但不包括383 )主办的官方GNU开发的网站。
关于FSF和GNU更深入的信息可以参考GNU官网: http://www.gnu.org!
更多的 FSF 开发的软件可以参考:
https://www.fsf.org/resources

三.GNU和linux

回到顶部

1991年Linus Torvalds编写出了与UNIX兼容的Linux操作系统内核并在GPL条款下发布。Linux之后在网上广泛流传,许多程序员参与了开发与修改。 1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。 (尽管如此GNU计划自己的内核Hurd依然在开发中,已经发布Beta版本。)

GNU项目的官方核心是GNU Hurd;然而,截至2012年,Linux内核正式以Linux-libre为名成为GNU项目中的一部分,并删除了所有专有组件的变种。 像FreeBSD内核其他核心依然和GNU软件合作,形成一个工作的操作系统。 FSF认为Linux内核,与GNU工具和实用程序使用时,应承认自己为GNU变种,并促进改成GNU/Linux的这类系统名称(导致GNU/Linux命名争议)。 GNU工程已认可的Linux发行版,如gNewSense,TRISQUEL和Parabola GNU/Linux-libre。 不使用Hurd作为核心的GNU的其他变种包括的Debian GNU / kFreeBSD和Debian GNU / NetBSD的,将得以对BSD的核心实现GNU的早期计划。

四.自由软件与商业

回到顶部
GPL规定自由软件不可以被单独的售卖,但是因为他们大多都是贩卖售后服务!所以,他们所使用的自由软件, 都可以在他们的网站上面下载! (当然,每个厂商他们自己开发的工具软件就不是 GPL 的授权软件了! ) 但是,你可以购买他们的 Linux 光盘,如果你购买了光盘,他们会提供相关的手册说明文件, 同时也会提 供你数年不等的咨询、售后服务、软件升级与其他协力工作等等的附加价值!
所以说,目前自由软件工作者,他们所赖以维生的,几乎都是在『服务』这个领域呢! 毕竟自由软 件并不是每个人都会撰写,有人有需要你的自由软件时,他就会请求你的协助, 此时,你就可以透 过服务来收费了!这样来说, 自由软件确实还是具有商业空间的喔!很多人对于 GPL 授权一直很疑惑,对于 GPL 的商业行为更是无法接受! 关于这一点, GPL可以从事商业行为的! 而很多的作者也是藉由这些商业行为来得以取得生活所需,更进一步去发展更优秀的自由软件! GPL 对于自由软件的作者有何优点呢?大致的优点有这些: o 软件安全性较佳;
o 软件执行效能较佳;
o 软件除错时间较短;
o 贡献的程序源码永远都存在。
这是因为既然是提供程序源码的自由软件,那么你的程序代码将会有很多人帮你查阅, 如此一来,程 序的漏洞与程序的优化将会进展的很快!所以,在安全性与效能上面, 自由软件一点都不输给商业 软件喔!此外,因为 GPL 授权当中,修改者并不能修改授权, 因此,你如果曾经贡献过程序代码, 嘿嘿!你将名留青史呢!不错吧! ^_^
对于程序开发者来说, GPL 实在是一个非常好的授权,因为大家可以互相学习对方的程序撰写技巧, 而且自己写的程序也有人可以帮忙除错。虽然终端用户或许不会自己编译程序代码或者是帮人家除错,但是终 端用户使用的软件绝大部分就是 GPL 的软件, 全世界有一大票的工程师在帮你维护你的系统,这真是一件非常棒的事情!
就跟人类社会的科技会进步一样,授权也会进步喔!因应程序源码分区与重组的问题, 与其他开源软件的授权包容性,以及最重要的数字版权管理 (Digital Rights Management, DRM) 等问题,GPL 目前 已经出到第三版 GPLv3。但是,目前使用最广泛的,还是 GPLv2 喔!包括 Linux 核心就还是使用 GPLv2 的说!

五.开放程序源码促进会(Open Source Initiative)

回到顶部
自由软件英文为free software,free在英语里既是免费也是自由的意思,这往往让人产生误解, 大部分人都把free理解成免费的意思了,这非常不利于自由软件的商业发展。 1998年,开放程序源码促进会(Open Source Initiative)成立,提出开放程序源码(Open Source,亦可简称开源软件)的概念! 并非软件可以被读取程序源码就可以被称为开源软件喔!该软件的授权必须要符合底下的基本需求才可以算是 open source:
公布程序源码且用户具有修改权: 用户可以任意的修改与编译程序代码,这点与自由软件差异不大;
任意的再散布:该程序代码全部或部份可以被贩卖,且程序代码可成为其他软件的组件之一,作者不该宣称具有拥有权或收取其他额外费用。
必须允许修改或衍生的作品,且可让再发布的软件使用相似的授权来发表即可。
承上,用户可使用与原本软件不同的名称或编号来散布。
不可限制某些个人或团体的使用权
不可限制某些领域的应用:例如不可限制不能用于商业行为或者是学术行为等特殊领域等等
不可限制在某些产品当中,亦即程序代码可以应用于多种不同产品中。
不可具有排他条款,例如不可限制本程序代码不能用于教育类的研究中,诸如此类。
根据上面的定义,GPL自由软件也可以算是开源软件的一个,只是对于商业应用的限止稍微多一些而已。 与GPL自由软件相比,其他开源软件的授权相对比较宽松! 例如再发布的授权可以跟原本的软件不同; 另外,开源软件的全部或部份可作为其他软件的一部分,且其他软件无须使用与开源软件相同的授权来发布! 这跟GPL自由软件有很大差异! 自由软件的GPL授权规定,任何软件只要用了GPL的全部或部份程序代码,那么该软件就得要使用GPL的授权! 这对于自由软件的保障相当大! 但对于想要保有商业公司自己的商业机密的专属软件来说,要使用GPL授权还是怕怕的! 这也是后来商业公司拥抱其他open source开源软件授权的缘故!因为可以用于商业行为! 更多的差异或许可以参考一下开源促进会的说明。
另外,Open source这个名词只是一个指引,而实际上并不是先有 open source 才有相关的授权。早 在open source出来之前就有些开源软件的授权存在了(例如GPL)! 符合Open source理念的授权相当多,比较知名的如Apache / BSD / GPL / MIT等。
Apache License 2.0
BSD 3-Clause "New" or "Revised" license
BSD 2-Clause "Simplified" or "FreeBSD" license
GNU General Public License (GPL)
GNU Library or "Lesser" General Public License (LGPL)
MIT license
Mozilla Public License 2.0
Common Development and Distribution License
每个授权详细的内容也可以参考OSI协会官网: www.opensource.org
如前所述,GPL 也是合乎 Open source 所定义的授权之一,只是它更着重于保护自由软件本身的学习与发展就是了! 那如果你想要开发开源软件时, 到底使用哪种授权比较好呢?其实跟妳对这个软件的未来走向的定义有关啦! 简单的来说,如果你的软件未来你允许它用于商业活动中, 可以考虑 BSD 之类的授权, 如果你的软件希望少一些商业色彩,GPLv2 大概是不二选择啰!那如果你的软件允许分支开发, 甚至可以考虑分成两种版本分别授权哩! ^_^
专属软件/专利软件 (close source)相对于 Open Source 的软件会发布程序源码, Close source 的程序则仅推出可执行的二进制程序(binaryprogram)而已。 这种软件的优点是有专人维护,你不需要去更动他;缺点则是灵活度大打折扣,用户无法变更该程序成为自己想要的样式! 此外,若有木马程序或者安全漏洞,将会花上相当长的一段时间来除错! 这也是所谓专利软件(copyright)常见的软件出售方式。
虽然专利软件常常代表就是需要花钱去购买,不过有些专利软件还是可以免费提供大众使用的! 免费的专利软件代表的授权模式有:
Freeware:
http://en.wikipedia.org/wiki/Freeware
不同于 Free software,Freeware 为『免费软件』而非『自由软件!』虽然它是免费的软件,但是不见得要公 布其程序源码, 端看发布者的意见啰!这个东西与 Open Source 毕竟是不太相同的东西喔!此外,目前很多 标榜免费软件的程序很多都有小问题! 例如假藉免费软件的名义,实施用户数据窃取的目的! 所以『来 路不明的软件请勿安装!
Shareware:
http://en.wikipedia.org/wiki/Shareware
共享件这个名词就有趣了!与免费软件有点类似的是,Shareware 在使用初期,它也是免费的,但是, 到 了所谓的『试用期限』之后,你就必须要选择『付费后继续使用』或者『将它移除』的宿命~ 通常,这些 共享件都会自行撰写失效程序,让你在试用期限之后就无法使用该软件。
简单说明 GNU General Public License ( GPL ) 与 Open Source 的精神:
1. GPL 的授权之软件,乃为自由软件(Free software),任何人皆可拥有他;
2. 开发 GPL 的团体(或商业企业)可以经由该软件的服务来取得服务的费用;
3. 经过 GPL 授权的软件,其属于 Open source 的情况,所以应该公布其原始码;
4. 任何人皆可修改经由 GPL 授权过的软件,使符合自己的需求;
5. 经过修改过后 Open source 应该回馈给 Linux 社群。

initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读