Tumi's Cabaret

關於部落格
A Technical Savvy But a Programming Muggle.
  • 5727

    累積人氣

  • 0

    今日人氣

    0

    訂閱人氣

[台灣黑客錄] Mac Open Vanilla 專案核心成員 lukhnos 專訪

Mac Open Vanilla 專案核心成員 lukhnos 專訪 tumi/文 2005/2/13 在國內的開放源碼(Open Source)社群中,有部份成員的筆記型電腦逐漸從一般的 Windows「跳船」到 Mac OS X 上,除了 Mac 的操作介面比 Windows 優上太多,新版 Mac OS X 採用以 Unix 為基礎的開放源碼核心 "Darwin" 也是受到開放源碼社群青睞的重要原因。這些人跳到 Mac OS X 後,仍然不減開放源碼社群喜歡動手寫程式的本性,將 Mac 上原本不太好用、但每天都要碰到的部份改成自己想要的樣子,卻無形中嘉惠了 Mac 的使用社群,"Open Vanilla" 開放香草輸入法框架,就是一個很好的例子。Mac 使用者也許已經搶先下載 Open Vanilla,但卻可能不知道背後辛苦開發的作者,是如何因為一個單純的念頭,而開始發展 Open Vanilla 計畫,因此本期就邀請到這個專案的核心成員 lukhnos 來談談這個在 Mac 上的開放源碼計畫。 lukhnos 年輕的時候就已經對電腦程式寫作深深著迷,但是和多數人一樣,因為升學與大環境改變關係,對於自己的喜好並沒有再進一步的鑽研。現在的他是一位文字工作者,但或許是對程式撰寫有特殊天份的關係,當他在 Mac 上遇到使用上的不便,靠著自修以及與朋友的切磋,仍然克服萬難並發展出 Open Vanilla 計畫。這一次的訪問,lukhnos 將和各位讀者分享過往經驗、從小黑(IBM ThinkPad)轉換用 Mac PowerBook 的理由(希望看完後不會像筆者一樣也想跳船了)、還有最近受到 Mac 中文社群熱切矚目的 Open Vanilla 輸入法框架的發展過程: ◎ 大環境改變 曾一度轉為 user 問:您在求學過程中主要是以外語系為背景,是否曾因此中斷寫程式?如何維持寫程式的習慣? 答:我是覺得可以不用特別強調「中斷」這件事啦。我本來想唸資訊,後來跑去唸了外文,差不多 1995 年的時候,我寫程式的興趣就少了。 沒有再繼續寫程式有幾個原因:一個是那時候寫程式遇到了瓶頸,我那時沒再多向外接觸,沒學新工具,然而 Windows 上的程式設計,開始需要越來越快的機器。我那時還住家裡,一直沒機會換新電腦(我一直在用高一時家裡買的 486DX-33,那時的頂極機器),1994 年年底買了第一台筆記型電腦,486SX-25,640x480x16 色灰階,因為那時喜歡待在外面,所以選擇花錢買筆記型電腦而沒有升級桌上型,得到的好處是在外面寫了很多東西(雖然多半都是自己存起來了)和作業。但是那樣的機器對於廣義的玩電腦沒有太大的幫助,很多事情已經開始要有大螢幕才做得了了,例如 IDE 環境,也沒能跑一些新東西,例如新版的 VC++、Borland Builder等,這些都沒辦法在那麼小那麼慢的機器上執行,然後也沒有特別想裝當時剛開始的 Linux(主要是 Slackware)。 第二個原因是網路。1994 年對玩電腦的人來說,最大的改變是 Internet 的出現。我很多離家出外唸書的同學,開始接觸「宿網」這種東西,從此電腦功力大增,當然不是沒有那種天天泡計中或電腦室的人,但是學校計中的網頁空間,也不允許人家嘗試那時剛開始的 CGI programming。然後當時我又不是很想待在家裡,所以並沒有去弄 Hinet 固接(我有個學弟也是唸外文的,他就選擇了後面那條路,同樣也是網路功力大增,變成了 PHP 魔人)。 所以我講了很多「限制因素」,大抵說來,唸文學院的那幾年,我明顯感覺到「數位落差」的存在,這話很老套,但是切身體驗是如此。也就是說許多知識本身,並不是書在那、機器在那就可以學的,要有個「助力」(facilitator)的環境才會快。當然這也有個人質地的因素,我是懶人,又是晚期採用者(late adopter),喜歡等事情條件成熟時才開始投入。簡單地說,個人因素是我決定好好唸我的文學史,然後選擇改變身份當一個「使用者」,不要去理會又有什麼新的程式語言這樣。 我不知道這樣歸類是否有失偏頗,但是我認識的、大學時期電腦變得厲害的人,都有個共通點,那就是他們第一個解決了「連線」的問題,例如搬進有網路的宿舍(通常代表離開台北唸書),或是進入有網路的實驗室或辦公室工作。 問:在 1994 年買筆記型電腦的時候,你就有注意到 Linux? 答:呃,我 1993,1994 年時就大概知道這東西,曾經裝起來一套 Slackware,還有 X-Window。 問:「在 1994 年時,學校計中環境無法讓人嘗試 CGI programming」,你指的像是 Perl 這樣嗎? 答:嗯,我第一個認識寫 Perl 的人是 Autrijus,約是 1997 年時我看他已經相當純熟地使用正規表示式(regular expression)等工具──他接觸 Perl 應該更早──而我對 Perl 的第一印象是:怪符號好多!然後一樣沒有動機去學。 問:所以上了大學後,大環境的改變讓你對電腦的興趣也改變成用使用者的角度繼續去探索? 答:變成使用者的角度就沒有什麼「繼續去探索」的問題了 :p 期中當然也去學了像 HTML 語法(但是不精)之類的東西。 問:然後到了最近又開始玩起新的程式語言這樣? 答:對,雖然差不多是退伍前後,因為朋友的關係開始學 Perl,但是重新開始寫起程式是到了改用(switch)到 Mac 之後的事。 問:可是,你這麼喜歡玩電腦的人,因為大環境的關係讓你不得不改變玩電腦的心態,有什麼想法呢? 答:嗯,我剛剛說過,限制因素跟個人因素都有,個人因素其實也佔了一席之地,我在舊 blog (lukhnos.idv.tw) 上有篇文章講到這事(http://lukhnos.idv.tw/archives/000086.html)。 ◎ 小黑跳船到 Mac 經驗分享 問:在 OSX Kwiki 上看到您之前曾經是小黑(IBM ThinkPad)愛好者,可以說說如何從小黑跳到 Apple 的? 答:退伍後,陪我寫完論文的小黑也老了(2002 年年初買的 X Series),那時就在 PowerBook 跟 ThinkPad T系列(T Series)之間猶豫(我的筆記型電腦一台都用很久的,所以都只考慮頂級的機種)。當然那時候主要考量是,如果繼續用 ThinkPad,要不要換到 Linux 上?我用小黑裝過 VMware 來跑 Linux,不是那麼好玩,可是也深深覺得,Windows 是個很難用的平台,很多時間都浪費在設定和整理系統上。 我覺得我是選到了一個不錯的時機切換到 Apple 的平台,一來 OS X 10.3 夠成熟、再來它是 ready-to-go UNIX,一切過來我就明白為什麼好比說 Perl 程式開發者都在 UNIX 上寫程式,真的有差,Windows 文字命令列(command line)欠缺太多現成工具。 至於那些工具是否全為寫程式而用,我倒覺得不一定,也就是說,我覺得很多電腦上的東西,是介於「純使用」和「純寫程式」之間,這中間有很多過渡地帶,好比說,有人會利用 grep 指令來反查台語白話字辭典,這算不算「寫程式」?很難說,但是這一定算 "hacking",而 "hacking" 就是一種認真「玩」東西的態度,法文講 "bidouiller",比似乎比較接近這種精神(用英文講黑客(hacker)還要跟人解釋這不是好萊塢電影裡被妖魔化的鬼客(cracker)云云)。 總而言之,Windows 並不是個 hacking 的好平台,OS X 比較起來是個好 hacking 的平台,但又不用花時間「要你」hack 它才能讓它跑起來,完全是為我這種懶人設計的。OS X 一裝起來,就有 P3P(Perl、PHP、Python)與 Ruby,再裝 Xcode (Apple OS X 10.3 附的整合開發環境),就可以開始寫 C/C++/Objective-C 的程式,大體上別家 UNIX 有的它都有,所以一裝好 OS X,就直接進 Terminal.app。 除了以上的原因,跳船還有別的理由啦,這個就要講到我的「本行」,Mac 實在是超適合學外語的人使用,因為 (1) 有各種語言的選單,隨時可切換(其他 un*x 也有,但還不是那麼具有彈性);(2) 完全 Unicode 化,幾乎所有應用程式都可以混用語言(例如在 TextEdit 這個程式可以混打中日英德法,自從有 zonble 的 OV 藏文後還可以打藏文 :p)。再說,Mac 上的東西就是美……對文字工作者來說蠻重要的。當然,什麼都好,就是中文輸入法不好,這又可以帶入下一個題目了……。 在這之前先插一句,就是 OS X 使用者的俠義精神,我記得我剛把機器買回來,抱到「北義」(師大夜市附近一家咖啡館的簡稱)的時候,一群人圍上七嘴八舌幫忙裝無線網卡,那種感覺真是不得了!在 IRC #osxchat 頻道上的朋友同時有傳統 Mac 使用者跟晚近開放源碼(open source)社群的質性,因此融合出一種很有趣的文化。 ◎ Open Vanilla 開發過程 問:當初您所以開發 Vanilla 輸入法,只是源自於一個「能在 Mac OS X 上用倚天排列打要選字的傳統注音」的簡單念頭,但是因緣際會下卻發展成了 Open Vanilla(簡稱OV)輸入法框架,並且有許多傑出的開發者如 gugod、zonble、mjhsieh (均為 OV 計畫核心成員)等參與其中,是否符合或是超出了當初的規劃?OV 在這段時間內的順利發展,有什麼原因? 答:呃,說了不要不相信,「香草」是我中斷了寫程式這麼多年後,寫的第一個程式。主要是一開始發現 Mac 上的「傳統」注音沒有倚天排列,非常痛苦,雖然買之前就已經有心理準備,但是還是適應不了,又不喜歡漢音,於是一開始就問 gugod(後來的 OV 核心成員之一,Newzilla 專欄作者):能不能從酷音改?gugod 的評估是可能,但不容易,於是我痛苦地開始看酷音的源碼(source),後來是 zonble 指點說,你知不知道 Apple 有輸入法的範例程式,叫 BasicInputMethod? 總之,當時我完全是拿多年前還殘留的一點記憶,來追蹤(trace)程式碼,幸好 Xcode 還算好上手(雖然手冊,寫得有點,呃……「簡單」),總之大約花了一個禮拜的時間,把 BasicInputMethod 東加加西減減,當時還沒完全弄懂工作原理,但目標是「用最快的方法把注音輸入法加進 BIM 裡面」,這一路就得複習資料結構(已經忘光光)還有 C 的 API 等等。 當然後來才發現作了很多白工啦,現在電腦那~麼進步,很多資料結構都有現成的工具可以用,不必那麼辛苦地用手建,像香草的注音資料表是自己建的,大約二十多kbytes 左右,如果純粹用注音資料表建陣列,大約要 40kbytes。這種「節省」在十年前也許很有意義,現在根本是浪費時間……,不過好處是複習了很多東西,如跑 editor,compiler,debugging……。Autrijus 跟我說:當做練功也不錯啊! 問:感覺妳很自然地就又玩起來了呢,不會因為覺得離開程式寫作這麼久而對編程這件事有所遲疑這樣 :p 答:呃,可以這樣說。遲疑好像倒是沒有。 答:至於香草是怎麼演化的?一開始是 mjhsieh 的一句話(他發了我在 OpenFoundry.org 上收到的第一張待辦事項(ticket)):「能不能做倉頡輸入法?因為 OS X 內建的跟一般習慣的很不一樣。」我那時想想,倉頡跟注音都是查表式的輸入法(不需智慧選字),然後看了 mjhsieh 和 b6s 轉來的資料,似乎 OS X 的倉頡真的頗差勁,於是就又花了一點時間,建了倉頡的資料表(當時的這個階段還在做苦工),然後 gugod 給了很多建議,還教我建 installer package,zonble 則大力贊助了香草的標識(logo)。 「香草倉頡」(從此整個程式改名「香草輸入法」)是 2004 年 8 月底推出的,這個程式出來之後的反應,就完完全全在我意料之外了。我是說,用倚天排列+傳統注音的人少了,所以我知道「香草注音」不會有太特別的反應,這倒還好,但是沒想到香草倉頡馬上就有一堆人下載……而且很快就有一堆回饋,像是 momizi 幫忙測試等,這時 "pair programming" 的好處完全出現,於是香草輸入法一路出到 0.064(不是 0.64)。 但是「重寫」的想法也差不多是程式一出來就有的了,有個名詞叫 "refactor",意思是重新架構你的程式,我不知道這種習慣是不是某種精神潔癖還是怎樣,反正你會發現,很多寫程式的人,寫完一個版本,就會開始想改,然後下一個版本要比上一個完整、簡單、清楚、強大…… etc. 所以那時就開始想重新架構香草,然後看能不能包進更多輸入法。 因為 Autrijus 抱怨說 OS X 上的大易也很苦 :) 站在友情立場,怎麼可以不拔 "code" 相助呢?到了 2004 年 9 月,這段時期花了比較多時間在想架構,一開始一直沒有好的想法,例如 encoding 問題要怎麼處理,還有最重要的「外掛」模組,後來是 gugod 提說,其實像 xcin 也就利用了 UNIX 的 "shared library" 方式達到可外掛模組的功能,autrijus 則提供了 encoding 專家的第一手意見(他是幾個 Perl 中文相關模組的重要作者,所以他對編碼問題的意見一定一針見血),於是做了一些實驗,發現似乎可行,10 月的時候有一次在「北義」喝咖啡,跟 zonble 和 gugod 展示了那時實驗的一些結果,後來某天 gugod 在線上問,「我們在多鬆(師大夜市附近的一家店),你要不要過來,把你上次的輸入法架構給弄一弄?」大家湊在一起後,發現事情可行,然後 gugod 開始把 OS X 版酷音套用到 OpenVanilla 架構下(酷音是招牌的輸入法,因此 gugod 的移植是件大事)。so,這樣的發展當然遠遠超出我的想像。 問:酷音 OS X 是 clkao 還是 gugod 寫的? 答:酷音 OS X 最早是 clkao 移植 libchewing,gugod 接手維護,zonble 後來加入,所以有個很完整的開放源碼譜系關係。 問:在 OV 的網頁上沒看到 "Vanilla" 的由來,可以說明當初取此名稱的由來? 答:因為「香草」是最素的東西,像國外講 "vanilla sex" :p 就是最單純的那種 sex;還有 "plain-vanilla" 這個形容詞就是陽春的,例如 "plain-vanilla mobile phone",就是沒相機、沒彩色、沒 game 可玩的手機。第一版「香草注音」(那時還不叫「香草輸入法」)就是這樣,純為解覺某個單一目的的簡單輸入法。 問:感謝你詳盡地解說…… :D 我只知道香草冰淇淋好吃,呵呵呵。 答:哈哈,我也最愛香草冰淇淋(這也是部分原因)。 問:OV 除了一般常見的輸入法,還有一些特殊的輸入法如 ezbasic、PHP 輸入法等等,可以談談你們是怎麼想到將輸入法框架應用餘這方面的用途?除了「當烤麵包機的控制前端」之外,對於「輸入法可能的玩法」還有沒有其他的想法? 答:大家投入 OpenVanilla,一開始也是想知道 OS X 輸入法的能耐。正如 gugod 所說,他覺得 OV 版的酷音一開始是一種實驗,我們當初碰到了很多意想不到的問題,多半是 OS X 的系統性能造成的,簡單地說,就是碰到很多作業系統設計上的特性或限制,一開始沒能搞懂,因此常常搞當自己的機器,也就是說,OpenVanilla 算是某種「系統性能大測試」。然後 gugod 提供了 makefile 架構,加快了 project 的發展速度,當架構穩定下來後,下一階段就變成「理論可能性的嘗試」,OV 的 ezbasic、簡繁轉換、甚至 PHP 輸入法(OVIMPHP)就是這樣搞出來的,也就是說變成在測試「在這樣的架構下,是否可能完成某事」的理論性問題。 問:以輸入法之名,行系統性能大測試之實?神奇……。 答:呵呵。也就是說,後來 OpenVanilla 變成已經不再是「為了解決實用問題」出發,而變成「可以怎麼架構一個程式,然後反過來利用這個架構來解決實用問題」這樣的一個轉變過程。至少在 IRC #osxchat 頻道的討論中,許多「為 OV 加上某某功能」的討論,其實都或多或少涉及一個程式架構,或是 OS X 軟體開發特性的問題。簡單地說,大家玩 OV,順便練 OS X programming 的功,反之亦然,練到的功再施回 OV 上面。 問:能否和讀者分享一下如何經營一個可以持續發展的開放源碼計畫(以 OV 為例)? 答:說真的,我也沒經營或真的參與過其他的開放源碼計劃,實在不知道能不能以 OV 來外推。 問:但是 OV 應該可以說是一個成功的例子(活躍開發者、持續改進、眾多使用者等等)。 答:嗯,就這兩個測度標準來說,那 OV 應該算是做得不錯的。我覺得其中有很多因素啦,像是本身 OV 要解決的問題很迫切,然後剛好這一群人因機緣聚在一起等。 我覺得很有趣的是,雖然寫程式的目的在解決需要,但樂趣其實來自於過程,像是 pair programming 解決問題,連夜抓蟲(OV 0.6 推出時連累 IRC #osxchat 頻道上眾人不睡覺一起抓蟲,例如 hcchein :p),「實體」的聚會像是去咖啡店聊是非(像討論「到底喝大吉嶺還是喝覆盆子對於寫程式有幫助」這樣的無聊話題);「非實體」的像是 IRC,現在 OV 甚至有香港和大陸的朋友一起參與抓蟲、貢獻新的輸入法資料等,或許這些資料整理後又能貢獻回 Xcin 計畫。 問:如果 OpenFoundry 要推十大專案的話 OV 應該會入選吧 :p 答:OpenFoundry 這個平台也幫了不少忙,提供虛擬主機(file hosting)、版本控制(version control)、代辦事項(issue tracking)這些工具,我想一個好用的開放源碼 開發平台,像 OpenFoundry 這樣,的確有價值。但是最重要的還是人。 問:OV 是重新造一個輪子嗎? 答:算是吧。我曾經想過會不會落入 NIH(Not Invented Here; 不是我發明的不算數)這種問題,NIH 是一種自大的心態,認為只有自己發明的輪子才是好的。但不管怎麼說,OV 有很大部份是來自前一波中文軟體的努力,例如幾乎所有的輸入法資料都是來是 Xcin 計畫、酷音來自酷音團隊;OV 對我來說,是找到一個方法,把這些努力結果呈現在 OS X 上,順便解決自私的需要(倚天排列的注音啦),然後順便也做一些好玩的事(像是 zonble 弄的美美的半透明可換色選字窗等等)。換個方式想,若不是上述這些引用的東西都是開放源碼,也就不可能有 OV,然後我大概就會早早把 Mac 賣掉了,因為沒有好用的中文輸入法,對文字工作者來說就等於是沒有用了。 問:除了 OV 的開發外,您是否計畫開發其他領域的 Mac 程式(比如說解決一些亂碼的問題)? 答:短期沒有 :) 現在除了把 OV 維護好之外,我要暫時乖乖回去當「文字」工作者啦,快樂地用倚天排列的注音輸入法敲字。不過只要有夠有趣的課題出現,說不定哪天又會手癢。 問:可否請您談談在 Mac 上開發開放源碼專案的樂趣與辛苦,並且給想要在 Mac 上開發程式的朋友一些建議? 答:Apple 並沒有真的很重視輸入法這件事,不是不支持,是不聞不問,什麼都沒有,中文市場像是不存在一樣。MS 起碼過去幾年算很認真地在改進輸入法(雖然 Win XP 之後又弄了一些怪東西出來,反而打壞原有招牌)。OV 的話,樂趣多於辛苦的地方,應該說「不知道有哪個地方叫辛苦」的。 問:這可能牽涉到 Mac 社群跟 Apple 公司如何互動的,台灣過往的 Mac 社群是否有跟 Apple 台灣反應過這件事? 答:嗯... 據說這是長久歷史因素了,可能要問 mjhsieh,他是超資深 Mac user,本地 Apple 社群與 Apple Taiwan 的恩怨要問他。 我是覺得 Apple 對使用者的重視不夠啦,而且沒有從技術面去解決使用者需要,當然也可能是因為缺乏溝通管道,如果台灣有多一點使用者成為 Apple 開發者(developer),加入通信論壇(mailing list)(我還沒 :p),參與討論,提高能見度,會好很多,就如同積極參與 FreeBSD 社群一樣,當然,不完全相同。Apple 是商業公司,他們總也該對本地使用者做做 survey,台灣並不是個小市場(嚴格說來),轉換者(switcher)的潛力很大,Apple 號稱「開放源碼力量(open source power)」,既然公司模式走向「向開放源碼社群取用資源」,那麼至少在技術面上,尤其在中文問題上,也應該改變。 其實 Apple 在其他方面倒的確跟過去的 Apple 不一樣了,只是中文這個層面還要努力,像是隨機附 Xcode(雖然不是一開始就裝好)就很聰明,讓 OS X 完全變成極適合軟體開發的平台,OS X 上的軟體數量暴增,一方面是許多 un*x 的程式都 port 到 Mac 上來,Mac 原生的程式也變多了,採用 un*x base(un*x base)是一個原因、Mac 的 Cocoa framework 是原生程式變多的另一個原因。 問:我想訪問到這裡差不多了...謝謝你今天接受訪問 :D 答:再會囉 :) 在大概兩個小時的 IRC 訪問中,lukhnos 可說是非常捧場,分享了相當多關於自己這幾年來跟電腦使用與程式開發相關的心得感想(另一方面是兩個小時內打了六千多字,lukhnos 打字的速度真是超快!),而且從訪談中就可以得知 lukhnos 的深厚想法與幽默的談吐,是一次連筆者都覺得愉快的訪談(尤其是知道 "bidouiller" 的意思、以及輸入法計畫取名 "Vanilla" 的由來)。在農曆新春來臨,新的一年即將開始,祝 lukhnos 可以多撰寫或翻譯幾篇膾炙人口的佳作,一鳴驚人,雞年行大運!
相簿設定
標籤設定
相簿狀態