自由软件──你早该知道了?
自由软件并非今天才出现,而是伴随着计算机的历史,只是以前并没有被提出来──但我们确实可以毫不夸张的说:是自由软件造就了计算机世界的辉煌!
软件史一瞥
如果真的深入了解自由软件的历史,那么你得先了解计算机的历史──当然没有太大的必要,我在本文不会提及。
我唯一需要说的就是以前的软件都是公开源代码的,而且大部分免费 [ 实际上当时的软件并非通用,一般只能运行于相应的硬件平台上,IBM在出售硬件的时候就带有大量相应的免费软件]。69年 Ken Thompson和Dennis Ritche所发布的Unix系统就是这样,不但公开源代码,而且免费,可在多种硬件平台上运行。
[关于Unix,那真是人类最有创意的系统了, Thomps和Ritche也因此而获得计算机界的诺贝尔奖──图灵奖,象后来出现的很多系统如:BSD(加州大学伯克利分校开发,目前有FreeBSD,OpenBSD等),Solaris,Aix,Minix,Linux,这些都继承了原始Unix的优秀设计思想,有的就是Unix衍生版本,有的是类Unix系统。 无论如何我们都该多了解一点:google! ]
无数的程序员投身Unix,并写出了很多优秀的软件。也许正因如此,才造就了 Unix的辉煌。但到后来,情况慢慢就变了。我们看看76年比尔·盖茨发表的《致电脑爱好者的一封公开信》,在那里,盖茨大骂那些拷贝Basic[ 微软的起家软件,不要忘了在basic之前的pascal等,它们都是自由软件──只不过无需这个提法而已 ]编译器的人,说他们 Theft──而当时的人们只不过是把分享看做是计算机一种传统而已,却被骂成了窃贼。当然,微软的游戏的规则就这样定下来了,而它的逐渐强大也成了其他公司的楷模。80年代真的令我无法想象,Unix被商业化,出现各种杂乱的版本──价格已经是普通用户无法承担的,更要命的是封闭了源代码──不允许大学里的计算机课程讲授Unix源代码!──简直想断子绝孙啊!而此时的其他软件也是同样,源代码就这样被封锁起来了。
人类似乎陷入了一种罪恶……
GNU──救星
80年代,人类已经没有了自由免费的系统。好,现在我们该介绍人类史上最伟大的黑客了─ ─ Richard Stallman
[注意:“黑客”(hacker)已被媒体严重误解了,它本来是指“那些喜爱编程并享受在其中变得更擅长於编程的人”,是令人敬佩的编程大师。但现在,媒体却普遍认为它是“安全破坏者”──实际上这是被一些人再次定义出来的Pirate! 另外还有craker,诸位可以查查资料,不要误解,因为黑客对人类有着巨大的贡献。见后面的《Hacker文化简史》]
Richard Stallman于1953年出生在纽约,74年从哈佛大学以优异的物理成绩毕业,然后在MIT的人工智能(AI)实验室工作──那里聚集的都是世界级的编程大师,一个优秀的黑客群体。Stallman一直在那里快乐的为ITS系统(运行于Digital公司的PDP-10分时系统)做改进和添加功能的工作,直到80年Digital宣布不再生产PDP-10,ITS也就被抛弃了──没有人会为它做移植工作,因为那个黑客群体已经瓦解了,携带AI技术成果而从AI实验室脱离的 Symbolics 公司以高薪挖走了那里绝大部分的黑客,只剩下Stallman和另一位坚持者理查德.格林拜特[被誉为黑客中的黑客]。而且AI 实验室的管理层又决定使用Digital的非自由系统──你将无法为它改进,因为只是些可执行代码而且还要同公司签署保密协议──即不允许你自由拷贝!而Stallman,作为一名狂热的自由主义者,他认为人类应该分享──思想和物质!为了某些企图而拒绝共享是不道德和反人类的。现实令他无法接受。此时,Stallman已经做了个具有历史意义的决定:从零起步,开发一个类Unix系统!─ ─与Unix兼容,取名GNU ── GNU's Not Unix . GNU不是Unix,很有趣,是个递归。84年1月, GNU工程起步了:为了保证GNU软件的自由性,Stallman不得不辞去他在MIT的工作,以免MIT 在未来会干涉。首先,工程的开始最需要一个C编译器,Stallman看好了Unix平台上的阿姆斯特丹编译工具包(Amsterdam Compiler Kit)──Andy Tanenbaum 开发的,他是一位资深的计算机系统教授,也是Minix系统的创始人。
[关于Minix,你需要了解一点,Tanenbam当初是将Minix和分析Minix系统代码的书一起发布的,可惜Tanenbam拒绝发展这个系统,它仅仅被用来讲授操作系统的原理,但即便是现在,我们还可以见到Minux的新闻组:comp.os.minix ,你可以通过国内这台服务器连接上去: news.yaako.com ]
但Tanebaum拒绝了他,并让Stallman放弃那个免费系统的傻念头。实际上在Stallman开发GNU软件时,曾向很多已有的软件作者求助,可惜几乎都被拒绝,得到的只是讽刺。当然,Stallman用了他最喜欢的Lisp语言开发了Unix上的Emacs(我们今天使用的仍然是用Lisp写的),相继有开发了c编译器gcc (GNU C Compiler)──最优秀的C编译器。这些软件就是真正的自由软件了,公开源代码发布,免费,可再发布……Unix程序员们为这些软件疯狂,他们不断的提出修改意见,就这样,这些软件成为最优秀的了。Stallman也靠卖这些软件的磁带积累了一些资金。(不要忘了,那时候可没有软盘,光盘,而且没有今天这样的Internet,虽然Stallman也将这些软件放到MIT的ftp上,但没几个人能下载;另外你不会说连磁带都该免费的送吧?) 85年10月,自由软件基金会(FSF)成立了──由员工和志愿者组成──是的,他们还雇佣程序员来写代码!实际上直到今天,GNU的月薪都是很低的,包括Stallman在内,因为他们更需要的是真心为自由软件贡献的人。随后GNU有开发了一个Shell:
[也许我真的该解释一下:即用户输入命令的外壳,因为用户只管输入命令让系统内核执行,而不需要知道在底层究竟发生了什么,所以才叫外壳,如果你在 windows下,运行一下cmd,你将得到一个Shell,显然它的功能与Unix/Linux下的不可同日而语 ]
Bash ── Bourne Again Shell ,又是一个有趣的名字, Unix下的有个出色的Shell叫Bourne Shell [ Bourne开发的 ]。此外还有个重要的东西,GNU C函数库,这些都在90年之前完成了。下面,我们该说一个十分重要的东西了:GNU GPL ( General Public License ),GNU通用公共许可证,从法律上解决发布自由软件,这个许可证与传统的版权(Copyright)许可证完全相反,它叫版无权 (Copyleft),要求软件开放源代码,要求软件可以自由拷贝,赋予软件使用者修改代码并重新发布的权利──但不允许软件只发布二进制代码而不公布修改后的代码……总之,这个许可证已经保证了基本的自由以及自由的延续。实际上现在绝大部分的自由软件都遵照 GPL发布,当然,你现在完全可以写个软件并遵照GPL发布。除了这个许可证以外,还有很多其他非GNU的自由软件许可证:BSD许可证,APL,MPL……以后你会遇到。不过有一点得说明:GPL没有得到中国法律的承认( 也只有德国前不久裁定GPL为正规许可证,相信其他国家也要不了多长时间 ),所以你可以在国内看到一些挂“羊头”卖狗肉的公司:他们销售自由软件却不遵照其许可证,对于这些公司,我不想点名,以后诸位会知道的,他们比那些直接封闭源代码的商业公司更可耻!不过即使中国的法律承认了,问题照样不能解决──君不见法律不承认下的“盗版”?( 对于法律问题我也不清楚,但还没见多少违反GPL的 )
实际上现在,我们已经看到:万事俱备,只欠东风!自由免费的系统仅仅缺了一个核心── 很快,1991年10月,芬兰赫尔辛基大学的一名大二学生 Linus Torvalds 让它在宿舍诞生了,这就是 Linux……人们盼望已久的自由免费系统终于完成了──当然,它确实应该叫 GNU/Linux ,而我们平时仅仅为了方便,直接叫 Linux ──不要读错了,没几个人能把这个准确的读出来:如果你没有查过 Linux的读音的话,我敢打赌,你现在读错了,又该请教google了?另外GNU在后来也公布了自己的核心Hurd,但不及Linux流行。
下面,你需要看一些相关的材料了:记住,一定要看!
* Hacker文化简史
* Eric Raymond 所写,他是一位不折不扣的黑客人类学家,写了很多的文章,后面还要给出他的另一篇著名文章:《大教堂与市集》,以后你肯定对他不会陌生。看了这篇文章,你也将对Hacker有了更深的了解,也将知道是谁创造了计算机历史。 GNU的主页:
http://www.gnu.org
* 这里有关于GNU的详细介绍,比如GNU工程,GPL许可证,而其中的哲学部分你更应该看,如果你已经感到有必要了解自由软件了的话。 Stallman在清华大学的演讲
* Stallman的照片:

你一定早想看看这位黑客圣人了:我还想告诉大家一点,Stallman一生没有结婚,至今没有汽车,没有自己的房子,他也曾获得过麦克阿瑟他基金 230,000 美元,但却将绝大部分放入了GNU。他始终坚持着一个信仰:如果我一直开发营利性的软件,我就是在把自己的人生来构建他人的监狱!是的,人类欠他太多了!看见照片了吧?我不说你也知道象谁:耶稣。是的,画像上的耶稣,他也不愧象这位救世主!
我们没必要去追星,但我们应该永远的记住那些为人类做出杰出贡献,那些具有崇高品质的前辈们和他们的精神!