答《第一财经周刊》记者问
上週《第一財經週刊》記者來信垂詢 Rime 商業化的可能及技術特色。 我心說好久沒有向各位彙報了,於是就這道題分享一些想法。
談商業化的可能¶
浩榕來信問,Rime 是否有商業化的打算。
簡單地說,目前沒有商業化的打算。
原因,一是 Rime 的開源許可證是 GPL,對商業應用有較大限制。 二是目前輸入法軟件沒有很好的盈利方式。 三是作爲 Rime 主要開發者的我,目前由於工作上的原因,不便將其作商業推廣。
不可否認,商業化運營是幫助產品獲得更大成功的有效手段。 但考慮到 Rime 本身的特點及其自由軟件基因,我認爲目前更好的方向是提高開源的水平,讓更多的開發者更容易地參與進來。 Rime 始料不及地受到小衆用戶歡迎,其中不乏對輸入法興趣濃厚、甚至同樣有意願開發輸入法的朋友。
我相信,只要努力,Rime 未來可以由開源社區更好地運作。
另外,今後隨着程序框架的逐步完善,以 GPL 許可發佈的內容可以侷限爲部分組件的代碼,而令 Rime 的主要框架部分採用更寬鬆的開源許可證。 甚至,如果有足夠的人力,可以徹底替換掉遵照 GPL 發佈的第三方程序庫。
Rime 的定位¶
創作 Rime 的初衷是爲輸入法愛好者做一款功能全面、容易定製的輸入法平臺。
製作一款新的輸入法,從設計編碼方案、編碼到開發程序、發佈軟件,過程十分漫長和艱辛。 輸入法玩家的理想是,生出新的創意後,用較少的努力即可借助 Rime 將想法付諸實踐,並快速作出調整和改進。 爲此,一些輸入法開發者將其程序做成通用的輸入法平臺軟件。輸入法設計者只須提供碼表,即可完成創作。
然而,隨着智能拼音輸入法的流行,按碼表出字的輸入法平臺已不能滿足思路更開闊、對用戶體驗要求更高的玩家。 比方說,我的一些音韻學和方言圈子裏的朋友,以前曾用碼表平臺製作方言拼音輸入法,因爲缺少智能組句等特性,效果比智能拼音輸入法差了不少。
爲了設計更智能、對用戶更友好的輸入法,輸入法平臺也需要引入智能輸入的算法,並將其通用化。 我考察了一些開源的智能拼音/注音輸入法,如 SunPinyin、ibus-pinyin、新酷音等, 發現這些具備現代智能算法的程序中,很多設計是專門針對拼音、注音而作,採用一套新的編碼,必須對程序做相應的修改。這對於輸入法作者而言門坎較高。
爲了不重複發明車輪,就做一部差異化的輸入法軟件吧。 不是刻意求不同,而是在遵循輸入法基本原理的基礎上,探索新的技術實現。
其他輸入法着重之處,多複製一遍完全是浪費。 必要的功能 Rime 取最簡易、實效的作法,只當練練技術。 重點不是把效果做到最好,而是要使代碼儘量簡練、清晰易讀。對開源項目來說這比程序功能強大或性能強悍更重要。
另一方面,一定有某些技術點前人未曾嘗試過、卻可能因爲小小的改變而產生新的有趣玩法。 有心人若是觀察主流的商業輸入法,會發現這些年不斷加入很多貼心的小功能。 我願輸入法程序能以自身的彈性,促進這種發明和改進。
近況¶
自從 BYVoid 同學在博客上爲 Rime 做了宣傳,Rime 受到越來越多朋友關注和鼓勵。 有時我懷疑這是錯覺。在我眼中 Rime 還不能算是一款成熟的產品。 很多功能採取了最簡的設計,不完全是追求簡約的風格,也是爲了降低開發成本,優先開發急缺的功能。 總之,由自娛自樂、自給自足的田園式開發,變爲很大程度上由用戶需求驅動了。
Rime 的用家,一部分因爲是喜歡簡單工具而選擇 Rime。 一部小衆的軟件作品,能成爲用戶日常使用的首選工具,實在是不小的考驗。
因爲 Rime 最初的定位是做一款智能輸入法平臺,提供給輸入方案設計者做二次開發用,並沒有打算直接面向最終用戶。 但爲了讓用戶能直觀地體驗平臺提供的功能,也爲給輸入方案設計者演示輸入方案的作法,而製作了預設的《朙月拼音》、《地球拼音》等幾款輸入方案。 對比主流拼音輸入法複雜精密的語言模型,Rime 還是玩具級別的,有很大優化空間。 不料想,預設的拼音輸入方案,效果還比較受用戶認可。
另一部分用家,是輸入法愛好者。無論原本就對此道癡迷,或是因 Rime 而生發靈感,感謝你們爲 Rime 創造了新的、前所未有的用(玩)法。
也有技術好的同學,熱心地爲 Rime 貢獻代碼和數據。 因此,雖然近期我能投入到 Rime 上的時間少了一些,項目的開發還在不斷推進。
苦於核心算法庫(librime),本身比較複雜,編譯依賴較多,加上目前文檔不全,還不太容易上手。 我打算在完成去年設定的新功能開發任務之後,把主要精力用在完善框架、文檔和示例上面。
開發任務設定 (to rime-devel)¶
-
同時使用多個翻譯器(五筆、拼音混打時,使拼音支持智能語句輸入) 已經實現多個翻譯器並行工作,但還有以下子問題要解決,纔能保證效果:
- 優化來自不同詞典的候選排序
- 反查以 filter 實現(配合其他翻譯器,取代 reverse_lookup_translator)
- 翻譯器支持設定輸入碼前綴、後綴(以前綴開始輸入特定種類的編碼)
-
利用多份碼表生成詞典(擴充碼表) 實現方案已確定,先做了一些必要的代碼重構
-
碼表支持詞組編碼規則(自動造詞) 因爲難以在一個版本週期內完成,已經擱置了很久
境界¶
我認爲「相忘」是輸入法的最高境界。 好的輸入法,會乖到讓用戶忘記他的存在,直到手邊忽然沒有了他。
就這樣在閒暇時間,做一個有靈氣、不張揚的軟件,寫代碼的(ㄎㄨˇ ㄅㄧˉ)人生也多了些趣味。