回忆&总结

回忆&总结05b:自由软件,一种崇高的信念


* 妥协还是进步?开放源码(Open Source)
虽然GNU计划开展得如火如荼,但RMS等人所倡导的GPL协议仍极具争议,例如大名鼎鼎的Eric S. Raymond就对RMS的态度和GPL协议保留意见,认为这会阻碍自由软件的发展。争议在于GPL协议强制所有使用以GPL授权的程序代码的软件必须公开该软件其余所有的代码,这会使许多商业用户望而却步。这些商业软件的公司其实愿意开放绝大部分的代码,但某些加密模块或是涉及第三方专利的代码就不能公开,因此面对GPL的强硬要求他们不得不放弃。一直以来RMS都不曾妥协,称这种要求是道德的要求,没有妥协的余地(其实我是支持他的)。后来,Eric S. Raymond就提倡开放源码(Open Source,该词后来成为注册商标,由www.opensource.org维护,必须使用指定的某几种协议的软件才能冠以这个名字)这个概念,它的出发点和GPL是类似的,但在公开所有源码上对特殊情况有所放松。这促成了Netscape公开Navigator的源代码。当时被微软IE压迫的Netscape收入每况愈下,最后决定主动公开Navigator的所有源代码,成立Mozilla.org来完成这个任务,当中Eric S. Raymond的游说起了极大的作用。mozilla.org后来脱离了Netscape公司,成为了一个独立的慈善组织,而当美国在线收到MS的赔款之后,已被美国在线收购的Netscape也名存实亡。mozilla浏览器套件后来发展成大家所熟悉的Firefox浏览器和Thunderbird邮件客户端。
至于后来微软所谓“公开源代码”和这个根本沾不上边,幸好"Open Source"已经成为注册商标,否则微软就要拿它来蒙骗公众。

* 我的Linux旅程
最早的时候在海印买回一套Red Hat 7.2,好像是69元,9张碟,其中有3张是所有源代码。接着对照《电脑爱好者》中的教程好不容易装好了,可是系统对中文的支持很差,我很不习惯,并且使用不了那台机的modem,无法上网。不久后删除。
大概几个月后,买了Red Hat 7.3。有了之前的经验,买之前已经上网查阅了关于modem的问题。原来现在的机器除了装的是外置modem以外,内置的基本是半软modem,即有一部分功能需要驱动程序完成,而这些程序是针对Windows操作系统的(也叫Win-modem),因此Linux下无法直接使用这种modem,而需要下载Linux下对应的驱动程序modem才能工作。类似地,装了linux驱动的软modem对应地叫做Lin-modem。
装好RH 7.3以后,马上安装modem的驱动。不同于Windows,装Linux驱动这个过程对于一般用户是很困难的,需要对照着全英文说明,在终端编译程序,然后运行安装脚本。连接上网又是一件难事,首先要用minicom登陆,然后要在10多秒之内用pppd建立连接,简直像拆定时炸弹那么紧张!我一次都没有成功过。幸好桌面系统GNOME有个和Windows差不多的网络连接程序!终于能够上网了!然而RH 7.3还是个很难用的系统,逃不了被我删除的命运……
初三的国庆节假期装了RH 9。RH 9的图形界面有了飞跃的改进,特别是中文支持得到了很大的增强!(当然不包括被改到不伦不类的KDE桌面系统)目睹RH 9这么完善,我毅然删除了Windows XP。这之后我有很长一段时间都在使用Linux。例如我的上一篇回忆&总结的初稿就是在Linux上的文字编辑器Emacs上完成的。Emacs算是世界上最强大的文字编辑器,如果你会用的话:-) Unix/Linux的程序都一般是这样的,如果你用心去学习的话,你会做到很多在Windows上永远都做不到的事情!好像TEX这个世界上最美丽的排版程序,效果真的很好,不过你要自己写代码:-) Unix/Linux的思维和Windows是不一样的,前者各部分自动吻合,后者杂乱无比却经常想强制各个部件融合。
类似的程序还有。我研究过一个窗口管理系统(窗口管理系统是比桌面系统低一级的程序,但也给了用户更多的定制空间)FVWM,发现系统的所有菜单都是可以编辑的,你可以编辑FVWM的配置文件指定某个菜单有什么选项,单击这个选项会启动什么程序,或者更进一步,指定会发生什么事情!诸如谈出n个窗口,或把你的常用程序一次过全部启动,或是为你清理垃圾邮件,甚至为你自动下载程序的源代码再编译安装!只要你懂得一点编程知识和拥有想象力。
但RH9最终我还是删除了,装回了WinXP。

我现在常用的自由软件和开放源码软件
MinGW(C、C++编译器)
GIMP(拥有Photoshop核心功能但体积超小的图像处理程序)
Maxima(专业的代数演算系统)
Mozilla Firefox(独立核心的浏览器)
Mozilla Thunderbird(电子邮件客户端程序)
FreePascal(Pascal编译器及类似Turbo Pascal的开发环境)
Lazarus(类似Delphi的开发环境)
Python(我最喜欢的程序设计语言的开发环境)
Dev-C++(图形C/C++语言程序开发环境)
MySQL(SQL数据库管理系统)
OpenOffice(MS Office的替代品)
lyricsman(我自己写的……)

* 后记
写这一节我的心情是沉重的,因为我害怕我的读者认为我在卖弄专业知识。

Advertisements

回忆&总结05a:自由软件,一种崇高的信念


终于写到了最困难的一篇。……这可能跟我的经历没有太直接的联系,但跟我初中时的价值观和理想有些联系。
同时,这将是最沉闷的第一篇,故分此文为两部分。

写MZ布置的周记中,前9篇都是小学生式的敷衍之作,包括像“五一”节地上钱币无人识捡这类胡编滥造的题材。
但从第10篇开始,写的几乎都是关于电脑特别是自由软件、开放源码这一类的主题。我不清楚MZ到底有没有感到过烦闷,但从她写的评语看出她都是很用心看的,因为她经常提出一些问题以互相交流。
……要先介绍什么是自由软件……
* 软件专利的诞生
现在人们大多都明白什么是软件专利。凭借软件专利,软件开发者可以在软件的创作、传播等方面拥有特权,并从中获利。然而,专利权是从什么时候开始出现的呢?那就要说到Bill Gates。
在某个程序员的聚会中,当时还是个令人敬佩的程序员(或是classic hacker)的Bill Gates无意中遗漏了磁带(还是磁盘,忘了)在聚会场地,磁带里储存着他夜以继日辛苦耕耘的程序。其他程序员发现了这些磁带,并且在没有征得Gates同意的情况下互相传播这些程序。终于有一天,Gates知道了这些事情,表现得很愤怒,终于书写了一封著名的《给电脑玩家的信》(注意:这里的“电脑玩家”大概是computer player而不是computer games player),大意阐述了Gates关于软件应该像已经一样拥有专利的要求,这与当时的观念背道而驰,但却博得了业界的一片赞成的声音。至此,软件专利就诞生了。

* 软件专利的弊端
以今天软件业界的一片繁荣昌盛来看,似乎软件专利真的大有功劳。但在软件专利下,软件变得昂贵,但质量平平,技术支持落后。特别是用户几乎丧失了所有的权利:1)软件复制受到限制,即使只是在家中的2台电脑,你很可能要为每台电脑买一份许可证(恐怕许可证这个概念大家觉得有些奇怪吧);2)你想为自己改进一些功能,但你被禁止,因为所有的代码都是不公开的,而且安装协议明确禁止逆向工程;3)碰到一个bug,即使你多有才华也没办法修正,因为代码放在保险柜里,因此你得看开发商的脸色,想获得已修正的版本吗,你很可能要全额购买一份新版软件。
但软件专利已经发展到这种地步,不是无法回头了吗?
有些人早在软件专利诞生之初就站到了对立面上。

* Real Programmer、Classic Hacker和自由软件
转载自Eric S. Raymond的文章《黑客文化简史》:
“他们从不自称是Real Programmer、Hacker或任何特殊的称号;`Real Programmer’ 这个名词是在1980年代才出现,但早自1945年起,电脑科学便不断地吸引世界上头脑最顶尖、想像力最丰富的人投入其中。从Eckert &Mauchly发明ENIAC後,便不断有狂热的programmer投入其中,他们以撰写软件与玩弄各种程式设计技巧为乐,逐渐形成具有自我意识的一套科技文化。当时这批Real Programmers主要来自工程界与物理界,他们戴著厚厚的眼镜, 穿聚酯纤维T恤与纯白袜子,用机器语言、汇编语言、FORTRAN及很多古老的 语言写程式。他们是Hacker时代的先驱者,默默贡献,却鲜为人知。”
……
“Real Programmer的时代步入尾声,取而代之的是逐渐盛行的Interactive computing,大学成立电算相关科系及电脑网络。它们催生了另一个持续的工程传统,并最终演化为今天的开放代码黑客文化。”
之所以称Classic Hacker的原因是与现在的所谓搞破坏的Hacker区分开。
现在的Hacker即使招安以后,还只是一个安全检查员的身份,说白了就是辅助的角色,相比之下,classic hacker简直担当着创造者的角色。
“Hacker时代的开始於1961 年MIT出现第一台电脑DEC PDP-1。MIT的Tech Model Railroad Club(简称TMRC)的Power and Signals Group买了这台机器後,把它当成最时髦的科技玩具,各种程式工具与电脑术语开始出现,整个环境与文化一直发展下去至今日。 这在Steven Levy的书`Hackers’ 前段有详细的记载(Anchor/Doubleday 公司,1984年出版,ISBN 0-385-19195-2)。”
“从MIT那台PDP-1开始,Hacker们主要程式开发平台都是Digital Equipment Corporation 的PDP迷你电脑序列。DEC率先发展出商业用途为主的interactive computing及time-sharing操作系统,当时许多的大学都是买DEC的机器, 因为它兼具弹性与速度,还很便宜(相对於较快的大型电脑mainframe)。 便宜的分时系统是Hacker文化能快速成长因素之一,在PDP流行的时代, ARPANET上是DEC机器的天下,其中最重要的便属PDP-10,PDP-10受到 Hacker们的青睐达十五年;TOPS-10(DEC的操作系统)与MACRO-10(它的组译器),许多怀旧的术语及Hacker传奇中仍常出现这两个字。 ”
……
“此时在新泽西州的郊外,另一股神秘力量积极入侵Hacker社会,终於席卷整个PDP-10的传统。它诞生在1969年,也就是ARPANET成立的那一年,有个在AT&T Bell Labs的年轻小夥子Ken Thompson发明了Unix。

Thomspon曾经参与Multics的开发,Multics是源自ITS的操作系统,用来实做当时一些较新的OS理论,如把操作系统较复杂的内部结构隐藏起来,提供一个介面,使的programmer能不用深入了解操作系统与硬体设备,也能快速开发程式。

译:那时的programmer写个程式必须彻底了解操作系统内部,或硬体设备。比方说写有IO的程式,对於硬碟的转速,磁轨与磁头数量等等都要搞的一清二楚才行。

在发现继续开发Multics是做白工时,Bell Labs很快的退出了(後来有一家公司Honeywell出售Multics,赔的很惨)。Ken Thompson很喜欢Multics上的作业环境,於是他在实验室里一台报废的DEC PDP-7上胡乱写了一个操作系统, 该系统在设计上有从Multics抄来的也有他自己的构想。他将这个操作系统命名Unix,用来反讽Multics。

译:其实是Ken Thompson写了一个游戏`Star Travel’ 没地方跑,就去找一台的报废机器PDP-7来玩。他同事Brian Kernighan嘲笑Ken Thompson说:「你写的系统好逊哦,乾脆叫Unics算了。」(Unics发音与太监的英文eunuches一样),後来才改为Unix。

他的同事Dennis Ritchie,发明了一个新的程式语言C,於是他与Thompson用C把原来用汇编语言写的Unix重写一遍。C的设计原则就是好用,自由与弹性, C与Unix很快地在Bell Labs得到欢迎。1971年Thompson与Ritchie争取到一个办公室自动化系统的专案,Unix开始在Bell Labs中流行。不过Thompson与Ritchie的雄心壮志还不止於此。”
……
“致命一击终於来临,1983年DEC宣布:为了要集中在PDP-11与VAX生产线, 将停止生产PDP-10;ITS没搞头了,因为它无法移植到其他机器上,或说根本没人办的到。而Berkeley Univeristy修改过的UNIX在新型的VAX跑得很顺,是 ITS理想的取代品。有远见的人都看得出,在快速成长的微电脑科技下,Unix一统江湖是迟早的事。
差不多在此时Steven Levy完成“Hackers” 这本书,主要的资料来源是Richard M. Stallman(RMS)的故事,他是MIT AI Lab领袖人物,坚决反对实验室的研 究成果商业化。
Stallman接著创办了Free Software Foundation,全力投入写出高品质的自由软件。Levy以哀悼的笔调描述他是`the last true hacker’,还好事实证明Levy完全错了。
Stallman的宏大计划可说是80年代早期Hacker文化的缩影 — 在1982年他 开始建构一个与UNIX相容但全新的操作系统,以C来写并完全免费。整个ITS 的精神与传统,经由RMS的努力,被整合在一个新的,UNIX与VAX机器上的 Hacker文化。 微电脑与区域网络的科技,开始对Hacker文化产生影响。Motorola 68000 CPU 加Ethernet是个有力的组合,也有几家公司相继成立生产第一代的工作站。 1982年,一群Berkeley出来的UNIX Hacker成立了Sun Microsystems,他们的算盘打的是:把UNIX架在以68000为CPU的机器,物美价廉又符合多数应用程式的要求。他们的高瞻远嘱为整个工业界树立了新的里程碑。虽然对个人而言,工作站仍太昂贵,不过在公司与学校眼中,工作站真是比迷你电脑便宜太多了。在这些机构里,工作站(几乎是一人一台)很快地取代了老旧庞大的VAX等timesharing机器。”
RMS所进行的这个宏大的计划就是著名的GNU计划。在开宗明义的《GNU宣言》一文中,RMS阐述了关于自由软件(Freeware,常有人误以为是免费软件)的理想:任何人都可以无限制地修改、复制软件,只要你在重新发布软件的时候毫无保留地公开软件的所有源代码。而它的法律依据则是GPL协议。今天很多人用盗版的方式对抗封闭源码,但这不符合RMS的原则,他宁愿重建从操作系统到周边工具软件、应用软件等所有的一切,推倒重来,白手起家,也不愿违反法律。
GNU操作系统的核心叫做GNU Hurd,是一个十分先进的操作系统内核,但开发进度缓慢。大概在20世纪90年代初,一个叫Linus Torvalds的芬兰人在GNU各种公用程序的基础上完成并发布了第一版的Linux内核,后更名GNU/Linux,作为GNU操作系统的一个内核。十多年来,GNU/Linux一直在全球众多支持者的努力下不断地完善和进一步地推广,吸引了IBM等大公司的注意,更诞生了Red Hat这个靠卖Linux套装盈利的公司。