本文要说的是一个传奇人物————Richard Matthew Stallman,就是下图里这位不爱刮胡子的大叔。
Richard Matthew Stallman,1953年出生在美国纽约曼哈顿地区。在他生命的前十几年中,他并没有表现出什么过人的地方,但那是因为他没遇到一个叫做电脑的东西。
高中的一个暑假,他去给IBM打工,花了两周的时间用Fortran语言编了一个数据处理的程序。这是他第一次接触计算机,或许就是这次相遇,确定了他未来行走的方向。1971年,他考上了哈佛大学,上学的同时,他还受聘于麻省理工学院的人工智能实验室,成为了一名职业黑客(黑客这个词没有贬义)。在人工智能实验室期间,他可没少干活,开发了很多有用的软件,其中最著名的就是Emacs编辑器。Emacs是一个可与Vi相抗衡的强大的编辑器。两者的操作方式完全不同,但同样强大,各自用自己独有的方式,提高着人们的编辑效率。直到今天,仍然有人争论到底Emacs好还是Vi好,信奉Emacs的人和信奉Vi的人形成了两个帮派,这两个帮派经常在互联网上用鼠标键盘相互灌水拍砖,拼个你死我活。哦,扯远了,咱还回来说Stallman。
那时候的Stallman在人工智能实验室里工作得非常愉快,大家有BUG同当,有代码共享。那时候的软件工程师的世界,是一个“人人为我,我为人人”的理想世界。因为最初的计算机软件没有什么开源不开源的概念,那时候的软件天生就是自由的!卖计算机的同时会附带软件,包括软件的源代码和文档。计算机厂商卖的主要是计算机的硬件,软件只是附属品而已。用户可以根据自己的需要去修改软件,与别人分享软件。总之,软件是用户花钱买硬件时附带着买来的,用户想怎么玩就怎么玩。软件开发者的目的,也不是靠软件赚钱,而是靠软件支撑起硬件的功能,然后靠卖硬件赚钱。
然而随着技术的发展,软件逐渐脱离硬件成为一个独立的产业,很多软件慢慢地只提供二进制代码而不提供源代码了,这就意味着你不能修改它,并且多数软件还规定最终用户没有二次分发的权利。也就是说,这东西你买了,只能你用,你再给别人就不行!这就好像我买了把菜刀,然后卖菜刀的告诉我“你这把菜刀不许借给你的邻居用,也不许私自给菜刀换刀把,否则我就告你!”
Stallman当时就遇到了类似这样的菜刀问题。那时候,他们实验室买的第一台打印机附带有驱动程序的源代码。他们那的黑客们可以随意修改这个驱动,根据自己的需要添加些小功能,改改BUG之类的,这为他们的工作带来了很大的方便。后来,实验室又买了一台激光打印机,这次厂商只提供了二进制的打印机驱动程序,它是实验室里仅有的一个没有源代码的软件。Stallman很不喜欢这样的产品,然而他没有选择,只能沉默。
后来出于工作的需要,Stallman想修改一下这个驱动程序,但是不行,没源代码啊。Stallman听说卡内基·梅隆大学有这个打印机的驱动程序源代码,他就去了那里,跟他们套近乎:“那啥,大家都是道上混的,谁还没个"马高蹬短"的时候?是兄弟的拉哥们儿一把,我也没啥事儿,就是我们那打印机老丢字,老把一些关键的字打成口口,我估计是驱动的问题,听说你们这有这驱动的源代码,能不能给我拷一份?”对方办事效率还是挺高的,很干脆地拒绝了他。因为他们和厂商签署了一份保密协议,协议要求他们不能向别人拷贝源代码。Stallman顿时感到他们背叛了自由的计算机社团,他非常生气,但是他没有办法改变什么,只好又选择了沉默。
这只是一件小事,只是一个时代的缩影。那个时代,正处在软件向私有化转变的过程中,也是软件逐渐商业化的过程。越来越多的软件选择了不开放源代码,不允许二次分发的发布方式。Stallman身边的同事,一个一个地跑到开发私有软件的公司去打工了,他们不再相互分享,不再相互交流。Stallman问:“你们那软件的查找算法做得不错啊,怎么实现的?”“对不起,无可奉告。”“你们的文档工具效率挺高啊。”“对不起,商业机密。”……面对这一切,Stallman又能说什么呢?他还是只有沉默。
Stallman爆发了!他不能容忍软件世界里清新自由的空气被私有软件污染;他不能容忍被剥夺按照自己的需求修改软件的权利和乐趣;他不能容忍自己买条皮带尺寸不够时,自己竟然连在上面多打个洞的权利都没有!于是,他就爆发了。
他要重现当年那“人人为我,我为人人”的合作互助的软件世界;他要把使用、复制、研究、修改、分发软件的权利还给软件世界的每一个人民;他要用自己的行动告诉人们,软件天生就该是自由的!
他要开辟一个新的世界,哪怕是一个人在战斗!于是,一个宏伟的计划——GNU计划在他心中产生了。它的目标是创建一套完全自由的操作系统。因为操作系统是电脑中最重要、最基础的软件,要创造自由的软件世界,自然先要有一套自由的操作系统,然后再以此系统为中心,开发各种各样自由的软件。1983年,Stallman在net.unix-wizards新闻组上公布了GNU计划,这个计划的标志是一头角马(也就是非洲牛羚),就是下图所示的这个。
提示:*GNU 是 “GNU is Not UNIX”的递归缩写,Stallman表示这个词应该读作/'gnu:/(发音类似“革奴”),以区别于表示非洲牛羚的单词gnu(发音与“new”相同)。
这个计划要创造一套自由的类UNIX操作系统。系统本身及系统上的软件都是自由软件,它们可以被免费获取,随意使用、修改和再分发。并且每个人都可以获得这个系统全部的源代码,每个人都可以为完善这个系统作出自己的贡献。这个系统要使用与UNIX相同的接口标准,这样,就可以由不同的人,分期分批地创作操作系统的不同部分而不必担心相互之间协同工作的问题。
为了实施GNU计划,1985年,Stallman又创建了自由软件基金会。基金会的主要工作就是执行GNU计划,开发更多的自由软件。1989年,Stallman与基金会的一群律师们起草了广为使用的《GNU通用公共协议证书》也就是GPL协议,以此协议来保证GNU计划中所有软件的自由性。到了1990年,GNU计划中的这个系统已经初具规模,有了很多优秀的软件。其中有很多是世界各地的黑客们无偿提供的,也有一部分是利用自由软件基金会的基金雇用程序员来开发的,当然,Stallman自己也身先士卒,开发了Emacs、GCC、GDB等重要软件。当他看着这些丰富的自由软件的时候,感觉到那清新自由的空气,终于又回来了,以后,人们就可以拥有一个可以自由使用、自由修改、自由分发的、自由的操作系统了!不过等一下,好像还差点什么,哦,还……差个内核吧。
作为一个系统,没有内核是不行的,这么重要的部件Stallman当然不会忘记,所以才会有Hurd内核。这个内核被设计为一个遵守POSIX标准的微内核。所谓微内核,是相对于宏内核来说的。宏内核就像我们现在的Linux内核,是一个独立的程序,里面包含了进程管理、内存管理、文件管理等功能。而微内核则将一个内核需要的功能尽量地简化并且拆分,运行起来是几个独立的程序,有的专门负责进程管理,有的专门负责内存分配。内核是一个系统的核心,所以至关重要,Stallman对Hurd的开发也是精益求精,非常谨慎,以至于内核的进度有些落后于其他的系统软件,当其他软件都已经有比较优秀的版本的时候,Hurd内核依然不能够走出实验室投入真正的使用。这种情况一直持续到1991年,另一位英雄的出现——不过,这里先卖个关子,暂且不去说他。
无论怎样,到今天,Stallman理想中的自由世界,终于拉开了那沉重的幕布,展现出了自由的光彩。而Stallman并不满足,也确实没有满足的理由,这个自由的世界还需要成长,还需要更加丰富多彩,还需要有更多的人走进这个世界中来。于是Stallman奔走于世界各地,告诉人们有这么一个自由的世界,号召人们加入这个世界,鼓励人们为使这个世界更加自由而付出自己的力量。他是一个执着的苦行僧,为了他的梦想,为了他的自由世界,他会一直走下去……
以上就是Linux的发展史,Stallman和他的GNU计划。希望能扩展大家的知识面,然后对Linux有兴趣的同学可以看一下教程:
Linux教程:http://www.cdsy.xyz/computer/system/linux/20210305/cd16149309598740.html