如果以 GNU/LinuxFree Software 作為主角,去寫一部傳記的話,相信很多人會把微軟描繪成主要的反派角色,雖然很多人對微軟恨之入骨,但是作為一個反派角色,微軟就是少了那麼點戲劇張力。 我這邊講的戲劇張力是指甚麼呢?就是有點類似 Star Wars 當中 Luke Skywalker 和他父親 Anakin Skywalker(Darth Vader) 的那種關係,簡單的用漢語來形容就是兩個字 - 「孽緣」。

UNIX Programming 以及 Free Software 的世界當中,coding 固然是很有趣的一件事,不過很多背後的歷史故事其實更引人入勝,有的時候透過線上文件所透露的一些蛛絲馬跡,我們總是可以查詢到一些發人遐思的稗官野史 (像 UNIX Timeline 就是一份很有趣的文件,目前它就被我當壁紙貼在牆上)。有的時候當我跟朋友或同事敘述某段故事時,總會覺得自己口氣有點像哈利波特中的妙麗 -- 「在"霍格華茲一段歷史"當中.....」。

Whatever, 在我心目中,真正最有資格扮演這個反派角色的就是:

Andrew S. Tanenbaum
荷蘭 阿姆斯特丹 自由大學資工系教授

如果你有看過 Linux 發展史相關的文章,應該知道是 AST 所寫的Operating Systems: Design and Implementation 一書及其所開發的 MINIX 促成了 Linux 的發展,其後 AST 因為妒火中燒而在 mailing list 上攻訐 Linux 也是眾所皆知的一段過往。

不過以上只是關於 AST 與 Linux Kernel 的關係,但是很少人知道 AST 與 Free Software 另外最重要的兩大元件之間的孽緣...。所以我這邊就把這段歷史給補敘上來,供作參考.....。

一、GCC
Richard Stallman 最早開始 GNU 計畫時,並沒有打算自己寫一套 compiler,而是先探訪是否有一套現成的 compiler 可供 GNU 計畫使用。那時他發現了一套由荷蘭阿姆斯特丹自由大學 A 教授所寫的編譯器非常不錯,於是便寫信去詢問,以下即是 Stallman 的回憶

I would say that since the time about two and a half years ago when I actually started working on GNU, I've done more than half of the work. When I was getting ready to start working on the project, I first started looking around for what I could find already available free. I found out about an interesting portable compiler system which was called ``the free university compiler kit'', and I thought, with a name like that, perhaps I could have it. So, I sent a message to the person who had developed it asking if he would give it to the GNU project, and he said ``No, the university might be free, but the software they develop isn't'', but he then said that he wanted to have a UNIX compatible system too, and he wanted to write a sort of kernel for it, so why didn't I then write the utilities, and they could both be distributed with his proprietary compiler, to encourage people to buy that compiler. And I thought that this was despicable and so I told him that my first project would be a compiler.

其實這套編譯器全名叫做AMSTERDAM COMPILER KIT(ACK),不過因為是自由大學(Vrije Universiteit)所開發的編譯工具(Complier Kit),再加上荷蘭語與德語近似,V 的發音與 F 相同,因此 GNU 的人都喜歡把 ACK 稱之為 VUCK, 由此可看出他們對於這件事是多麼的氣憤(在Free As In Freedom一書中也可看到類似的記載)。當然,如果沒有 A 先生的這段孽緣,也許不會有今天這麼好用的 GCC 存在了。


二、CVS
CVS 最早的作者是 Dick Grune,他也是那所自由大學的成員。Dick Grune 所寫的 CVS 版本其實是一些操作 RCS 的 shell scripts,當他把這些 scripts 釋出之後,才被 Brian Berliner 重新以 C 改寫。那麼 Dick Grune 當初為何要寫這些 scripts 呢?以下是他本人的解釋

I created CVS to be able to cooperate with my students Erik Baalbergen and Maarten Waage on the ACK (Amsterdam Compiler Kit) C compiler. The three of us had vastly different schedules (one student was a steady 9-5 worker, the other was irregular, and I could work on the project only in the evenings). Their project ran from July 1984 to August 1985. CVS was initially called cmt, for the obvious reason that it allowed us to commit versions independently.

Once the Baalbergen-Waage project was finished, and the ACK C compiler had gone over into other hands, I started to clean up the shell scripts of cmt, because it seemed a useful tool, and I called the system CVS. I remember thinking about the complicated interrelated decisions that had to be made - there were RCS files, user files and entries, each of which could be absent, in conflict, removed, etc. - standing at the bus stop at the university waiting for the bus home, in bad autumn weather (1985). My head started to spin and I decided to draw up a big table, just fill in all the combinations and see what came of it. The table is in the ChangeLog with date 14-Dec-1985.

The initial commit of CVS under itself was on 1985/11/23 23:24:37. I posted the improved scripts to comp.sources.unix (and so implicitly to mod.sources) on June 23, 1986, by sending them to one "Rich" at sources@mirror.UUCP. Two years later Brian Berliner picked it up, turned it into C code, and the rest is history.


作業系統核心、編譯器、專案管理工具,支撐 Free Software 往前發展最重要的三大元件,竟然都與 A 先生有著一段不解的孽緣,他真不愧是我心目中最崇拜的反派角色啊!!!!!!!!!!


AST Orz

http://trimo.blogspot.com/2005/09/blog-post.html

arrow
arrow
    全站熱搜

    Bluelove1968 發表在 痞客邦 留言(0) 人氣()