2007年3月31日 星期六

遇上OpenMoko

週五晚上當我正在tune某個裝置時,收到一則訊息,提及與OpenMoko創辦人Sean Moss-Pultz聚餐的機會,於是週六就邀約Jollen、Mat,以及FourDollars一同前往。關於OpenMoko的報導不少,不過寫得最生動的大概就是Jollen兄的blog:

同時也是FIC (大眾電腦集團) Product Manager的Sean Moss-Pultz,得與同仁面對內外不同的意見,對於這個略有年紀的企業來說,實在是種挑戰。而我有幸在這面對面的對話中,讓原本在我心中的疑惑,透過詳盡的闡述與互動,逐漸獲得解答。其實可參閱mailing-list上的討論"New site about open mobiles: ideas and suggestions",這可搭配OpenMoko於FOSDEM 2007的演講:"OpenMoko",在台灣大學做了一份錄影存檔:"OpenMoko_speech_FOSDEM2007_video.avi" (342Mb)。

OpenMoko作為開放原始碼的手機,有許多堅持,首先就是強調kernel-space的部份必須依據Linux kernel的授權方式,採用GPLv2,這無可避免會造成尋求硬體供應商的困難,但開發團隊正試圖克服。再來就是依據社群需求去制定產品規格,三月底的GTA001就是在初步雛型發表後,廣泛接受各方意見,逐步調整的設計,其SVN版本控制系統也可見到對應的軟體建設。依據wiki指出,主要的軟體項目有:
  • boot loader - u-boot
  • kernel - Linux kernel
  • gsmd - 管理GSM modem的GSM背景程式
  • gpsd - AGPS (Assisted GPS) 背景程式
  • OpenMoko - The OpenMoko distribution
其中OpenMoko distribution又分成若干application與library,而UI的架構部份主要OpenedHand協助開發,後者協助Nokia成功推出Nokia 770系列的產品,而在OpenMoko現在的實做也看出高水準的表現,其LCD panel大膽採用VGA 640x480解析度,顯示頗為細緻,但這也衍生對於多國語文的技術挑戰:輸出與輸入法的支援。

過去顯示的解析度小,所以可以直接用點陣字或者所謂的"pre-rendered font",但是一旦解析度提昇時,就不可能只用兩三套固定尺寸的字體來滿足,勢必需要TrueType的向量字型,不過,這對於這類手持式裝置來說,不僅佔用大量的儲存空間,還需要複雜的運算,也得消耗寶貴的記憶體空間,長期來說,頻繁的儲存空間存取,將可能降低使用年限。稍早於「紀錄:可攜式造字引擎專利釋放暨成果發表會」特別強調的技術困境,既然剎那搜尋工坊 (前身為易符智慧科技)已相當有誠意地釋放專利,並提供社群相關的自由軟體實做與部件字庫,這就是一個極佳的契機,OrzLab的成員在參與自由軟體開發的過程中,奠定對於多國語文處理的能力,所以技術上的分析與實做也已經展開,OpenMoko可說是極佳的技術展現平台,希望近期即可展現這部份的成果。

當然,這次的會晤有尚有許多值得一書的討論,就留在日後詳談了,我也從這個困難度極高、周旋於理想與現實考驗的OpenMoko計畫中,獲得莫大的鼓舞,也希望OrzLab能秉持這些精神,為台灣的硬體創造出更大的價值。

2007年3月20日 星期二

UCIMF正式成為OrzLab專案項目

日前Mat完成了OrzLab的paper work,自此,UCIMF正式成為OrzLab的專案項目之一。UCIMF是個創新的計畫,引入IIIMF與OpenVanilla輸入法架構 (未來會有SCIM) 的終端機輸入環境,但不受限於輸入法,事實上,在開發的過程中,已經補足Unicode輸出顯示能力、視窗管理,以及多種字型描繪機制。以下是UCIMF的授權宣告:

/*
* UCIMF - Unicode Console InputMethod Framework
*
* Copyright (c) 2006-2007 Open RazzmatazZ Laboratory (OrzLab)
* Maintained by Chun-Yu Lee (Mat)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*/
隨著資訊交換的多元化,在我們的觀察,嵌入式系統的多國語文支援有提昇的趨勢,又因為嵌入系統不僅得考慮到效能,也得將成本與穩定性列入考量,所以往往受制於有限的軟體建設。UCIMF則帶來一個新的途徑,得以在低成本需求的Embedded Linux/BSD上,提供豐富的多國語文處理能力,涵蓋顯示、輸入法,未來也會有印表的支援,更重要的是,符合Unicode標準,所以可消除許多相容性議題。

另外,考量到UCIMF應用的多元性,其IMF (Input Method Framework) 的介面部份採用BSD License釋出,這意謂著其上的輸入法引擎不僅可抽換,也可採用非GPL授權,去除商業應用的困擾。

紀錄:可攜式造字引擎專利釋放暨成果發表會

稍早提及可攜式造字引擎專利釋放暨成果發表會,日前已在中研院資訊所圓滿落幕,雖然許多技術性與實用性的議題尚待克服,但剎那搜尋工坊這項釋放專利的創舉,可望驅使漢字與資訊的整合邁入新的契機。OrzLab也順利展示內建動態組字技術的Linux mobile phone概念機,未來將逐步釋出其原始程式碼。

議程方面,自下午三點,由剎那搜尋工坊 (前身為易符智慧科技) 的大家長陳昌江先生在「專利釋放現場公告」揭露「可攜式造字引擎專利公眾授權條款書」,並有存證信函與拍照留影,為漢字資訊處理界劃下新的一頁,自此,此類動態組字技術將不再受限於特定單位,而能以自由軟體之形式,廣泛流通於新的應用中,感謝與會的貴賓與我們見證這一刻。葉健欣先生 (yap,前朱邦復實驗室成員) 則在「組字研究的簡史」給予清晰的介紹,提及何以漢字系統會面臨窘境、古文訓詁的難題、過去幾十年內相關漢字技術的變遷,以及從易符智慧科技剎那搜尋工坊所面臨的挑戰與技術應用的轉變。

張正一 (魔法設計師) 隨後給予精彩的「組字標準與觀念解說」議程,先由昔日「萬碼奔騰」的時代點題,雖然今日我們已清楚知曉Unicode標準的重要性,但實務應用上難免有所不足,其中以漢字缺字為最,為此,Unicode 3.0以降, 引入新的IDS與IDC機制 (Ideographic Description Sequence/Character)剎那搜尋工坊則以此為基礎並整合以部件為基礎的動態組字技術,張正一先生則率先撰寫符合自由軟體規範的組字示範程式,在議程中發表與展示,藉此為與會的貴賓建立概念。

由於專利釋放之舉也需要配套的自由軟體社群支援,才得以彰顯價值,所以本會也邀請到來自中研院資訊所的林誠夏與胡崇偉 (marr) 探討授權與專案開發的須知,詳見「公眾授權條款簡介」與「開源計畫要如何參與」。最後是OrzLab的議程「應用動態組字於手持式裝置」,首先分析手機一類的移動裝置在成本與多國語文上面臨的難題,再者是來自裝置端與後端的訊息交換議題,再深入探究系統設計,可發現以往的點陣字系統是一大衝擊,不僅增加成本也造成潛在的裝置壽命問題,同時輸出與輸入系統彼此是獨立的。OrzLab引入全向量繪圖系統,試圖克服上述技術難題,目前已經有高效能且低儲存需求的ASCII字型引擎,正銜接Unicode IDS需求,在議程尾聲,展示了一款內建動態組字技術的Linux mobile phone概念機,得以在QCIF解析度 (176x220) 迅速呈現全螢幕漢字輸出。

由於與會賢達來自古文研究、電子產業、出版業、佛經文化、文書處理等領域,所以議程後的討論時間中,激盪了深入的技術與人文性思考。首先是漢書軟體作者施得勝先生提問:「動態組字美觀度可否精進?」yap的回應是:

  • 組字七萬字約佔1MB ,而 TTF 要40~50MB 。美觀是用空間和時間來換取的
  • 常用字只有兩三千字,這些字沒有必要動態組出來,使用既有的方式即可
  • 動態組字使用的場合為呈現系統不存在的字,此時,組字再醜,也遠比空白或亂碼來得好
另一則是關於自由軟體授權的議題,這由中研院資訊所的葛冬梅小姐給予簡要的分析。臺灣師範大學國文系亓婷婷教授則提出美觀度、手寫辨識與組字的整合等問題,就動態組字本質來說,形同一個可提供無窮字形的字型檔,與輸入法沒有關連,亦即可沿用任何既有的輸入法,來輸入構形部件,當然,對於手寫辨識來說,將會有潛在的優勢,因為已經預先作部件的分析。

東海大學資管系林正偉教授
提出澄清專利涵蓋的議題,陳昌江先生則重申專利字號與適用範圍,以茲與眾多漢字學者研究區別,這也引發關於動態組字需要唯一或標準表示的討論,以「好」這個中文字為例,其部件為左邊的「女」與「子」,再行左右組合,但對複雜的字來說,構成方式不唯一,Unicode IDS只是探究其表示法,該如何確認有一致的交換性?多方討論的結果來看,剎那搜尋工坊表示會另行規範,但不在本研討會的議程中。最後是Mat (UCIMF作者) 就實務上詢問動態組字能否與Unicode相容,基本上只要依據Unicode IDS作對應,即可符合相容性,這也意味著,OrzLab未來可能從Unicode console/terminal與FreeType整合的方式,切入動態組字技術的應用。

會後就是BoF時間,也激盪了許多想法,相關的自由軟體實做與部件字庫也會在近日釋出,所以,儘管三十年前謝清俊教授等人就提出構字式的具體研究,但真正能夠讓成果累積並且跨入電腦以外的項目,這是個起點,但我們終於跨出了。

相關資訊:

2007年3月15日 星期四

Unicode版のTeX

TeX 是一套重量級的排版軟體,目前在國際流通的論文,大半是以TeX 所製成,其文件品質有目共睹。XeTeX 是Unicode版的TeX,具有功能特色如下:

使用FreeType和Fontconfig的方式讀取系統字型,直接支援True Type和OpenType字型,不用再作繁複的設定。引入ImageMagick支援,可直接套用JPG、PNG、BMP的圖檔,大幅增加引圖的彈性。語法上,繼承TeX和LaTeX的語法,而不再用\usepackage形式上來處理CJK文字,文件相容性高。
目前XeTeX的使用環境以Mac為主,不過目前已有Linux和Windows的支援。圖上所顯示的正是在Gentoo Linux上所製成文件。

視覺化系統模擬與偵錯

稍早撰寫短文「透過 User-Mode-Linux 來學習核心設計」(Part I / Part II),隨後在「Intel/Marvell PXA27x的系統模擬」提出OrzLab所實做系統層面的模擬環境 (以qemu計畫的qemu-system-arm為基礎),暫定名稱為PXAemu,這些基礎建設對於嵌入式系統開發都有其價值,諸如system prototype、進階分析,以及快速軟體開發,未來我們會增加多種硬體平台的模擬。除了系統模擬器外,視覺化的呈現與偵錯能力也相當重要,在今年一月份,已經成功整合User-Mode LinuxInsight/GDB,大略的呈現如下圖:
當時開發的平台是IA32,引入User-Mode Linux的優點是可快速分析與平台無關的Linux kernel機制,諸如記憶體管理、排程,以及網路堆疊部份。另外,上週於台中一中舉辦的「深入淺出 Hello World 」系列演講第三場,已經公開展示PXAemu與gdb整合的操作,可相當便利的進行分析與偵錯,其運作畫面如下:
以上展示透過Remote GDB連線,設定中斷點於sys_execve函式,這將會觸發於首次由kernel-mode切入user-mode的時機,也就是/sbin/init程序執行之時,當然,gdb強大的命令與功能可以輔助來對kernel作更深入的追蹤,必要時也可改變其執行時期的行為,稍後我將會試著整合PXAemu與Insight/GDB。因為Insight/GDB內建的Tcl/Tk版本老舊,在Linux下對於字型處理不雅觀且不當的XIM處理也容易讓系統崩潰,所以我動手補強並加入Xft的支援,可自行取得patch

除了以上透過既有軟體組合的視覺化環境外,我正在進行一個全新的項目,以Qt4作為GUI library (盡可能減少Win32與Linux平台移植的技術議題),為PXAemu開發frontend,也著手開發相容於GDB Machine Interface的GUI Debugger,如此一來,就可以輕易更換GNU Toolchain,即使是商業版本的MontaVista Consumer Electronics Edition (mvlcee) 也得以使用。