|
楼主 |
发表于 2003-6-6 14:07:57
|
显示全部楼层
继续
GNU软件和GNU系统
开发一个完整的系统是个巨大的工程.为使工作简化,我决定采用任何能找到的自由软件.例如,在一开始时,我决定用TeX作为基本的文本格式;一些年后,我决定用X Window系统而不是开发一个GNU自己的视窗程序.
基于这种观点,GNU系统不仅仅是GNU软件的集合.GNU系统中有不属于GNU的软件,有些是别的小组基于别的目d的开发的,但都是自由软件,所以我们能用.
开始工程
1984年一月我从MIT辞职开始写GNU软件,离开MIT是为了使MIT不要干扰GNU成为自由软件.如果我继续留下来,MIT就可能把GNU据为己有,强加他们自己的观点,甚至于将它改造成专有软件,我不想在做了一大堆事之后才发现结果完全背离初衷:建立一个新的分享软件的社团.
然而,温斯顿教授,当时MIT的头,非常友好的请我继续使用实验室的设施.
第一步
刚开始GNU工程时,我听说有个"自由大学编译工具",也就是VUCK.(荷兰语中的"自由"写作 V.)这是一个设计用来在多种机器上编译多种语言(包括C和Pascal)的编译器.我写信问作者能否让GNU使用它.
他以嘲笑的口吻声称大学是自由的而编译器不是免费的.于是我决定为GNU写的第一个程序是一个多语种,多平台的编译器.
为了避免自己重写整个编译器,我从Pastel编译器中取来源代码,那是一个由劳伦斯 利弗莫实验室开发的多平台的编译器.它支持,并且是用扩展版本的Pascal语言写成用以作为系统设计语言.我给它加了个C语言的前端,然后移植到Motorola68000处理器上.但我不得不最终放弃了这个方案,因为它需要好几兆的空间来容纳堆栈,而68000UNIX系统只有64K.
我然后意识到Pastel编译器的功能是把整个输入的文件剖析为一棵语法树,把整棵树转换为指令链,再生成输出文件,整个过程不释放任何空间.基于这点,我决定从头开始写一个全新的编译器.这个编译器就是GCC;它没有用到Pastel编译器,但我设法保留了那个C前端.不过那是多年后的事了;首先,我做的是GNU的Emacs.
GNU Emacs
我在1984年九月开始写GNU Emacs,在1985年早些时候它可以运行了.这使我可以用UNIX系统编辑文件;因为没兴趣学vi或ed,在这之前我不得不在别的机器上进行编辑.
从这开始,人们开始想要使用GNU Emacs,但问题是如何发布它?当然,我把它放在自己使用的MIT的计算机的ftp服务器上,(这台主机prep.ai.mit.edu,成了GNU的首个ftp站点;在它几年后退役时,我们把它的名字转到新的服务器上)但那时,还有很多人不能上网,所以不能取得拷贝,我该怎么对他们说呢?
我只能说:"找个能上网的朋友给你弄个拷贝."或者就像我在最初的PDP-11Emacs上做的那样,"寄盘磁带,我拷上Emacs再寄回来."但我没有工作,正在找个能靠自由软件赚钱的方法.所以我宣称只要有人愿意出150美元,我就寄盘磁带给他.通过这种方式,我开始了自由软件商业活动--今天的整个基于Linux的GNU系统的前身.
什么是对所有人都是自由的程序?
当一个自由软件离开他的作者发布出来之后,并不意味着对每个拥有一份拷贝的人而言都必须保持是自由软件.例如,在公共域许可证下发表的软件(无版权要求的软件)是自由软件;但任何人都可以制作出它的修饰过的专有版本.同样的,许多自由软件有版权但允许在简单的许可证下制作专有的修改版本. |
|