#osxchat blog

2004/11/15

OpenVanilla插曲

作者: lukhnos

嗯,其實對我來說,繼續開發OpenVanilla,完成大易模組只是目的之一。

最初在釋出「香草注音」和「香草倉頡」後,Autrijus問我:那大易有沒有可能做?我知道他是重度大易使用者,同樣也用三鍵,但是他喜歡用 '[] 等選字鍵,他自己在FreeBSD上的dayi3.cin也是配合自己需要patch過的。

如果當時照「香草倉頡」的模式,弄一套大易輸入法的模組,然後很努力地(意思是不管會把原始碼搞得多亂)再多塞一個輸入法到香草裡,技術上絕對是做得到的。

但是這樣做就太不漂亮了。

本來,我就一直想找時間,把Apple的BasicInputMethod/Text service弄熟一點,然後「香草」到了0.06版時,已經有某一個單一模組,長成了1311行的大怪物(vanillaeventhandler.cpp)。這樣的code要人閱讀,簡直是不可能的。

我是這樣覺得,所謂open source,就是程式要有自己的生命。每個人可以從程式碼中改出自己想要的功能,甚至另起爐灶玩一局新的。我自己是這個模式的受益者,如果沒有「酷音」的公開原始碼、xcin的開放資料、Apple的不要錢的Xcode跟BasicInputMethod,我根本不可能解決我的「特殊」需要(使用倚天排列的傳統注音輸入法)。那麼,我說不定老早就把花了很多錢買來的PowerBook賣掉了。

既然要做新版,就應該從已經學到的經驗出發,重新設計一套新的架構。理想上,是希望能設計出一套簡單、清楚,可以讓更多人參與的框架。OpenVanilla就是這樣,和b6s, gugod, autrijus經過許多討論,漸漸形成的架構。然後某一天,和gugod, zonble碰頭,一邊聊天一邊寫code,突然發現OpenVanilla的幾個重要模組,差不多已經完成了。我在想,「好吧,那來寫個輸入法模組測試一下,看看這個架構是不是真的可行。」寫什麼輸入法模組好呢?我第一個想到的,當然還是Autrijus的需要。

(另外一方面,gugod也動作超快,同時開始了「酷音」核心程式庫的C++化工作,「OV酷音」幾乎與「OV大易」同時推出測試版本,這也都強化了我們對OV架構的信心。)

但是就像我說的,這個因為偷懶而用了Cocoa/Objective-C++、在晚上一邊喝茶一邊寫出來的「大易模組」,其實是個泛用的xcin .cin解譯器。我們試過了倉頡、行列(當然還有某個很重要的輸入法),發現功能上大致齊備──當然,套用gugod的說法「90%的code寫完時,表示還有90%的工作待完成」。但這的確證實了OpenVanilla的架構是可行的,也開始實現了最早設計OV的初衷:讓寫輸入法的人能輕鬆撰寫輸入法模組,而完全不用在乎OS X(或任何作業系統、UI)相關的細節。簡單、清楚、無平台相依性、只要有基礎的C++能力就可以參與──這一直是我希望做到的。雖然在實作上一定會有要克服的地方,而任何架構一旦長大,元件數量也會迅速擴張,但這個bottom line是我一直希望堅持住的。

當然,自己生的孩子,怎麼看都順眼。然而輸入法畢竟是大家每天要用的東西,輸入法使用者的切身經驗才是最重要的。我從觀察「酷音」的修訂歷程,以及我自己自「香草倉頡」推出後所陸續接到的回應,才發現原來還有那麼多細節是我沒注要的地方,那麼多不同的使用經驗和需求。

而這其實也是我蠻希望OpenVanilla能早日成熟,並且有完整的文件說明的原因:我覺得,像輸入法這麼個人化、這麼切身的東西,還是應該要能提出一套開放、易於自訂、易於修改、易於「量身訂作」的架構,好讓「輸入法」能配合使用者的需要,而不是讓使用者配合「輸入法」來改變習慣。

所以,「大易模組」測試版的釋出只是開始的開始。後面還有很多很多細節的工作要做,要追上。能夠真的做到什麼,我還不知道。但過程當中學到很多東西,是貨真價實的。而且,跟大家一起工作、討論、搞笑、吐苦水的感覺也挺好。

繼續努力。

標籤: , ,

0 篇留言:

張貼留言

? 回前頁