BSD Committer TW 之一 Clive 的電腦世界回顧與展望

前言

本篇採訪 Clive 文章是 Debby 在2002年時所寫的,有感於 Clive 對於我在 FreeBSD 學習路上的幫助,之前看到這篇時就一直想收錄下來(不知為何有這樣強烈的念頭!!),經過與採訪作者 Debby 及 Clive 溝通後,採訪作者 Debby 同意讓我收錄此篇。非常感謝 Debby !!



下列文字的內容來源為 Debby‧療癒之島:BSD Committer@TW之一 ——Clive的電腦世界回顧與展望



BSD Committer@TW之一 ——Clive的電腦世界回顧與展望

作為 BSD Committer之一,Clive 是國內 FreeBSD 社群中少數幾個活躍的人,並曾短暫地接觸過 Linux。然而,在網路世界外,Clive 自陳因為身份敏感,因此不太願意露臉。但透過社群朋友的幫助,他還是接受本刊的採訪,讓更多人可以知道這位愛貓的 BSD Committer 的養成過程。

出身教師家庭的 Clive,爸媽都是老師,有個小弟亦任教職,本身也在師範體系求學。然而,他卻不修教育學分,未來沒有為人師表的打算,從小就對電腦有著莫大的興趣,因此自認是他們家中最不像他們家的人。

和同年紀的人相比,Clive 接觸電腦的時間算早,小學五年級就開始玩親戚家的第一台電腦(PC/XT)。當時讓他狂熱的是上面的電玩,好比青蛙過街、水果盤、酒保等老遊戲。光看他對那麼古早的記憶猶新,就可知道他對那段時間有著相當程度的懷念。他說,除了打電動,那部電腦對他的啟發,就是讓他認識 dir 「密碼」(即指令),就好像阿里巴巴大叫「芝麻開門!」般,有了這些「密碼」就可以進入奇異詭譎的電腦世界。那時候他背不起來fruit(水果盤遊戲)這個「密碼」,只知道打 dir 可以列出那張磁片上有什麼「密碼」可以打。還有結尾是「.EXE」或者「.COM」的「密碼」,可以試著輸入看看的。

Clive 回想這段過程,認為當時的認知很天真。不過知道「打 dir 可以看某些東西,再去嘗試看到的東西」的概念,對他有十分深遠的影響。他認為,對於 hacking(Clive 採用 jargon file 的定義,指得是不屈不撓地克服各種障礙,以得到他想要的電腦知識,而非一般被污名化的駭客行為)這種自我探索的行為,要說是始於 dir 也不為過。

跟所有好奇的孩子一樣,Clive 對電腦旁的書也產生興趣。那是他當時在讀大學的舅舅的書,大概是 C 語言概論、Lotus 1-2-3 之類,只是國小的他看不懂。但他很開心地發現有本施威銘寫的《MS-DOS 實務手冊》中,有「一頁」他看得懂一點點。那一頁就是在講 dir 指令,讓他很高興看著同一頁不斷嘗試。閱讀文件的觀念,就在那時養成。不過,玩遊戲還是他碰電腦的原因,因此國小畢業時,他仍只會 dir,外加 /w 等參數。

Clive 真正認識「指令」這個詞,要到國中二年級。那時他家中買了第一部 386 電腦。學校的工藝課開始上電腦課程,老師教倚天中文、慧星一號、大易輸入法等現在看來十分過時的東西。Clive 覺得老是操作這些軟體,或者背字根,實在沒什麼意思。因此跑去問老師,有沒有dir et之外的「密碼」可以打。老師愣了一下,指正他,那叫「指令」,不叫「密碼」。之後他還學到 autoexec.bat、config.sys 等檔案的概念,以及 format、a:、c:、copy、edit、批次檔的觀念,然後對於相關實務手冊才比較有概念,從此建立電腦的正確觀念。

那時他詳讀《MS-DOS 實務手冊》和《倚天中文實務手冊》之類的書,因為他對於操作彗星一號、打文章、拚打字速度等沒興趣。為了想學些跟其他同學不一樣的,半年後又去找老師,問了一句他其實不太確定的話:「老師,我想學寫程式,該學什麼好?」那時他壓根不知道寫程式是怎麼一回事,只是脫口而出一個好像聽過的字眼。於是當老師告訴他「BASIC」時,他像鴨子聽雷般回答:「喔……杯吸扣……怎麼寫?」老師很有耐心地再告訴他一次。但他聽了仍一頭霧水,只覺得心虛,想要趕緊閃人。

許多人可能因此覺得丟臉而打退堂鼓,但有 hacker 精神的 Clive 在這件事的刺激下,趁著到親戚家時,去翻找 BASIC 的書,並且找到了一本講 GWBASIC 的書,和一片 GWBASIC 磁片。但這也只是他的一頭熱,在知道行號、PRINT、GOTO、加減乘除後,熱情不再,依舊在玩電腦遊戲中度過。

高中時,他加入台中一中的電腦資訊研習社(http://www.cirx.org)。這個社團在中部的重要性,就像北部的建中資訊社一樣,培養不少人才。但 Clive 覺得沒學到什麼,因為學長熱心地教 C,他仍在寫 BASIC。那時 Turbo C 的整合開發環境介面搞得他一頭霧水,認為還是 DOS 6.x 內建的 QBASIC 比較好學。Clive 呼籲大家不要覺得 QBASIC 一無事處,因為他可是花過不少時間,苦思 code 要怎麼寫才會簡潔,要怎麼改才會漂亮,還靠它拿過中區資訊月程式設計比賽的獎。Clive 因此力陳,「如果某某語言可以實作某某人想得到的任何抽象程設概念,那對某某人而言,某某語言就是好語言」。即使他現在已經不會 BASIC,但當初苦思如何寫好程式時給他的啟發,仍是相當深厚的。

那時有趣的事相繼出現,讓他脫離遊戲的懷抱,例如開始玩撥接式 BBS,Windows 3.1、Windows 95 也相繼出現了。那時 DOS 依然風行,很多事都要在 DOS 下做。Windows 3.1 還不太能用,常常壞掉。那時除了 Clive 父親要用 Word 打碩士論文,所以他要安裝 Windows 3.1 給爸爸用外,大部分時間他還是覺得待在 DOS 命令列模式之下比較愉快。Windows 95 出來後,由於電腦配備太差,他仍待在 DOS 底下。直到上高三的事,接觸網路和 Unix,進入他人生重要的轉捩點。

Clive 高三時,高一來了目前在 FreeBSD 社群也是赫赫有名的人物——高嘉良(clkao)。對老鳥來說,clkao 是個知道很多新奇事物的小鬼頭,程式功力也是數一數二的。Clive 從 clkao 身上學到的第一件事,就是如何免費取得網路管道(free internet access or cracking)。當時要上網際網路,要付費用 HiNet 帳號撥接。而 clkao 神通廣大地得知某省立單位的撥接查詢系統,按了某熱鍵就可以 telnet 到任何地方去。這對迷上 bbs 的 Clive 來說,是個福音,因為上網只要付電話費就好。

高三這年,Clive 踏入 IT 業。因為網咖開始風行,中一中附近有間網咖開張。他本著一試的心理去打工作,從此就待在 IT 產業了。一開始他只是外場人員,因為除了 BASIC 還精通之外,其他的不會了。那家網咖也挺簡陋,只有一條專線,有顆 router,裡面有台陽春的Linux(1.xx 版)伺服器。雖然現在的網咖形同新版的電動間,但以前的網咖還兼營內容網站。由於部分伺服器的問題沒人能解,所以 Clive 介紹當時在玩 Linux 的 clkao 做網管。但是光靠 clkao,還是有些事做不完,有些程式來不及寫。於是會寫 BASIC 的 Clive 就被老闆趕鴨子上陣了。他因此接觸 Linux 0.9X、FreeBSD 2.X,認真地寫 C,以及在 NT 上寫 ASP。Clive 說,用 C 寫 cgi,可能有人覺得很不可思議,但他一寫就寫到大二。

前述的免費撥接系統是用 FreeBSD 架的,clkao 和站長挺熟的。原本玩 Linux 的 Clkao,跟那票人常接觸後,轉進 FreeBSD 領域。由於當時的 Linux 不夠好用,clkao 便把那間網咖的 Linux servers 換成 FreeBSD,Clive 也跟著把開發環境換到 FreeBSD 下。他當時的桌上型電腦是 Windows NT workstation 或是 Windows 95/98,使用 netterm 連進 FreeBSD server 拿 vi 寫程式。Clive 在大二之前對作業系統沒有特別偏好,之後由於擁有自己的電腦,花不少心力調整慣用的桌面和程式,如 mutt、tin (讀新聞群組)。由於當時也接案子,得同時有 server 端和 client 端的環境,因此他在電腦上裝了 FreeBSD,使用 X window 做為他的 client 端,從此開始習慣 BSD。剛開始有問題就靠 AltaVista.com 搜尋網站,找關鍵字搜尋,看到指令就抄下來試看看。

Clive 覺得用 FreeBSD 是件很有趣的事。因為想要試新東西,不必另外再找 server 測;而且自己就是 root,可以玩許多 FreeBSD 系統面的新事物。他對 FreeBSD 的認識,因此寬廣起來,不只是做為 server 用而已。用久了,能解決的問題多了之後,開始在新聞群組上回答別人的問題,也結交更多玩 FreeBSD 的朋友。舉凡各種設定 Q&A、新消息散佈、文件翻譯、程式修改,都玩過幾輪。他自認過去在 FreeBSD@TW 出力最多的地方,該是 i18n 方面關於繁體中文的部份。在累積一些信譽後,作為 FreeBSD@TW 的 committer 之一的 vanilla,便寫了篇 proposal 把他拱上去,Clive 因此成為 committer,這是 2000 年 12 月的事。

FreeBSD Committers 究竟是做什麼的呢?Clive 解釋說,Committers 是指能直接修改 FreeBSD CVS repository 的人,也就是能修改原始碼的人。Committer 最高階層是 core,大約 11 人,然後依權力階層分為三群:src committer、ports committer 和 doc committer。三個之間的權力有所差別,src 最高,ports 其次,doc 最末。Clive 是 ports committer。要做那個 group 的committer 是自己決定,但其他人會審核資格。好比想做 src 的 committer,要由 core 決定;想做 ports 的 committer,則由 ports 的 port manager 決定。

由於最近工作和課業兩頭燒,Clive 沒有力氣像之前去研究某個主題。目前頂多修修 ports,然後幫台灣的 submitters commit patch,仍會注意一些新發展,當作觀察與瞭解。他的首要焦點,是 FreeBSD 5.0。5.0 是目前發展中的版本,許多的功能都讓人十分期待。與 FreeBSD 4.x 版比起來,5.0 有許多的大改革,所以是一個大躍進。其次是注意 FreeBSD 的 Java 支援,因為他本身也是一個 Java coder。Clive 謙虛地說是看 reference 湊 code 出來交差的 coder。

相較於 FreeBSD 4.x,Clive 認為,FreeBSD 5.0 最令人興奮的新功能,便是 KSE 和 SMPng 了。KSE 目前還在發展中,不過現在 userland thread 已經可以接上 kernel thread 了。5.0-RELEASE 之時,KSE 應當還不會發展完備,大概要等到 5.2 或 5.3 版本。簡單地說,SMPng 是更善加利用多重處理器的計劃。SMPng 做很多其它的改進,最顯而易見的好處是,大量減少了 giant lock 的使用;也就是 kernel 有更多機會可以同時在多顆處理器執行了!另外 5.0 令人期待的還有 ipfw2、GEOM、c99 等。ipfw2 是完全重寫的 ipfw,可以過濾任何的封包,支援 rule set 等。GEOM 則是基於分層架構的概念,將磁碟 IO 的動作分層拆解為各自獨立的layers,提供了更多彈性以及發展性。c99 及 POSIX 相容計劃,讓身處 CJK(中日韓)語系的Clive 更加的期待。FreeBSD i18n 的發展,目前已有相當程度,但若要更加完備,則有賴將包含 w_char 的 c99 標準引進 FreeBSD 計畫。

還有 FreeBSD 的 Java 支援,相信也是很多人關心的議題。Clive 進一步說明,Java 本身雖然是跨平台的語言,但其實最難跨越平台藩籬的,就是 JVM 本身。Java 執行的效率要好,有賴於和作業系統結合良好的 JVM。FreeBSD 現在已經有了 native jdk1.[123],但是還沒有 jdk 1.4,也是因為 porting JVM 的難度很高。Native jdk 1.3 的效率不夠好,要歸咎於 FreeBSD 4.x 及 4.x 之前都沒有 kernel thread,只有 user thread。這部分因此就要看 5.0 出來之後能改善多少了。還有,目前 Java 在 FreeBSD/Linux 的中文支援也不夠完美。前陣子有空的時候 Clive 曾經想要改善,至少得跟日文支援一樣。由於過於忙碌,因此工作停滯。於是 Clive 在此號召,希望有人能 hack 一下。中文支援不良會遇到的困境,主要是在使用 Java 設計 UI 方面。若能有完善的解決方案,因此受益的人應該會很多。

至於 FreeBSD 的未來發展,Clive 認為,它會繼續保持低曝光率,這是本質上的差異。FreeBSD 因為授權條款的關係,可以轉成私有化商品,未來仍有人用 FreeBSD,但永遠不會像 Linux 那麼紅。即使目前用 FreeBSD 的公司不少,如 Yahoo、Sina、FedEx、 Hichanel、中視等。由於 Linux 用 GPL,GPL 會吸引到的人,比較有熱血的傾向,而 FreeBSD 不是。Clive 聳聳肩表示,吸引人的問題「不重要」,因為會用的人自己就會來用 FreeBSD,不必特別去吸引人。FreeBSD 在作業系統的設計概念上,其實是比較進階的 prototype,使用者介面設計並非讓它受歡迎的原因。

看過 Clive 網頁的人,會對他網頁上的貓照片印象深刻。因為那隻貓被拍成一種奇怪的表情,「這是什麼臉啊!」難免讓人蹦出這個疑問。Clive 放了不少貓的照片在網站上,供同好觀看、交流。Clive 家裡的機器甚至以其中一隻來命名,叫「皮公公(fatpipi)」。為什麼那麼喜歡貓呢? Clive 笑說,小動物很可愛啊, 如果有空間、閒錢可養,家人或者室友也都同意,有機會看到對眼的小動物,就會養了。而且許多 FreeBSD committers 都養貓,一群人常在網路上交換養貓經和趣事,像 clkao 有次在網路聊天室上出現一堆亂打的文字,讓一群 FreeBSD 網友一頭霧水,後來才發現是 clkao 的貓踩到鍵盤所致。因此有養寵物的念頭時,他第一個會想要養貓。

有次到通化夜市,看到有隻小母貓滿可愛,就帶回家成為他的第一隻貓,叫做奶油。奶油是隻很黏人的貓,跟狗差不多,Clive 甚至覺得奶油自以為是人。後來便找了叫紅豆的母貓陪她,這隻有貓格多了。也許太有貓格了,有天蹺家後就再也不回來。其他貓都是奶油或紅豆生的。目前他家中有三隻,除了奶油之外,而還有皮公公和小雞。皮公公是奶油的兒子,小雞是紅豆的兒子。這三隻貓都已經閹掉了,以免過度繁殖或亂小便。「皮公公」就是因為被閹了,最近跟食慾不佳的主人一起減肥。

為什麼那麼多 FreeBSD committers 養貓?Clive 說,貓是滿有趣的動物,有好奇心,會跳上跳下很可愛,會幫忙殺蚊子、蟑螂等,家中因此沒有人和貓以外的生物。貓撒嬌的時候也滿好玩的,會用頭拱來拱去,發出呼嚕呼嚕的聲音。最重要的該是照顧貓不必太花什麼力氣,自己會上廁所,自己會找東西玩,比狗獨立。有時沒空陪她的話,只要記得餵飼料、清貓砂就好了,其它的事貓會自理。可是養貓也會讓 Clive 無奈,因為貓聽得懂的人話沒幾句。大概只聽得懂「吃飯」和「滾」。聰明點的貓聽得懂「過來」,不過她懶得理人的時候也沒輒。

當然,養貓和玩 FreeBSD 沒有直接關連性,但 Clive 的經驗,或許可供一些不知怎麼打發閒暇時間的電腦玩家一些參考。

相關網址(Clive 常會流連的地方):
  • FreeBSD Chat
  • FreeBSD.TW
  • KSE
  • SMPng
  • c99