(八)结识斯托曼博士
(1)焦点时刻
1999年10月,吴教授受香港大学的邀请去讲学,需要将护照和入港通行证让我从北京捎回武汉。
在此之前,我组织人力和物力翻译了奥莱理出版的《开源软件文集》一书,正如书名中提到的,它收录了许多软件领域的精英的文章,在当年国际 IT 界造成了很大影响,在此之前我发行 Slackware 和 SuSE 时,我早就听说过其中的作者之一 —— 理查德·斯托曼博士(RMS)和他开发的
自由软件,以及
自由软件基金会(FSF)。碰巧当时南京的一次国际性学术会议邀请他到南京做演讲,因为我翻译过他的文章,因此我想先去南京会他,然后从南京回武汉。
从那篇翻译的文章中我得知,斯托曼博士早年也有辞职下海的经历,也有过艰难痛苦人生抉择的遭遇,他的经历极具传奇色彩,从他的那篇文章里可见一斑。那篇文章写得非常好,不过其深刻思想远远非一般的人一下子就能理解的。尽管我和另外一位朋友的翻译时非常卖力,译稿数次修改,后来在出版之前还交他指定的五位海外华人审读并通过,但是坦白地讲,我也还有一些问题不清楚,想当面请教他。
自由软件的特点在于它提供了软件的所有源代码,而且允许用户自由地拷贝、复制发行和修改。在这一游戏规则下,争论最为激烈的一点就是,软件公司如何靠
自由软件生存?这也是我最想问他的一个问题。
为了见到 RMS, 头天我就到了南京等他,住进了他将下榻的同一宾馆。晚上他很晚才从上海飞到南京,我在电话里首次听到了他的声音,典型的纽约口音,声音非常宏亮清晰。电话中他约我第二天上午先去听另一位会议主讲人的演讲,然后会他回房间谈话。
1999年10月30日上午9:30点左右,我进入了会议的大堂,当时正好是中科院的钟锡昌院士在讲解他的 HOPEN 操作系统。 RMS 就坐在观众席的第一排,他一头长发,身着蓝黄黑条纹相间的 T-恤衫。我一进去就发现了他。几乎是在同时,他也回过头来,注意到了我,在钟院士的报告过程中他不时回头看我,似乎是暗示我,他已经注意到我了。在钟院士报告中间暂停时,RMS 快步地朝我走过来,一手拉着我就走。
进入他的房间后,我刚坐下来,想跟他寒喧几句,不料他却将一条板凳挪动到房间的空调下,光着脚上去想调节温度,这时我才看到他一直没有穿鞋。他示意让我过去帮助他,那家宾馆是一个中日合资企业修建的,空调是进口的,但是我们费了很长时间,就是无法将室内温度调整到他希望的温度。 我想找宾馆的服务员来调节,RMS 却拒绝了。 最后我们放弃了努力。
他的房间很零乱,他自己带来了一个 2 米长的大气垫放在床上,他说晚上就睡在气垫上面。我感到很新奇,也上去躺了一下,果然很舒服。
在此之前,我曾经同他讨论过为他写一本传记,因此我们谈话也就从这里开始。我开始提问,问他的过去,他的生活,
自由软件的历史,渐渐地,我发现斯托曼具有无穷的人格魅力,特别是当我了解到他当时辞掉 MIT 人工智能实验室的职务时,他的话语更是详细,将自己的经历
娓娓道出,也唤醒了我自己当年辞职而得自由的回忆,“同是天涯自由人,相逢何必曾相识?”我们一下子成了好朋友。
(2)处于争论旋涡中心的
自由软件哲学
free software 这一术语经常被人误解,因为英文中的"free"有两个含意,一个是“自由”,另一个是“免费”。RMS 告诉我,他学习过一年的汉语,所以他知道这个词的中译文应该是“自由”,而且很高兴我的译文中是这么译的。
另外一个经常被误解的地方就是 "free software" 不是属于像 TeX 那样属于公用领域内的软件,而是有版权的,它的许可证称为 copyleft,也是根据现代的著作权法建立,但是版权保护侧重点不同于专有软件。专有软件公司拿软件的 Copyright (版权所有,或者说版权属右)来保护出版商的权益, 而
自由软件拿 Copyleft (版权属左)来保护用户的权益。
正因为
自由软件也拥有版权,任何人可以以任何价格按照 Copyleft的规则销售
自由软件。Copyleft 有多种形式,例如 GPL 就是其中之一。“版权属左”规则下的
自由软件有两个特点特别引人注目:一是必须提供软件的全部源代码,二是
自由软件不附带任何质量保证。前面一点可以为其他人从源代码中得到程序的开发思路从而修改完善软件提供前提,后面一点为软件的开发人员从
自由软件的开发业务中得到回报创造了条件,因为并非人人皆有本事或者能力从软件的源代码中反推出软件原作者的心思,所以,除了销售软件的拷贝之外,软件的作者还可以在用户要求提供技术服务时向用户收费 --- 我恍然大悟,头脑中的疙瘩一下子就解开了!
(3)理想与信念
但是,
自由软件商业模式的问题在 RMS 看来只是一个小问题,根本不值得投入太多的关心,因为世界上的功力深厚的程序员永远是一种市场上的稀缺资源,这类人才永远不会失业。
RMS 关注的问题在于用户的自由,也就是人的一种权利。因此当我让他在《开源软件文集》
上签名时,他拒绝了,因为推广开源软件的人将软件的实用性置于自由之上,是与他的理想格格不入的。正是为了实现自己的理想,他从 1984 年离开 MIT 人工智能实验室以来的十多年里,没有任何薪水、自己没有房子、没有自己的汽车,单身一人过着苦行僧般的生活。唯一支撑他的就是对自由追求的信念 --- 我面对的不是一个普通的名人,而是一位来自理想国度的圣者。这位先知启蒙了我对自由的认识,我开始真正觉悟了。
告别时,RMS 说他明年还可能来中国,希望能再次见到我。
下午我离开了南京市,准备飞回武汉,但是到了南京机场后,飞机还没有来。也许是我的运气不好,在我的记忆当中,我几次乘坐武汉航空公司的航班,总是不顺利,不是飞机调配未到,就是飞机要加油或者检修,不能按时起飞。
我之所以选择武汉航空公司的航班就是因为它的航班飞机将降落在王家屯机场,在汉口的市中心,离我家更近,这样可以省掉从天河机场到市内的时间和交通费用,早点回家将护照和证件交给吴教授,没想到弄巧成拙。等到晚上8点,天已经黑了,飞机才来,是双螺旋浆的运-7支线飞机,噪音很大(后来我听说武汉航空公司的一驾飞机失事了,可能失事的飞机就是那架运- 7 型飞机)。从那以后我再也不想乘坐武汉航空公司的班机了。
到武汉家中时,吴教授和我父母正在焦急地一起等着我回来,时钟已经指向晚上 12 点,真是漫长的一天。但是我丝毫不觉得疲惫,因为我当天的经历的东西太多,根本无法一下子安静下来。
(九)奥莱理变奏曲
(0)序曲:两类美国人。
与RMS 告别之后,他的形象和说的话一直萦绕在我脑海中。他的传奇半生和思想你很难用一句话说清楚,因为他的工作介于几个领域之上,他不仅是天才的程序设计大师,而且利用他的才能去构建他的
自由软件工程,并且能够长期不懈地努力实现他的理想。他怪异的性格掩盖不住他对真理追求的执着流露。尽管他的哲学思想还没有得到全社会的公认,但是我敢肯定他是一个可以入史争鸣数百年的人物。
在美国本土,商业圈一度对 RMS 是相当敌视的,因为RMS 制定的游戏规则判处了很多专有软件公司的死刑或者死缓。当我回到北京后,奥莱理的 D又一次到了北京,当他见到 RMS 的照片时面如灰色,良久之后才说RMS 是一个“野人”。这也难怪,这些商人眼中只有利润,他们才不管什么自由、社会、原则呢。
这段时间工作非常繁忙,经常通宵达旦地赶奥莱理制定的出版进度。为了保持头脑清醒,我在业余时间开始做一些与计算机无关的事情。我一直爱好读历史书,这段时间便开始研究《史记》。司马迁的这部巨著是“史家之绝唱,无韵之离骚”。上中学语文课时我学过一些节选自《史记》的古文,这些经典范文当时都是可以背诵的,但是我从来没有机会系统地读过全书。
经过这段时间的阅读,给我触动最大的就是太史公自述,以前我大概地知道他的生平事迹,但是这次阅读原文后却有全新的感受,一种对理想与信念力量的新认识。司马迁之所以能够在逆境中完成这部宏篇巨著,除了他自身的家庭环境、知识积累等因素之外,关键还是靠伟大信念的支撑,他探究过生命的价值:“凡人所生者神也,所托者形也。神大用则竭,形大劳则敝,形神离则死。死者不可复生,离者不可复反,故圣人重之。由是观之,神者生之本也,形者生之局也。不先定其神,而曰'我有以治天下',何由哉?”
我开始认识到,对于人而言,时空中的感性世界只是一个幻觉,一个人只有通过精神与道德的经常训练,才能学着活在唯一真实的永恒世界里。读完这本书之后,我觉得司马迁仍然还活着,因为他的精神还在。我还认识到,正是因为我们民族有这些珍贵的历史遗产,才使得我们在世界民族之林中占有重要地位,这也是我们与当今世界上的列强周旋与竞争的信心来源。
(1)变奏一:风起萧墙乎?
D 是一个伪君子,我曾经在开始时让他下不了台,虽然后来他被 T 说服而暂时妥协过。我想既然我们双方已经达成协议,这件事就已经过去了,不值得再去想它。可是 D 不这样想,他心中仍然是看不惯我,这一点后来我逐渐觉察到了,而且我觉察到了一个更大的圈套。
D 这个人的斑斑劣迹,我是有所耳闻的,在公司扩张的过程中,D 可以说为了自己的利益是不择手段。尽管奥莱理在法国,日本,台湾等地都有子公司或者办公室,后来却都由 D 和 B 收归自己的势力范围内。尽管这些国家和地区之间的差异很大,但他所使用过的管理伎俩却如出一辙: 先是让T 出面扫清障碍,物色一个合适人选,然后利用这个人拼命工作,一旦公司规模
上来,便将这个人一脚踢开,换上自己的心腹,达到自己彻底控制公司的目的。
中国的情况也是这样,D 在前期从不对我发表任何意见,一切通过T来发号施令。在来北京几次后,他发现公司的 C 很听话,于是把 C 邀请到美国本部去,名曰岗位培训,我不明白翻译的工作需要什么样的岗位培训,如何说需要培训,也应该是我在中国找机会为 C 培训。C 后来负责市场开拓方面的工作,但是美国的那一套做法不能照搬到中国来,因为中美两国之间市场情况差异实在太大。
C 从美国受训回来之后变化很大,一下子像变成了另一个人似的,以前 C 说话非常谦虚,在公司内部颇得人缘。但从美国回来之后说话的口吻一如自己就是奥莱理的总老板了。我感到 D 与 C 之间一定有名堂。
由于找到了C,D 逐渐开始与我直接交锋了,这时 T 最窝囊,因为中国市场是由他直接负责的,现在却什么也不能说,什么也不能做,而且 D与我之间的问题都变成了 T 的错。
(2)变奏二:无处不用间
本来公司是一个公共场合,大家有相同的目的才走到一起来,为了实现共同的目标,面对市场的竞争,公司创造力、产品的生产销售和工作效率是最根本的东西,一切管理的措施都应该为优化这些要素服务, IT 行业的公司尤其应该注重效率,因为这个市场变化得实在太快了。遗憾的是,不是每一个公司都清楚地认识到这一点。有些管理者将对人的控制摆在了一个特殊的位置,他们认为只要控制了人,就可以控制一切。但是人是公司里最活性的要素,管理人主要应该靠制度,而不是依靠个人之间的远近关系。
D 就是持这种态度的人。为了控制公司,他利用 C 向他事无巨细地汇报,北京这边白天发生的任何事情乃至细节,都源源不断地在晚上通过 C 到达了美国总部,于是我除了要应付市场方面的工作外,不得不开始应付来自公司内部的麻烦事,而这正好是我最不擅长处理的事情。
我从头安装 Slackware 的经历使我成了经验丰富的系统管理员。为了利用网络推广奥莱理的产品和服务,我亲手管理着公司的 Internet 主机和上面的 Web 网站。系统管理员经常要备份数据,一天晚上,我工作到深夜,作为最后一项任务,我开始备份网络系统主机上的数据,我发现邮件服务器上还有人登录上来收发信件,我感到奇怪,这么晚了,还有谁工作?是不是有其他骇客在利用邮件服务攻击我们的网站? 骇客们的一些惯用技巧我是了如指掌的,sendmail 工作在 25 号端口上,以往就有骇客利用 sendmail 中的安全漏洞攻击系统。经过阅读系统日志文件,我发现是 C 在工作,而且邮件服务器的日志文件显示邮件发向 D!
我一下子明白了 C 为什么变化这么大!C 是黑夜角落里的耳目。为了搞清楚公司内部还有哪些耳目,我将此事告诉了公司中的 CH,看看美国方面会有何反应。果然,CH 也是耳目之一。 几天后,T 发给了我一份措词强硬的电子邮件,说系统管理员查看用户的邮件在美国是侵犯人权法律云云,因此以后不许这样做。去你的美国人权法律吧,你们白天派人暗中监视我的行动时,把我的人权放到哪里去了?从那时起,除了为同胞们感到悲哀之外,我觉得与这群美国人的合作失去了任何价值和意义。
(3)变奏三:克隆与决裂
由于我的出色工作,奥莱理在中国市场上已经取得很大成功,许多原来不知道它的读者,通过我组织完成的一系列图书了解了它的价值,市场上的反应很好。D 是知道这些的,他开始露出了狐狸的尾巴,跳出来急于要控制公司的一切,与我的矛盾也加剧了。天底下没有不散的宴席,我开始寻思出路。
软件含有程序和文档两部分,没有文档的软件显然不完整,因为用户无法知道怎样操作使用程序。奥莱理公司出名很大程度上是出版了很多
自由软件的书,这些著作写得深入浅出,很得读者喜爱。但是在与 RMS 谈过之后,我发现一个问题,尽管
自由软件资源已经非常丰富,但是
自由软件的自由文档数量相比之下还是太少,而且高质量的著作不多见。 糟糕的是,奥莱理的书几乎全部是专有的,其版权状态与专有软件的许可证没有本质差别。从相当大的程度上讲,奥莱理的成功与其说是它填补了软件文档方面的空缺,不如说是它实际上钻了
自由软件社团的空子。
为了推广应用
自由软件,这种局面必须改变。中国人可以在这方面发挥自己的聪明才智,摆脱美国专有出版商的控制。
最终,我与奥莱理决裂了,离开了这家专有出版商。
(4)尾声:形式语言与网络出版的结合
从 1997 年 7 月到 2000 年 1 月,我在奥莱理工作了两年半的时间,在付出巨大努力的同时,我也学会了不少东西。客观地讲,奥莱理在早期 Web 的技术发展史上是有较大贡献的,特别是它与其他公司一道提出的 DocBook 规范,已经成为网络出版的事实上的标准之一。DocBook 是一套 SGML 标记集合,用于给文档的结构和表示打标记,从而分离了文档的内容和表达方式。SGML 是几个IBM 的研究员在二十世纪八十年代中期制定的一套规范,后来发展成了ISO 标准。
SGML的实质就是将形式语言引入到信息处理和出版领域,有了形式语言提供的数据结构,
信息的检索,查询、分类、重新加工与表现可很容易由计算机来完成。
早期的 Web 将重点放到发展 HTML 上,这是 SGML 的一个子集,但是后来在技术实现过程中,逐渐偏离了SGML 的分离信息的内容与格式的技术方向。等到 IT 界意识到问题的严重性时,又开始重新改造 Web,这次是使用 XML 规范来进行改造,XML 规范内容非常丰富,但是本质上还是 SGML 的一个子集。
在引入形式语言的概念后,出版的概念发生了质的变化,网络成了一种极好的信息发布和传播的媒体,现在人们把它列为继报刊、广播、电视之后的第四媒体。它对社会的发展已经产生了深远的影响,尽管目前的法律体系还没有准备好进行相应的调整以适应这种技术革命带来的变化。
(十)峰回路转九寨沟
离开了奥莱理之后,重新回到自己的公司经营业务。我知道 IT 市场变幻莫测,反复无常,我想停一下,冷静思考以后的发展方向,随着我的年龄和经历的增长,我少了往日年青人常有的盲目热情,多了成年人应具的理性思考。这是一个自然的过程。
(1)同斯托曼在一起的三个星期
RMS 自从回国之后,一直与我保持着联系,而且正如当时他所说的,他决定 2000 年 5 月再访中国,我当时正构思写作他的传记,因此我要求他安排一下日程,错开一些不太要紧的事情,以便有更多的时间留在中国,我可以挖掘掌握更多的写作素材。
最终RMS决定给我三个星期的时间。我想天天呆在房间里进行问答式的采访太单调了,因此除了安排一些演讲之外,我们想到一些风景区逛逛,在一个轻松的环境里或许可以得到更多的素材。
我们决定去四川的九寨沟。我们早就听说那里风光迷人,山水奇佳。我们专门物色到了一位经验丰富的司机和一辆丰田越野车,从成都出发,沿着岷江公路逆水而上。进入松潘境界后,山势雄伟,山峦连延起伏跌宕,RMS 大呼过瘾,说如果他以前住在这里开发软件的话,GNU 系统早就完成了。
(2)长海论道
九寨沟风景区的旅游线路可以简单地看成是一个“丫”字形状。我们一共进入九寨沟风景区两次。第一天游了一条分叉线路,第二天到另一条分叉线路,终点是长海。长海并不是海,而是在某个冰川时期由于强烈的地震造成的大面积地质沉降,后来周围高山的雪水融化流入而成的一个大的湖泊。水面的颜色随着天上的阳光和云彩飘动而变幻,一步一景,我们亦步亦趋。这样的景色变幻实在迷人,纵使以画海边风景闻名于世的俄罗斯名画家爱瓦佐夫斯基再世,将他所有的画笔、颜料和画布搬来,也未必能穷尽大自然造化的鬼斧神工。最终我们停下来歇脚,开始了一次长谈。
GNU Emacs
---------
RMS 是 GNU Emacs 的作者,如果从 1975 年PDP-10 上的 TECO 算起,到1986 年 GNU Emacs 第一版正式推出,他断断续续花了 11 年的时间才完成,因此在他的传记中我将安排相当大的篇幅介绍这一软件包。
GNU Emacs 是目前公认的最出色的文字编辑器,更准确地说,是程序员的完整工作环境,因为它几乎无所不能,从写程序,日记,调试,排版,电子邮件,无所不包。 良好的扩展性来自内置的 Lisp 语言,大多数GNU Emacs 模块是采用 Lisp 编写的。
Lisp 语言的历史已经很久了,几乎与 Fortran 一样长。二十世纪五十年代,计算机科学家先是发明了针对数字计算的 Fortran 语言,后来针对符号计算又发明了 Lisp,Lisp 的发明历史可以说也是充满传奇色彩。
Lisp 程序中充满了一对对嵌套的小括号,这些嵌套的符号表达式体现着递归。递归是数学上的基本概念之一,从递归理论出发,一切可以计算的函数最终都可以划归为几种基本的递归函数的种种组合,还可以从数学上严格证明,一种叫着 mu 的递归函数与图灵机上的可计算函数是等价的。
从数学理论到计算技术之间还有一段距离,因为计算机只能对数字或者符号进行操作,在冯·诺伊曼体系下的计算机,需要先将程序读入计算机存储起来,然后才能进行计算。在这一过程中,函数的名称与函数过程都是用符号表达的,我们人可以区分,但是计算机却不能。Lisp 语言中的 Lambda 函数完成了这一跳,通过引入 Lambda 演算,在一对对嵌套的括号外表之下的程序是对计算中数据结构与算法的定义和抽象,对抽象的复合,以及将复合的计算对象重新按照简单的对象来计算。这再一次印合了并加深了我对泛积原理的认识,一个是从计算得到的认识,另一个是从系统科学得到的认识。
后来我得知,两者可以找到相同的渊源。Lisp 的发明人约翰·麦卡锡是数学家阿龙佐·丘奇的学生,而丘奇是 Lambda 函数演算理论的创立者。Lambda 函数论解决了函数名称与函数过程之间语义含糊和歧义的问题。 其实,关于“名”与“实”之间的关系,我国古代的哲学家有大量 精辟见解,公孙龙的“白马非马”之说已经涉及到,庄周对于有与无的哲学见解更是精辟,只是由于时代的局限,他们的睿智不易被现代人所容易地了解罢了。泛系理论在 1976 年提出时也已经研究过这一问题,但是时隔二十几年后我才真正明白它们之间的内在联系。
Lisp 在漫长岁月里衍生出来很多版本。其中一个版本 MacLisp 对RMS 的影响很大,
在设计GNU Emacs 时,RMS 将Lisp 融入了其中,道理很自然,因为 GNU Emacs 是
一个文本编辑器,文本就是一种符号,而 Lisp 正好就是针对符号计算发明的。GNU Emacs 中的 Lisp 称为 Emacs Lisp。它比大多数其他的 Lisp 版本都简单。
1994年时众多 Lisp 版本又得到了相当的统一,统一之后的版本称为Common LISP。
Common Lisp 含有非常丰富的库,仅仅语言的规范就长达千页以上,包括面向对象
的 CLOS。
Scheme 语言是 Lisp 的一个现代变种,诞生于1975年,诞生地点也是在MIT。
Scheme语言的规范很短,总共只有50页,甚至连Common Lisp 规范的索引的长度都不到,但是却被称为是现代编程语言王国的皇后。它与以前和以后的 Lisp 实现版本都存在一些差异。但是却易学易用,
自由软件基金会有一个叫 Guile 的语言,实际上就是 Scheme 的一个实现版本。RMS 对编程语言的精辟见解,后来我都收录进入了《Learning GNU/Linux OS》一书中。
Lisp 语言程序员经常说,SGML 技术只是符号表达式的另一种“更丑陋”的实现方式,此话不假,因为早在二十世纪五十年代,Lisp 就已经将形式语言符号计算引入进了计算科学界。Lisp 或者 Scheme 语言可以非常容易地处理 XML 文档的解析。
科学精神
---------
纵观人类科学发展的历史,科学精神的作用是贯穿始终的。怀疑是科学创新和发展的源动力之一。科学精神提倡怀疑,不怀疑已有的陈规和定论,科学家们难以提出新的观点,也就不会有新的实践活动,科学也就得不到发展和进步。
自由软件鼓励创新,
自由软件的创新机制来自对所提供的源代码的怀疑 --- 如果你对程序的功能不满意,就可以察看程序的源代码,修改之中的代码,从而得到更好的功能。 从这个意义上说,开展
自由软件运动可以说是向世人普及科学精神的最好方式之一。任何人都可以自由地自行检查程序的源代码,动手来改进程序。
信息的不对称性
--------------
公开了程序的源代码,程序对用户就是透明的了(相比之下,专有软件的源代码是密而不宣的),但是,源代码透明并不等于任何人马上就能理解代码的含义,要理解源代码的含义还需要大量的思维劳动。
编写程序这个行当可以说是一门工程技术,就像其他类型工程师的工作一样,但是,对于具有创造性的软件,编写程序的过程却更像是搞艺术创作。毫无疑问,作者首先必须要懂大量的知识,这一点与艺人表演一样,“台上一分钟,台下十年功”。成为一位合格的程序员,需要具有很多方面的基础知识,这些知识的积累都不是一蹴而就的,需要多年的积累,具体多长时间因人而异。
作者在创作软件时,精力必须高度集中,很难在一个不安静的环境下写出高质量的软件来。这一点与艺术家们的工作也很相似。刘勰在《文心雕龙》中就说过:“文之思也,其神远矣。故寂然凝虑,思接千载,悄焉动容,视通万里...... 故思理为妙,神与物游......” 程序员的创作结果就体现在源代码之中,但是在源代码从程序员的头脑写到文件的过程中,大量的信息是无法表达的,经验丰富的程序员会写很好的代码注释,但是即使加上了这些注释,还是远远赶不上程序员头脑中思想过的全部信息量,因此代码中含有的信息只是全部信息量的极少部分。当然如果连源代码这个媒介都不存在(像专有软件那样),那就什么都谈不上了,信息量为零。
这正好是泛系理论可以大有作为的地方,因为只要具有足够的“智能基砖”和正确方法论的导引,人的智能可以放大,从源代码保存的少量信息量中反演出作者原来创作时的思路来。即使反演的结果含有的信息量还是比不上原作者的信息量,但是由于信息的冗余性存在,只要能够达到理解的目的,这种反演就算成功,反演就有巨大的价值。如果反演可以推出比原作者头脑中更多的有价值的信息量来,那就是高级的人工智能技术了。
我们离开了九寨沟,这一行使我得到了RMS 心中的很多想法,尽管他本人并不认为他当年设计那些伟大的程序时使用了什么特别的方法论。但我想如果他的想法在传记中能作为规律揭示出来,那就有可能催生一批而不只是一个像他这样的天才程序大师来。
(十一)从泛系观看
自由软件(1)心理认知距离的度量
一旦明确了信息在软件作者与软件用户之间的不对称性,那么如何打破作者与用户之间的这种不平衡,以达到信息量或者知识的对称(对知识的共享)呢?或者说,如何让用户以及其他开发人员理解原作者的软件,从而更好地使用以及完善软件呢?
泛系泛系,泛化之系。
连网之络,开发之器。
参证之轴,律化之机。
观控之法,联想之翼。
一篑之助,点睛之笔。
泛系是研究泛关系、泛转化与泛对称的理论,它已为求得系统之间的泛对称性指出了方向:首先必须研究清楚构成智能基砖是哪些东西,这些智能基砖之间可以形成哪些泛关系,以及泛关系之间的转化规律是什么。在搞明白这些问题的基础上,就可以开始度量心理认知距离的大小或者长短。通过对心理认知距离的度量,就可以确定学习和理解的工作量,从而为用户指明填平不对称性需要实施哪些可以实际操作的步骤。
(2)软件工具
GNU 工程的一个伟大之处在于,它构建了一个完整的操作系统,而正是在这个完整的
操作系统中,从文本编辑器(Emacs)、编译器(GCC)、调试器(GDB)、库函数(GNU C Lib)、词法分析器(Flex)、句法分析器(Bison)、版本管理系统(CVS)、联机文档系统
(Texinfo)等等,它提供了应有尽有的自由的软件开发工具。有了这些工具类的
自由软件和开发环境,创作新的
自由软件就有了真正实用的基砖。
(3)泛对称的艺术
我通过探索 GNU 系统得出了结论:编程是泛对称的艺术。
在软件开发过程中,泛对称的例子是随处可见的。 GNU Emacs 中的少量 C 模块与大量 Lisp 模块就是一种泛对称关系。C 是编译型的语言,运行效率高,但是开发的速度慢;Lisp 是解释型的语言,扩展性好,但是效率上与 C 相比则显得不高。斯托曼的一个天才构想就是利用 C 编写直接与硬件作用的模块,例如屏幕显示模块,而涉及文本编辑的模块则统统用 Lisp 语言编写,而且将 C 模块代码的函数名写得像 Lisp 的函数名,所以你不仔细研究模块内部的细节,单从函数名上是很难区分它们两者的,而这正是作者的目的,它巧妙地处理了子模块之间的异同关系,在满足效率的同时,也充分保证了系统应该具备的扩展性。
GNU 的编译器 GCC 和操作系统内核中也大量存在类似的泛对称技术。推而广之,由于计算机最终是为人服务的,各种程序实际上都是直接或间接地在硬件系统与人之间构建泛对称。(硬件系统设计技术内部也存在大量的泛对称性,但是这里就不去涉及了。)
(4)从泛系观看自由
除了技术的自由,
自由软件运动明确提出它的目的在于改革社会。在
自由软件的游戏规则中,数学上的递归得到了彻底的使用,递归的威力让专有软件出版商们胆战心惊,他们将
自由软件的游戏规则斥之为具有“传染性的病毒”。
软件的许可证是一种实施权利的形式。
自由软件许可证背后的哲学思想来自于对自由与平等人权所作的深入思考。
古往今来,人类社会总是处在不断的动荡不安之中,太平盛世的日子总是屈指可数的。偏见与歧视、傲慢与强权,一切动乱的根源最终都可以看作是人与人之间,或者社会里的一个群体与另一群体之间的不平等造成的。
中华文明有五千年可考的历史,在世界史上,中国以两千年跨度的封建社会为显著特点,尽管朝代更迭多次,但是封建社会的结构却出奇地稳定,专制的封建社会压抑民主和自由,结果是尽管在文明发源后的一个相当长的时期内中国的科学技术领先于西方,但是近代科学却不是诞生在东方,而是出现在西方。
追求平等与自由的理念在中国自古就有之,自近代以来,一直有大量的学者探索和比较中西方对平等和自由理解的差异和相通之处,并提出了各种见解。这一探索最早以严复的论述最为精彩:
“夫自由一言,真中国历古圣贤之所深畏,而从未尝立以为教者也。彼西人之言曰:唯天生民,各具赋 bi,得自由者乃为全受。故人人各得自由,国国各得自由,第务令毋相侵损而已。侵人自由者,斯为逆天理,贼人道。其杀人伤人及盗蚀人财物,皆侵人自由之极致也。故侵人自由,虽国君不能,而其刑禁章条,要皆为此设耳。 中国理道与西法自由最相似者,曰恕,曰 jie矩。然谓之相似则可,谓之真同则大不可也。何则?中国恕与 jie 矩,专以待人及物而言。而西人之自由,则于及物之中,而实寓所以存我者也。自由既异,于是群异丛然以生。粗举一二言之: 则如中国最重三纲,而西人首明平等;中国亲亲,而西人尚贤;中国以孝治天下,而西人以公治天下;中国尊主,而西人隆民;中国贵一道而同风,而西人喜党居而州处;中国多忌讳,而西人众讥评。其于财用也,中国重节流,而西人重开源,中国追淳朴,而西人求欢虞。其接物也,中国美谦屈,而西人务发舒;中国尚节文,而西人乐简易。其于为学也,中国夸多识,而西人重新知。其于灾祸也,中国委天数,而西人恃人力。若斯之伦,举有与中国之理相抗,以并存于两间,而吾实未感区分其优绌也。”
严复的西学,“苟扼要而谈,不外学术则去伪存真,于刑政则屈私以为公”,他是中国历史上第一位明确提倡科学与民主的学者,他晚年面对社会上强大的封建势力而生的退缩立场与复古无损于他的一生学术思想的光辉。
在欧洲文艺复兴特别是法国大革命之后,人类理性思维能力逐渐成熟,终于发展了可以驾驭自身发展规律的完整科学体系。我们不能苛求严复,因为他的时代集合论还没有取得公认的基础性地位,而今天我们可以利用理性思维工具清楚地认识到,平等的概念可以使用数学中的等价关系概念来精确刻画,对于社会系统,以自反性、对称性和传递性定义的等价关系是指在集合(社会)中的每一个元素(个体)都处在一个同等的地位上,特权的清除依赖于每一个个体对社会中其他个体一视同仁的尊重,在这种理想的社会中,个体享受自由的权利与与个体尊重他人义务是同时存在的,它们两者使得自由具有天生的两重性。在具有等价关系的社会系统中,无论如何进行聚类,得到的群体或者个体都具有相同的自由度 --- 等价关系是正确理解人权的理性思维工具。
要想使整个社会系统中的每个个体相等地具有相同的权利和义务,递归的实施是最有效的手段,因为在这种社会动力学系统中,递归能保证系统中普遍的等价关系的建立和存在。以“版权属左”(copyleft)为基础建立的
自由软件的游戏规则,巧妙地使用了递归的力量,以期达到社会中普及自由之目的。
(十二) 东山再起 --- “一、百、万”工程
(1)“一、百、万”工程(MNM Project)
2001 年 3 月 5 日,我发起了“一、百、万”工程。尽管发起这一工程的导火索有某种偶然的成份,但是工程的提出只是迟早的事情,因为我对自由的涵义和自由的价值已经理解得相当清楚。以前的曲折经历告诉我,没有自由,特别是缺乏对自由进行保证的制度,想取得成功只是一种幻想。自由关系着所有人的福址。一个人的商业成功可能满足他或她一时的欲望,但是却无法保证实现社会的普遍繁荣。社会系统里的大量“人为与门”的存在,极大地束缚了生产力的发展和社会的进步,浪费了巨大的资源,是造成社会系统的显克和灾变的根源。要想清除这些不合理的人为与门,只有一个办法,通过向社会灌输自由的理念,让全体社会成员都能理解自由的重要性。当社会里自由的观念深入人心得到普及时,一切制约生产力发展的“人为与门”都会在它面前土崩瓦解。
尽管我不是职业政治家,无法通过官僚体系了实施我的理想,但是我们现在正进入信息社会,在信息社会里,借助技术和网络的力量,传播自由的理念要比以往任何时候都来得容易。网络,特别是人与人之间的网络,是铲除各种“人为与门”的有力武器。
这里,“一、百、万”不是指数字的一百万,所以有“一、百、万不是一百万”的诙谐说法(MNM's Not Millions), 正好印合了黑客界对 GNU 工程的递归命名法则 (GNU's Not Unix)。实际上,“一、百、万”工程是下面三个方面工作的简称:
“一”字工程是指创建一个研究院,也就是
自由软件基金会中国研究院。
-----------------------------------------------------------------
几个泛系学友曾经建立过武汉泛系工程研究所,我曾经试图将这一研究所改造成
自由软件基金会中国研究院,但是不是所有的泛系学友都理解我提倡的自由观念,他们不想改变原来的章程,因此我只好另起炉灶,自己动手与 RMS 一起来组建
自由软件基金会中国研究院。
尽管目前组建
自由软件基金会中国研究院还面临许多问题,例如,作为一个在民间成立的科学研究组织,它在法律上它无法得到《捐赠法》的有效保护;作为一个社会公益事业性质的组织(--- 它开发的
自由软件人人都可以自由使用),它无法享受到像 FSF 在美国得到的税收政策(在美国,FSF是免税的,而且捐赠人向 FSF 的捐赠可以从个人或者企业的所得税中扣除),
但是这些困难都不是我们停止向社会传播自由的理由。
工程启动后,它即着手建设一系列的工程,这里是项目的一个简要清单:
开发高质量的矢量汉字字库。
-------------------------
汉字字库是中国人使用计算机时必须拥有的东西。遗憾的是,中国现在没有一种真正自由意义上的汉字字库,无论是终端上的点阵字库,还是高质量的用于印刷的矢量字库。
这一项目将开发 PostScript 矢量字库。PostScript 技术是一项非常成熟的技术。工业界对它的支持很广泛,
自由软件基金会也有工具软件支持它,这一工程项目的难度除了要熟悉PostSript 语言规范之外,关键在于工作量的庞大,因为汉字的数量很多,仅仅 GB2312-80 就有 6,763 个汉字。而且仅有一种字体是不够的,需要至少四种才能基本满足印刷的实际需要。
新的操作系统
------------
我们目前面临的软件危机主要表现在缺乏自己可以把握的平台上,包括硬件平台和软件平台。冰冻三尺,非一日之寒。 中国人在开发操作系统的道路上,因为犹豫不决和决策失误浪费了很多时间,走了大量的弯路(在我看来根本原因是缺乏对自由的理解)。由于长时间没有硬件平台的直接支持,自己又不重视技术开发力量的储备,人才的流失严重。因此短期内开发出一个成熟的操作系统是不现实的。
由于信息时代操作系统作为平台的重要性日见突出,因此,“一、百、万”工程知难而上,决定自己开发自由的操作系统, 其技术路线是复活 Lisp Machine,也就是将编程语言扩展成为一个完整的操作系统。
新的操作系统称为“MNM”,它是从芯片开始设计的全新操作系统,硬件平台以基于堆栈的芯片为默认平台,还有采用微内核的体系(GNU 系统将来也可以采用),出色的实时反应速度,完善的内核多线程机制,健壮的网络功能,已经图形用户界面等一大堆技术性能。
Scheme 实现版本
---------------
Lisp Machine 在二十世纪八十年代曾经颇为风光过一阵,它曾经是黑客们的掌上明珠,后来因为市场和技术等原因,从操作系统家族中消失了。
影响 Lisp Machine 普及的技术原因在于 Lisp 语言环境的运行速度不彰,Lisp 语言有一种内存垃圾自动回收机制,早期计算机上的内存是非常昂贵的,计算机系统上内存是很少的,属于最稀缺的资源。Lisp 在实现时考虑到了这一点,它将程序运行过程中产生的所有不再使用的内存清理干净后重新投入计算,在内存垃圾回收时,Lisp语言解释器不得不停下来等待新的可重用的内存,因此速度上受到很大影响。
但是内存垃圾回收(GC)本身是一项非常出色的技巧,它本身并没有什么错。编译型的语言,例如 C,需要程序员自己来管理内存的分配和回收,因此编程效率低下,而且容易出错。现代的许多语言都在模仿 Lisp 的内存垃圾回收机制,例如 Java 语言中就有从 Lisp 借鉴过来的类似内存垃圾回收机制。
今天的计算机内存部件成本已经大大下降了,因此通过采用动态的垃圾回收技术,即一边运行程序(而不是让程序运行暂停或者进程挂起),一边回收垃圾,Lisp 的运行速度可以大幅度提高。因此,现在很少听到对 Lisp 运行速度的抱怨声了。
当然,还有一些技术可以提高计算速度,例如,将基本的直接与硬件交互的模块,采用汇编语言编写,成为可以直接执行的原子函数进入 Lisp 的 REP 循环,由于内存部件的低成本,因此基于堆栈的芯片上已经集成了大量的存储器,算法可以使用硬件而不是单纯靠软件来实施,因此计算机运算速度可以大幅度提高,而且程序小巧而紧凑。
但是,正如前面提到的,标准的 Common Lisp 太庞大,“一、百、万”工程将采用自由的Scheme 实现版本来开发操作系统,复活 Lisp Machine。我们将针对最高的 Scheme 规范版本(R5RS),加上一些自己的扩展特性,来开发自己的 Scheme 实现版本。
桌面工作环境
------------
当今任何主流的操作系统上都有图形用户界面(GUI),GUI 以一种直观的方式为计算机用户提供了观控框架,绝大多数计算机用户喜欢在这样的环境下工作。
自由软件社团广泛地采用了原创自 MIT 的 X Window System,目前几乎清一色地在X 上加入自己的图形界面元素构成一个完整的桌面环境,GNU 系统上是GNOME。GNOME 的设计思想卓越,它采用了CORBA 技术,将面向对象的编程技术和分布式计算结合在了桌面环境中。
X 最初提供了两种等价的库,一种是现在通用的以 C 编写的 Xlib, 还有一种是现在几乎废弃的 CLX,即利用 Common Lisp 编写的 X 库,这两种库都实现了对 X 协议的支持。“一、百、万”工程将在 CLX 的基础上,利用 Scheme 来改造 X。
这一改造的目的不仅仅是得到一个可以使用的 X 窗口系统,而且有更高的技术目标 --- 它要将基于 X 的桌面设计得像 Web 是一个浏览器, 将分布式的 Web 带入 X 桌面,从而得到一种新的泛对称。在这一桌面环境下,任何对象无论它在本机上,还是在网络远程的什么地方,均可利用桌面对计算进行观控。大量的泛系概念将采用进入这一桌面环境的设计中。
“百”字工程就是要创作几百本自由的计算机文档,并把它们当作图书出版。
--------------------------------------------------------------------
一旦有了高质量的自由汉字字库,我们就可以开始出版自己的文档。这些文档既可以从网上自由传播,又可以作为纸媒体印刷出来销售,为工程积累开发资金。“百龄影徂,千载心在”。只要有一批高质量的计算机文档,那么我们的工程就会后继有人,他们可以在我们的肩膀上继续向上攀登,而不用从头做起。
“万”字工程就是要在中国培养几万名具有创新精神的、可以动手开发
自由软件的工程师。
---------------------------------------------------------------------------------
一、百、万工程非常庞大,需要大量的人力物力的投入,因此我们希望有大量的软件工程师参加进来。目前这方面的人力资源还远远不够,因此我们要利用我们在心理认知距离的度量中获得的研究成果大力开展培训工作,利用多种手段培养几万名可以动手开发
自由软件的人才。只有具备了大量理解了自由涵义的人才,我们的工程才有蓬勃发展的保证。
自由软件运动在中国才有成功的希望。
至道在微,变化无穷,孰知其原!......恍惚之数,生于毫厘,毫厘之数,起于度量,千之万之,可以益大,推之大之,其形乃制。
“一、百、万”工程发起的意义绝对不仅仅是像一些人期望的那样创造一些高质量的具有民族品牌的软件,解决我们民族面临的软件危机,而且在于,
自由软件运动从此在中国的发展不再是属于一些黑客个人自发的业余爱好,或者几家公司手中的赢利工具,而是变成了一种自觉的行动。这个工程有它完整的宗旨、既定的技术目标,计划纲领和具体行动。它通过技术手段来传播自由的思想和理念,达到创造更加美好社会的目的,它或多或少像是一种柏拉图式的政治,尽管参加工程建设的人将不是来自政府的公务员。
(2) 重朔事业的第二春
市场上有大量的 IT 公司幻想着急剧膨胀公司规模,然后上市圈钱,以达到迅速发财致富的成功目的。 我们不打算这样做,我们的手段是利用泛系是推广自由。泛系理论已经提供了足够多的商业模式供我们采用。目前工程的资金来源主要依靠我们提供的服务:
出版《
自由软件》杂志
--------------------
经过一年的努力,我们开始出版《
自由软件》杂志(FSM),这是目前全球第一本关于
自由软件的英文杂志,这一杂志得到了FSF的直接支持。它有电子媒体和纸媒体两个版本,两个版本的杂志都可以自由的拷贝和再发行,电子媒体发表在我们的网站上:http://www.rons.net.cn/english/FSM/online,纸媒体杂志的销售收入用于支持“一、百、万”工程的建设。
排版服务
---------
TeX 经过多年的发展,已经非常稳定了,我也摸索了多年,对其内部结构已经了如指掌,我在 2000 年组建了 CTUG (China TeX User Group)。目前,CTUG 还在成长壮大,我们在 CTUG 的基础上组建了一个排版工作室,FSM 排版的任务就是这一工作室承担的。除此之外,它面向世界市场提供高质量的商业性排版服务。
讲授
自由软件课程
----------------
实际上,信息不对称的原理已经得到经济学家们的广泛认同,2001年度的诺贝尔经济学奖金就颁发给三位在这方面研究取得了突出贡献的学者。
应用前面提到的信息不对称的原理,通过对心理认知距离的度量研究,我们开发了一套冠以“黑客道”(Hackerdom)的
自由软件培训课程,通过学习这一套课程,学生可以迅速掌握
自由软件的工作原理,具备动手开发
自由软件的能力。我们收取的学费除了支付教员的劳动之外将用
于工程的建设。
“春三月,此谓发陈,天地俱生,万物以荣......生而勿杀,予而勿夺,赏而勿罚,此春气之应,养生之道也。” 我们希望所有珍爱自己的自由和权利的人都来关心和支持“一、百、万”工程的建设,共同营建我们
自由的春天。
结语
从一个初出茅庐的热血青年,到成长为一个为自由而奋斗的战士,我已走过了12 年的曲折历程,我有幸在这12 年的时间中,得到了两位来自不同领域里的世界级大师的指导和关怀。我不愿将这段难忘的经历封闭起来视为自己私有的财富,而是写出来,希望引起社团里的每一个同志对自由的进行思考,或者得到某些启示。
我们生活的时代处在一个信息社会刚刚开始的门槛上,这一时代不同与以往的农业社会、工业社会,信息社会中的社会成员将因技术的飞速发展拥有前所未有巨大的自由,也正是因为如此,这一社会存在的基础 --- 自由 ---才显示出比以往任何时候与人都更加密切的关系,值得我们去珍视和维护。古往今来,对美好自由的向往是人类永不停歇的追求的源动力,让我在此
套用《泛系百经》中的“路人律”来与大家共勉并结束全文:
识志尺势人各有,
同志结识又分手。
天涯咫尺常对转,
自由事业伴千秋。
版权所有 copyright
洪峰 2002
本文可原封不动的拷贝和自由地再发行,但在拷贝和再发行的拷贝中必须
原封不动地含有这段版权声明。