回到首頁過去文章最新消息FAQ相關討論 | 關於我們

Mac Open Vanilla 專案核心成員 lukhnos 專訪 (下)


tumi/文

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 的倉頡真的頗差勁,於是就又花了一點時間,建了倉頡的資料表(當f42;的這個階段還在做苦工),然後 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 後來加入,所以有個很完整的開放源碼譜系關係。


    >> : Page 2 >>>