(八)結識斯托曼博士
(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
本文可原封不動的拷貝和自由地再發行,但在拷貝和再發行的拷貝中必須
原封不動地含有這段版權聲明。