2012年9月23日 星期日

鎚子與釘子

做輸入法這種工作最基本、也最麻煩的地方就在於相容性,當你開始做了輸入法之後,弄個一個線上討論區,你會看到最多的問題、也是讓你最為無力的問題,也就是相容性。 就像你做個網站,先不管網站上的內容如何功能如何,你會遇到的最基本的問題是怎樣在 Internet Explorer、Firefox、Safari、Opera 等不同瀏覽器中,都可以看到相同的頁面;而當你開始做一套輸入法,也先不要說輸入法的功能如何,第一個要求就是怎樣可以在各式各樣的應用程式中-辦公軟體、通訊軟體、美工軟體、線上遊戲,都可以打出字,都可以正確出現選字窗等輸入法所需要的使用介面,還有,因為輸入法基本上屬於每個應用程式都會載入的外掛程式,你也不能夠讓各個應用程式在載入了你這個輸入法外掛之後因此當機。 如果你想要靠單打獨鬥或是光是仰仗社群,光是相容性這份本分,就不知道可以消磨掉多少熱情。文書或是辦公軟體,如果是使用系統的文字元件,或是規規矩矩的按照系統規格實作,大多沒有問題,但是,你在 2008 年還在做輸入法,你就會發現,許多人的需求,並不是在辦公軟體中使用輸入法,或是用在所謂生產力的用途上,而輸入法最大的相容性問題,大多來自於-線上遊戲。 以 Windows 作業系統來說,微軟對於 DirectX 應用程式如何支援輸入法,可以說非常自由-或是放任。這一套遊戲可以因為需要,所以完全不支援輸入法,另外一套遊戲可以允許輸入法使用原本的介面,再來一套遊戲則是為了整個遊戲的外觀與使用體驗,所以輸入法就算可以輸入,但是輸入法應該要關閉自己的介面元件,讓遊戲自己來幫你繪製輸入介面與選字介面(例如魔獸世界、楓之谷、跑跑卡丁車等),又一套遊戲則是雖然要求輸入法自己提供介面,但是遊戲自己在全螢幕模式下把自己放在所有視窗的最上層,甚至蓋過輸入法的介面…每一套遊戲之間,對於輸入法的支援,都可以完全不同。有的時候線上遊戲還會把不認識的輸入法當成是非法外掛,有的時候,嗯,是的,輸入法會把遊戲搞當。 因為相容性是輸入法的本分,需要解決相容性的軟體又遠多於其他,所以在整個團隊中,測試工作便顯得格外吃重-其實可以這麼說,以輸入法專案而言,測試人員的角色比開發者更重要。 如果你是真的要嚴肅而認真的做輸入法,你便必須要天天做這樣的事:功能寫到一定程度時,測試人員把新的測試版本輸入法裝起來,接下來逐一把常見的生產力工具打開,把輸入法功能全部用過一次,逐一關掉,再來,測試人員的電腦上面需要安裝各種會有玩家詢問相容性的線上遊戲,而這些線上遊戲的數目,相當於前述各種生產力工具的總和(試想:在 PTT BBS上的線上遊戲討論看板就有70個,巴哈姆特 BBS 上則有將近120個),每套遊戲動輒數 Giga 大小,而線上遊戲廠商在你裝了這個動輒數 Giga 的遊戲後,通常還不能夠讓你直接進入遊戲測試,還會要求你繼續下載數百 Mega、或是又是上 Giga 的 patch,你大概會花上個幾個小時下載,然後進去打個五分鐘的字。最棒的是,在測試線上遊戲的輸入法相容性時,你完全沒有辦法使用任何自動測試工具-你也知道在線上遊戲中跑自動測試是什麼意思。 輸入法相容性工作,又往往是這邊堵起來、另外一邊又漏水,往往是你針對某套軟體做了修正,這個修正又會造成另外一套軟體裡頭的問題,所以,每做一次修正,就必須所有測試項目全部從頭操作一次,才能夠真的比較確保輸入法沒有問題。而更讓人氣餒的是,有些軟體就是有問題,就是不管你怎麼修,就是不相容,或是當你把問題修正之後,這款軟體就改版了,但是就還是不斷會有人詢問-包括就算所有人都知道這一套不相容的軟體本身也在 beta 當中,你現在去改自己的程式,只會造成對方下一個 beta 版本,又會不相容,但是,就是會有人希望你有哪一個 beta 版本不相容,就應該全部因此多出一個修改版本。 再者就是你做自由軟體的價值問題。 你看到的是,一群人為了線上遊戲每個月去購買點數卡、去競標虛擬寶物,在詢問信件中,開頭是這樣寫,「感謝您的無私奉獻」,雖然是相當禮貌,但是為了這樣禮貌的感謝,是不是就值得花幾個小時下載你根本沒興趣玩的遊戲?是不是就值得幫沒有按照輸入法規格製作程式的遊戲廠商擦屁股?花上這樣的力氣對於你所投入的專案又有多少幫助? 而你又要怎樣與線上遊戲的玩家說所謂的自由軟體精神呢?這樣嗎?-「這是一個開放的專案,我們非常感謝您的寶貴意見,但是我們更期待的是您的熱心參與;對於您所回寶的線上遊戲,相信我們絕對不會比閣下更為熟悉,在我們的網站上可以看到我們所有的程式碼,如果閣下可以提供本軟體的相容性修正,我們一定會儘快放入下一個修正版本當中。」別鬧了,人家關心的才不是什麼自由,就是免費而已。 Dil Kya Kare?你該怎麼辦?你可以有幾種選擇,一是繼續寫你該寫的程式,然後繼續不斷接受這樣的騷擾。二是,但是反正你參與這個專案的時間已經長到足夠寫到個人 portfolio 上,大不了就拍拍屁股一走了之,當然嘛,這種專案本來就是你情我願、總是會人有來來去去的,不過你也可以做人做得更絕一點,你明明知道輸入法這種軟體天生就是每分每秒都可能與任何一套軟體不相容,但是你不管了,有問題都是團隊裡頭的其他人做爛了,但是就算被其他人做爛了,還是要吹噓一下,幾年前做過怎樣的調整,所以就算現在多麼不相容,軟體效能還是非常好喔-雖然這種吹噓怎麼看都是廢話,你用幾年前的技術、工具與方法寫出來的東西,在今天的電腦上當然跑得都很快。 再來一種可能是-你有沒有辦法將這種老實說沒有人期待軟體需要自由、卻又根本妨礙你手上的自由軟體發展的需求,這種完全就是在收拾爛攤子的工作,做一定的切割? 竊以為全台灣最應該自己出來做輸入法、或是支持輸入法開發的,實在莫過於華義或是遊戲橘子這些公司,你可以看到現在所有對於輸入法的需求,實在就是這些公司造的孽。約莫兩個月前有這麼個線上遊戲的電視廣告:「不要放棄試玩的機會,公測的時候,台北準備好了、高雄準備好了…安裝光碟準備好了、獎金準備好了、光纖與伺服器都準備好了!」什麼都準備好,你就是不知道,到底輸入法的支援有沒有準備好。 而實際發生的狀況相信很多人都已經知道了。某搜尋引擎以及入口網站業者去年時與 OpenVanilla 團隊的成員洽詢,之後我們也便著手與客戶合作,製作第二個以 OpenVanilla 為基礎的客製化版本,然後在實際計畫釋出日期的前一個月,還在測試中的軟體版本與網站就提前曝光…。 我們這位客戶之所以做這套產品的市場策略究竟為何,我們沒有辦法代替客戶發言,我們只能就 OpenVanilla 專案的立場發言:在合作過程中,我們確實感受到,我們的客戶極其重視這套產品與其他軟體、特別是線上遊戲的相容性(…雖然一開始在網路上散佈的測試版本是還有很多問題還沒修完、功能也還沒做完的版本),並投入了相當的資源解決相容性問題-而這正是 OpenVanilla 專案最需要解決的困境、要擺脫的泥沼。甚至在使用介面的設計上,也表現出了這一點-這個最近要推出第一版輸入法,選字介面之所以要做成黑色直式的,就是因為在魔獸世界、楓之谷、卡丁車等遊戲中,遊戲自己繪製的介面,就是黑色直式的。 客戶的 QA 部門「天天玩遊戲」,每天不斷重複前述負擔大到可怕的測試工作,找出許許多多在你腦袋裡從來沒有想過的問題-甚至包括,在 Windows 作業系統中,如果您使用 12pt 或是 10pt 的新細明體,微軟將「敪」(U+656A)與「敠」(U+6560)兩個不同的罕用字,在字體中造成同一個字(當然,這是微軟的問題)。然後,客戶撥了經費,買下 OpenVanilla 團隊的時間,除了製作客戶想要的功能外,就是逐一解決各個已經彙整完畢、可以依照一定步驟重現的問題,嗯,就當做是 job 在做。而各種會打斷開發者的相容性問題回報,也有客服人員可以幫忙(意思就是,我也不會也不能在這裡,就這個產品,代為回答我們這位客戶的客服人員應該解決與回答的問題)。 想拿非商業的鎚子去搥應該用商業的鎚子去搥的釘子,無非是「爽到你艱苦到我」,而且愈來愈離開 OpenVanilla 架構在幾年前發想時的初衷:OpenVanilla 的最初目的在於提出一套通用的架構,建立一套可以讓開發者擺脫平台相依問題,快速發展各種輸入法的工具,而 OpenVanilla 專案過去幾年做的事情,除了將諸多既有的中文輸入法移植到 Mac OS X 平台上,真的有讓文字輸入這件事情比較往前走的,還是在於開發出了新的台語羅馬白話字輸入、Unicode 藏文鍵盤與世界語鍵盤等。相容性問題對於輸入法而言固然重要,但是你手上這個自由軟體專案就只停留在能不能讓人組公會打怪、或是交易虛擬寶物,只會讓你錯過許多更重要的事情。 去年緬甸蕃紅花革命前後,有位緬甸青年朋友寫了一封典雅的英文信件給 OpenVanilla 團隊(收到信的時候,感到相當意外,老實說,平常從來沒有人會用上 noble 這類的字眼稱呼自己)。內容是,他正在從事緬甸語文輸入軟體的工作,而 OpenVanilla 跨平台的特性,該是可以有相當的幫助,不知道 OpenVanilla 是否有英文手冊以及 API 文件-你也知道,唉,沒有;而 OpenVanilla 團隊也不可能自己寫出一套緬甸文輸入法。之後就與這位朋友失去聯絡,你也不知道在緬甸風災之後,這位朋友的近況又是如何。 既然有人樂於討好線上遊戲玩家的輸入需求,OpenVanilla 團隊也樂於解套。而 OpenVanilla 專案接下來的發展方向會是:將合作過程中所發展出的改進,回饋到 OpenVanilla 的核心架構,在輸入法模組方面,重心不再會是自行發展、維護一堆模組,或許也會停止一些不應該繼續支援的模組,而是會投入更多心力,關心怎樣可以讓更多人更輕易的發展輸入法,照顧到更多到了 2008 年還沒被顧及的語言輸入需求,首先要開始的,就是前述的英文(不可否認,英文還是這年頭真正的世界語)文件工作。而之後的 OpenVanilla 釋出套件,也會與過去的發佈方式有所不同,你會看到的不會是一套像是輸入法產品的東西,而會像是一套剛裝好的新版 apache,陽春,但是更為穩定與強大,更具有新的可能。

沒有留言:

張貼留言