「只要有心,人人都能當食神」,這是周星馳電影裡頭的名句,但是這對種類繁多的 Linux distributions 來說,只要有不錯的訴求、廣泛的支援,以及那個成功的因素 -- 「有心」,要脫穎而出是有機會的。
VidaLinux 是以 Desktop 為主要訴求,或許聽到這種介紹,您不免要疑惑:「又有人搞一套 Linux Desktop 啦?」但是實際使用 VidaLinux 後,你絕對會發現設計者的用心。VidaLinux 與其他 Desktop-oriented Linux distribution 的差異在於,整合 Gentoo 的 portage 設計,以及針對特定平台提供足夠量的 binary packages,這大幅降低 Gentoo 的 bootstrapping 時程,最重要的是,安裝 VidaLinux 真的非常簡單,如果安裝過 Fedora Linux 的朋友,一定會很快的就把系統安裝好。
等系統安裝好,就可以使用 Gentoo 的 portage 來安裝與設定你的系統:

最後,推薦您閱讀其他行家的評語: [Hands on VidaLinux Desktop OS]。
Have Fun!
著名的 GCJ/GCC Hacker,Tom Tromey,目前是 RedHat Eclipse 小組的靈魂人物,致力於更廣泛的 Eclipse 應用,也致力讓 Eclipse 得以成為完全的 FOSS (Free and Open Source Software),他們的途徑就是使用 GCJ。
已經有很多令人振奮的消息指出 Eclipse 在 gcj/gij 上可以順利運作,RetHat 甚至還提供 native binary package,雖然效能還有進步的空間,但是這意味著 Eclipse 可應用於不同的需求,比方說 Embedded Linux SDK 的整合開發環境,成功案例可參考 [Wind River scoops up ScopeTools] 與 [TimeSys offers evaluation version of embedded Linux tools]。我們可以發現 Wind River 的 WorkBench 是建立在 Eclipse 的基礎之上,但是最終的開發目標卻是 Wind River 的應用程式,而非 Java Applications,所以如果能夠提供一個 pre-compiled native binary 給客戶,將會是很棒的整合設計。
說了這麼多,其實我要說的是,Tom Tromey 將 Eclipse/GCJ 的整合工作項目記錄在 [Free Eclipse],有許多重要的參考資訊。
喔,對了,Kaffe 當然也能運作 Eclipse,眼見為憑: [Kaffe.org - Screen Shots - Eclipse],這是我去年的嘗試,最近也打算還更新到最新的 Eclipse 來測試。
身為 Kaffe Developer,能夠分享自己的進度的確是很讓人開心的事情,正如我在 Kaffe mailing-list 提到的 [pure Java X Protocol implementation driven by Kaffe],透過延伸 escher 這個 pure Java X Protocol 的實作,現在 Kaffe 可以在 X Window System (我用的實作是 XOrg) 上「直接」透過 X Protocol 來驅動 X Server 呈現一般 X client 的行為,原理可參考去年 Debian@Taiwan IRC Conference 中我的講題:「FreeDesktop.org 與 X.org 嶄新發展概況」與「FreeDesktop.org 與 X.org 嶄新發展概況(續集)」。
這是一個很大的突破,只要完備的話,甚至不需要 xlibs,相反的只需要 Java Runtime 就可以達到同等甚至更好的效果,這也是 Sun Project Looking Glass 採納 escher 的原因之一。不過,我所要作的與 Sun lg3d 的發展不相同,我考量到的是桌面的整合能力與 Embedded System 的應用。
比較有趣的部分是,我將過去花費時間研究 Java binding (JNI) to OpenGL library 的議題,轉而研究「是否有無可能透過 Java 直接驅動 GLX,發揮硬體加速的能力」,是的,這是可行的,而且我已經初步成功了,請參考以下快照:

與

近期內,我將會繼續研究 KMM (Kaffe Multi-Media) 計畫的基礎建設,祝我好運!
最近 Free Java 的發展真是「有頭有臉」,怎麼說呢?因為 GCJ Hackers 已經完成許多 AWT/Swing 的實作,GNU Classpath Hackers 首度完成 JDK 1.0 全部規格,並且廣泛的實作 JDK 1.4 規格,完整度很不錯,而標題所提到的 Odonata 與 sdlJava 昨天在 twiun 的告知,已經有很不錯的整合,運作快照可參考 [Odonata-on-SDLJava]。
所以,Odonata 現在除了可透過 Linux FBDev 與 VNC RFB (Remove Framebuffer) 作為顯示裝置外,還可以透過 SDL,這樣將可以在更多的平台與環境上運作 GNU Classpath AWT,非常令人振奮的消息!
JetNuke 是個新計畫,目標是將著名的 PHP-Nuke 用 Java 重新實作過,其最新的進展就如網頁呈現的面貌,最神奇的是,作者只花了很短的時間就把 PHP 撰寫的 Nuke 重新改寫完畢,整體核心變得相當精簡。

用 Java 改寫不是噱頭,相反的,我們可以發現這個移植中,大量使用到 J2EE 的基礎建設,下載的 tarball 則內含 Apache Tomcat 4.1.29 與所需的 binary packages,可以想見的是,等 JetNuke 穩定度足夠後,就可以運用 J2EE 相關技術作整合,Apache Jakarta 許多重要的元件,比方說 Velocity 或 Cocoon,都有機會整合進來。
剛剛用 Kaffe 來測試,成功載入整個 Web Application,不過細部運作不是很正常,要點 hacking 才行。
x[i[j]]
%{
// forward declaration needed by the following function
#ifndef YY_PROTO
#ifdef YY_USE_PROTOS
#define YY_PROTO(proto) proto
#else
#define YY_PROTO(proto) ()
#endif
#endif
static void yyunput YY_PROTO(( int c, char *buf_ptr ));
void do_unput4(const char c) { unput(c); }
%}
Grout 是個用 Java 1.1 撰寫的益智遊戲,先看看以下的圖:

緊鄰的六個六面形有個特性,就是裡頭的色球會與邊界的球同色,形成一個配對,而 Grout 設計的目的就是希望從原本組合中,經過適當的重組獲得這樣的配對。
Grout 1.0 支援四面與六面形,裡頭有些範例可以參考,對了,這個解題遊戲可以用 Kaffe 跑,運作畫面如下所示:


剛剛在 #kaffe 遇到 WindowUninstall (別懷疑,這是 nickname),讓我想到他最近作的計畫 -- MatrixOS。MatrixOS 的發展環境是在 Linux,並透過 Bochs 作模擬測試,建構出來後,會產生 Floppy image,大約 23kb,是個具體而微的迷你作業系統 (其實我的 JK 也差不多這樣的 footprint)。
MatrixOS 以 C++ 撰寫,是幾位熱心的義大利朋友發起的,有自己的 Boot Loader,支援 32-bit Protected Mode,內建 keyboard 與 vga driver,也有個陽春 shell 可用,程式設計還挺單純的,比較接近所謂的 monitor。
對了,下載的 tarball 裡頭就有參考的 bochsrc,可以直接用 Bochs 跑來玩。
這幾週一直連不上 freenode.net,所以也就沒有掛在 IRC 上跟 Kaffe 與 GNU Classpath hackers 討論,晚上用餐完試著連線,終於再度 /join #kaffe。遇到一個新 nickname -- AvengerMoJo,我們因為 DirectFB 的議題聊了起來,之前我花了些時間處理 DirectFB 與 Kaffe VM 整合的事宜,所以看到有朋友也對這項目產生興趣時,我們就聊起來了。
後來才發現 MoJo 來自大陸北京,他的首頁 [AvengerGear First Home] 有一些生活照與 blog,同時也與 James Su 和 Foka 熟識,而我們繼續在 IRC channel 聊了其他主題,很高興又認識一位新朋友。
網路真是太神奇了 :-)
一篇由大陸上海交通大學的博士班學生 Huang Yi 撰寫的文章 [Soccer-playing robot runs real-time embedded Linux],是自動控制與 Realtime Linux 應用的極佳範例,其成品像是這樣:

有些牽涉機械的地方看不是很懂,不過 [Software architecture] 倒是可以多參考。
Wine 是個相當出名的 Free/Open Source 計畫,歷經十餘年的開發,已經累積相當多成果,在去年的 WineConf 2004 中,Wine 核心開發者之一的 Mike Hearn 準備了一份對 Wine 發展概況的簡報,標題是: [So you want to be a Wine hacker?],這份簡報是透過 XML transform 呈現的,所以支援 DOM/HTML 4.0 的 Web Browser 應該都能觀看。
雖然現在已經沒有從事 Qt/Embedded 的開發,過去維護 Qtopia Applications 也荒廢了,但是或許還有參考價值,所以剛剛把原本放在 ccns.ncku.edu.tw 上的文件作了份複製,也一併更新 [首頁] 裡頭的 link,請參見 Projects --> Qtopia。
這份 mirror 為 [Qtopia (Qt Palmtop) 展示與介紹],至於其他的項目,待整理後陸續移轉過來。
GNU Hackers 之一的 Daniel Berlin 用 PhpWiki 架設好 GCC Wiki,羅列了一些 GCC 重要的參考資訊,比方說許多開發者專注的 GCC 4.0 重大的變革、Tree/RTL Optimizers,或者是結構方面的議題。
GCC rocks!
courage 兄最近花了很多時間研究著名的 Graphics Library -- SDL,並針對其輸入法支援作了加強,我跟 lwhsu 協助他建構專案計畫 [SDL-IM: IM(Input Method) support in SDL],雖然計畫成立沒多久,但是已經有很多成功的案例了。
courage 兄這幾天稍微修改 SDL 為主的 Widget set -- ParaGUI,搭配 SDL_im 與 arialuni.ttf (Microsoft 提供的 Arial Unicode font) 之後,就有很不錯的中文顯示與輸入支援,請見以下快照:

SDL_im 在 X11 下可以直接使用 XIM,畫面所示的就是使用 xcin。
之前花了點時間 (還不少),把 [Window Managers for X] 所羅列的 Window Managers 都測試過了,除了幾個 link 失效的以外,所以我試著記錄一部份測試心得,最後再來整理完整的報告。
這裡著重的是非主流的 Window Managers,真正使用的朋友大概不多,但是卻非常有特色。
pekwm (連結失效)
衍生自 aewm++,但是加入不少有趣的特徵。基本上與 twm 操作還頗類似的,可是能夠調整的幅度頗高,速度又是一流。
QVWM
非常著名的 WM,模仿 Windows 95/98 外觀,但是已經停頓發展,我跟幾位朋友試著接手維護,可參考 [我的首頁] 的 Projects --> Qvwm
Efsane II
. 以 C++ 撰寫,程式架構清楚
. 實作 EWMH (部分)
. 提供 GUI 設定工具
. 已不再維護
B4Step
. Theme 支援
. 與同等 footprint 的 WM 相比,功能完整度高
. 豐富的設定
SWM
. 完整度高
. 很適合 PDA 的小畫面
. Theme 支援
. 記憶體用量少
sWM 相當適合 handheld devices,其 code size 大約有三種等級:12k、32k,以及 42 kb,核心非常精簡,而且很容易作 build-time configuration,就像 Linux Kernel 可以 make menuconfig 。sWM 提供很多內部屬性與功能的選項,透過這些組合,可以很快建構出合適的 Window Manager。在 sWM 下開任何 X Client 就真的「繃」出來那麼快,此外,sWM 針對 desktop update 作了很多 fast algorithm 的實作,所以呈現的效果相當理想。還有,不同於其他 WM 需要額外的輔助程式來實作 panel 與 desktop icon/shortcut 的功能,sWM 提供內建的 panel bar,算是堪用。
說完好話後,開始分析缺點。
1. 不支援 EWMH 與 NET_WM
2. ICCCM 支援度不佳
Matchbox
很精簡但是卻支援很多 FreeDesktop.org 規格,模組化設計良好,如果只談核心的 WM,支援 Pango / Xft,也可選擇支援 GConf,內建 Composite manager。此外,目前跟 Matchbox 作者互動還不錯,很多 idea 與 patch 很快就納入,所以當作參考的 codebase 很理想 (甚至可以 cross-development),支援 theme,但是受限於 handheld 考量,只提供部分的設定,若作為 Desktop 使用的話,Matchbox 需要一些 working style 的 fine tune 才行。
Luminocity
GTK+ 的設計者 Owen Taylor 所作的新 Window Manager/Compositing Manager with GL output,非常卓越的架構與設計,可以支援 FreeDesktop/Xorg 大部分嶄新的規格,比方說 XFIXES、SYNC、DAMAGE、Composite、XTEST,以及 GLX 等 extensions,當然也要來欣賞一下其 [Live Pager]。
IBM DeveloperWorks 上一篇新文章 [Emulation and cross-development for PowerPC],簡單扼要的介紹三個 PowerPC cross-development 模擬器工具,分別是 [qemu]、[PearPC],以及 [PSIM],而這三者最理想的,應該算是 qemu 了。當然啦,強力的 GCC 就不必多說了,同時也可以參考 [Debian -- PowerPC Port],找到一些合用的 patch。
qemu 支援 Just-In-Time dynamic compilation,除了不支援 AltiVec™ vector-processing instructions 外,qemu 的效能算是很不錯,也支援 Remote GDB,在 x86 下運作也不錯。
IBM DeveloperWorks 上關於 PowerPC 的文章越來越多了。
昨天 (週四) 去拜訪 SoG 學長的公司,順便跟他的老闆作了些交流,我們大致是從早上 10:50 開始聊,等握手道別時,已經中午 12:50 了,這兩小時也是耳聞一些新資訊與想法。之後就跟 SoG 學長去附近的簡餐店用餐,不免也繼續之前的話題,大約下午兩點,與學長道別後,我就徒步走去台北 101 大樓晃晃。
逛這麼大的商場實在很費時間,老實說我也不知道自己到底為何要來逛,總之就是對標價相當有興趣,拿起紙筆,就開始統計了起來,這讓我想到許多以商品出發的市場經濟模型,所以我就有股衝動,想去尋找箇中道理。
於是很快我就到了 PageOne,走到經濟學專區,雖然比不上圖書館的專業,但是書籍還頗新的,最重要的是閱讀環境還不錯 (無聊的時候可以抬頭看 MM),比較讓我著迷的是《新國富論》,裡頭頗多獨到的論點,隨後又閱讀《新泡沫經濟-日本銀行的崩潰與曙光》,這兩本都給我相當程度的啟發,或許這幾天有空時來整理讀書心得。
當然,也不能忘記為 FOSDEM 2005 的地點 -- 比利時,找一些旅遊參考資訊,否則到時候真的就糗大了,PageOne 的旅遊資訊書籍實在是非常完整,反倒讓我一時之間不知道如何挑選,於是隨便選一本同名的書籍:

嗯,讀書最快樂 :-)
Trolltech 剛宣布 [Qt 3.3.4 釋出],這是個 bug-fixing 與最佳化的版本,而令所有開發者秉息以待的 Qt4 呢?在 Qt4-preview-feedback mailing-list 上 Trolltech 宣布 [Qt 4 Release Schedule Adjustment],所以依據這個訊息,今年三月到五月間,還會有新的 Qt 4.0beta release,並於 2005 Q2 結束前釋出。
訂於 Jan 23, 2005 的 KDE@Taiwan 首度使用者聚會圓滿落幕,感謝各位前來指導的朋友捧場。
聚會一開始,由 KDE@Taiwan 現任的主持人 AceLan 為與會的朋友介紹目前的組織現況、KDE 繁體中文翻譯進度,以及 Qt 季刊 (Quarterly) 的繁體中文翻譯計畫進度 [照片]。而我則為大家介紹 Trolltech 預計在 2005 Q2 釋出的 Qt 4,並從 Qt4 Beta1 窺見最新的發展狀況 [照片 (馬賽克)]。喔,KDE@Taiwan 的創辦人莊明哲前輩也有來,於是我拿了前輩的大作《KDE2 技術開發》,索取親筆簽名 [照片]。kclin 也上台分享他的 KDE 經驗談,他說「只要有心,人人都能弄出很棒的工作環境」 [照片],此外,原真也上台分享最近作的 KDE PO 翻譯輔助工具,也引來阿信的討論,如果能適用更廣泛的翻譯計畫的話,真的是很不錯。
在我的分享題目 [Trolltech Qt4 嶄新發展概況] 中,有許多展示程式與特效是透過 KittenBox 來展現的,順便拍了張圖 [照片]。
對了,這次也來兩位 KDE Girls,兩位佳麗對整個活動增色不少 [照片],特此感謝。
雖然發生一些小插曲,但是整體來說,這第一次聚會的活動還頗不錯的,希望明年的聚會有更多有趣的內容,謝謝!
週二晚上從台大迴廊咖啡廳走出來後,Andrew Lee、chihchun,還有我,一路為了找喝酒與聊天的地方 (人云:「酒後吐真言」),經過頗多店家,最後是到了師大附近的一家 Bar,氣氛還不錯,也有神奇的無線網路 (或許是 chihchun 的 WirelessLAN NIC 太強了),總之,我們點了酒之後就開始討論 Debian@Taiwan 的議題。對了,我點了 Coma (昏迷) 這個調酒,味道挺不錯,除了稍微嗆了些,有機會或許可以再嘗試。
我們討論很多項目,但是有些部分還沒整理出來,已經整理好的部分則是 [Debian@Taiwan 2005 Plans] 與 [Asia Debian Aisa Debian Mini-Conf 2005],在我們討論的時候,也萌生許多熱血的點子,待思路與時間成熟後,也會一併告知,這兩個項目大概是最近的重點。
比較有趣的項目之一就是「 開發者定期聚會 -- 如黑客松模式聚會等,每週定期聚會,每月固定一次 Debian 使用經驗分享」,這在最近就會展開,#debian.tw IRC channel 上討論很踴躍,不過我們很多細節還未敲定,有興趣的朋友可以協助,無論是提供地點、提供議題,或者是出個人頭,只要你自認熱血,就快點衝過來 :-)
今年 Debian@Taiwan 的活動真是多阿,所以呢,我們這三人組就從週二晚上一路聊到週三早上 5:50 台北捷運列車開車時才結束,離開時,全身還是熱血沸騰阿。
這個標題跟內文似乎沒有直接關連,因為很多人看到「中文資訊處理」這個議題都不快樂。
週二在台大迴廊咖啡廳,有一群人士聚在一塊討論這個議題,因為部分討論內容比較敏感,這裡就不作介紹了,雖然現有新的輸入法挑戰眾多,正如我在過去的簡報 [Linux 中文輸入法的新挑戰] 提到的,現在中文輸入法 (當然還有相關的中文處理) 的問題不在於實作少、環境架構不允許,相反的,是選擇太多了,架構環境變化太大,常常作了一堆重複的工作,輸入也好,輸出更是。當然,針對這個議題,我也還是一個門外漢,但是截至目前為止,我看到的問題越來越多,而原地踏步的情況卻沒有改善。
越來越不愉快了,我來提一些有趣的新消息,[新酷音/SCIM] 的維護者 kanru 最近修改許多 SetupUI 的部分,應該很快就會 checkin 了,太炫了,然後下一步就是整合 SCIM 1.1.x 的 Helper classes,這時候就要說:「酷!」
Andrew Overholt 張貼了一篇很棒的 blog [Eclipse + Java-GNOME Demo],在這篇 blog 中,Andrew 展示了如何使用 GCC 4.0 (with GCJ) 與 Eclipse 作 Java 程式的開發動作,不同於以往複雜的 How-To,Andrew 準備了 Flash SWF 動畫,而展示的過程中,也提到 GNOME-Java 的簡潔有力,並且可與 glade 這套快速發展的 GUI RAD 整合。
當然啦,最後透過 GCJ/GIJ,你可以選擇輸出 byetcode 與 native code,就目前來說,可用度已經非常高了,非常值得一看的展示!
Let the Java Free.
Free Java can do it, and even better!
Goals ----- - Determine how to modularize the source code tree - Evaluate the available build systems and how they will be used - Document module ABIs - Document how individual module releases and roll-up releases occur - Define roles and responsibilities for module maintainers - Produce a detailed design document that will be presented to the architecture working group Tasks ----- - Distribute request for modularization requirements - Discuss how to modularize the source code based on the requirements - Determine supported feature-set - Determine verification methods - Document the interfaces between module components - Formalize the modularization planDaniel Stone 則在 [回應] 中指出會使用 autotool 來處理,當然有很多討論的空間,比方說 Win32/MinGW 方面的配合度問題。
參考 Xorg mailing-list 上的訊息: [ANN] X11R6.8.2 Release Candidate 3 is out!,我們可以發現若干個 video driver 都已經更新過,同時 OpenGL/Mesa 的版本也更新至 6.2,而最終的版本預估於兩週後釋出。
Just Xorg it!
勸君莫惜金縷衣,勸君惜取少年時。
花開堪折直須折,莫待無花空折枝。
《金縷衣》短短數餘字,道盡這一切的變動...剛剛在作些實驗,不知不覺弄到現在,今天除了是 [KDE@Taiwan 第一次聚會] 外,還是自由日,當然,背後的歷史背景 (韓戰) 有太多值得我們追思之處。如果撇開不論的話,在自由日聚會聊自由軟體,還不錯 :-)
更新了我的 [首頁],加入 JK (Just the Kernel) 的資訊,這是以前為了 Free JavaOS 所作的,不過這個專案已經如曇花一現般的消失了,而這個精簡的 Kernel 卻還有些參考價值,所以一併放到網頁上。
今年寫 blog 十天了,看起來還不錯,本篇恰好是第 50 篇。
剛剛看 Gentoo Developers 之一的 Donnie Berkholz 前天撰寫的 blog: [6.8.2 RC2],提到以下敘述:
The next step of the migration will probably be /usr/X11R6/bin -> /usr/bin and /usr/X11R6/include -> /usr/include/X11 to finish things off, but I don't expect it will happen until 6.8.2. It will definitely be nice to just have /usr/X11R6 -> /usr. First, however, I need to fix my highly specific migration function to be more robust and generalizable to anything. Actually, 6.8.1.90x's might be a good opportunity to work on this, so 6.8.2 could also signify the lack of anything in /usr/X11R6.
這個議題事實上已經討論多時,比方說 [Installing XFree86 to FHS/better locations] 裡頭的描述中,我們可以發現 X11 許多 packaging 的方式與 FHS (File System Hierarchy Standard) 的原則部分抵觸,而 SuSE 的文件 [SuSE and the File System Hierarchy Standard (FHS) ] 在 [2.2.1 /usr/X11R6: X Window System, version 11, release 6] 一節則指出:
Host-specific data is in /usr/X11R6/lib/X11. The FHS intends this directory to be used for demonstration files only. Because SuSE doesn't use /etc/X11, the configuration files for window managers, applications, and so on are still in this directory.
就與前面引述的資料說法不一致,這點實在是非常的麻煩。
Gentoo 是個勇於創新的 Linux Distribution,可以想見,Donnie Berkholz 很快就會在 Gentoo portage 中落實上述的規劃,而 Debian X Window System 的 maintainer,Daniel Stone,也多次表示將不再使用 /usr/X11R6 這樣的 directory entries。
在 Xorg 最近的發展中,[dlloader is now the default] 讓 Xorg 的許多 modules 得以符合 LSB (Linux Standard Base) 作包裝,不過,這又引來許多討論,有興趣的朋友可以 follow up 上述的 thread。
Xorg rules!
建構網頁非常簡單,但是要永續經營並且降低維護的複雜度,一直是許多專家不停研究的題目。剛剛找到 piaip 撰寫的一篇紀錄文件 [piaip's XSLT webpage project],果然獲益良多,真是非常感謝 piaip 無私的分享。
讀到一半,也讓我想到 Slashdot 最近有篇報導 [Printing XML: Why CSS Is Better than XSL],值得閱讀的部分不僅是新聞所參照到的資料,讀者的評論也很值得一讀,XSLT 實在是太有意思了。
所以我也打算在今年的 TODO List 安插 Web Publishing 的資料涉獵與參考實作。
感謝 GCJ Hackers 之一的 Graydon Hoare 的努力,現在 GCJ (gui-branch) 已經能夠運作 jEdit 了,儘管有點視覺上的差異,但是這真是突破。現在 GCJ / GNU Classpath 的 Java2D rendering backend 有 gdk_pixmap 與 Cairo 兩種,後者很值得注意,不僅畫面流暢,完整度也高。好,不多說了,眼見為憑,jEdit on GCJ 的快照如下:

Let the Java Free!
剛剛從 cvs 下 checkout 了 Waimea,意外發現無法編譯,估計是 Cairo API 的差異,以及一個 typo 所致,順手修正後,發信到 mailing-list,參考 [Minor compilation fixes against cvs head]。另外,fbpanel 是個相當棒的工具,可配合符合 NetWM / EWMH 規格的 Window Manager 來使用,當然也包含 Waimea,這樣的組合感覺非常好,所以就弄張快照留念:

很早就看過 [ZWM] 的網頁介紹,卻一直沒有抓下來玩,ZWM 的實驗性質很強烈,不以 ParaGUI 這類 pure SDL GUI Library 為訴求,相反的,有許多部分是參考 X Window System 的概念,然後以 SDL 的衍生 libraries 作實現,所以作者寧可稱其為 "Window Manager"。
原始程式碼有些部分無法通過 gcc-3.4 編譯,make rules 似乎也有問題,最奇怪的是記憶體配置,所以我一併 fix 掉,並作了些 hack,運作的畫面如下:

首先,要感謝 AceLan 與 PowerOp 兄的協助,我才能在 blog.linux.org.tw 上撒野,然後也要感謝 hcchien 告知 Jedi 的大作 [Movable Type 文件集],我才對 MT (Movable Type) 有了進一步的認知。可是我還是有很多疑惑,比方說內嵌 HTML tag 時,呈現的行為總是有點怪:
1. <ul><li>...</li></ul> 實際 rendering 出來時,我發現會跑出多餘的 <br>,然後版面就變得很醜
2. <pre>...</pre> 呈現的效果也是跑出一堆無用的 <br>
看起來真的很不舒服 :(
到底要怎麼解?
因為專案需求,所以我又要來設計新的 Window Manager,目標是融合 DirectFB 與 XDirectFB 之下運作的應用程式,換言之,就是用 DirectFB 來撰寫 X Window Manager,這個瘋狂的點子已經在剛剛幾分鐘的 hacking 確認是可行的,現在欠缺的是標準與實作方式的確立。提到 Window Manager,當然要去看看 [Windows Managers for X] 的整理,而剛剛連線才發現,原來這個網頁已經有十個年頭了,而我有幸在去年貢獻了幾個 entries :-)
比較讓我感興趣的項目之一,就是 Meta Window Manager,這是一個簡化 Window Manager 設計的 Framework,作者也提供一個測試用的精簡 Window Manager。剛剛測試後,發現真的非常方便,很容易就設計出具有自己風格的 Window Manager,可惜這個專案還欠缺 WM 應該具有的 spec,否則只要寫篇「快快樂樂打造自己的 Window Manager」就可以生出一堆有趣的應用。
除了傳統的 Window Manager 外,我也發現一個相當特別的設計,就是運作於 Web Browser (需要 HTML 4.0 與 DHTML 支援) 的 "Window Manager",請參考 DHTML-WindowManager。一打開畫面就跑出一個 Window,沒錯,而且有 Title bar,試著 Drag-and-Drop 吧,超級炫!
昨天才發佈的 Gaim 1.1.2,我很快就加入 OpenSSL 的支援了,可到以下位址下載:
以下是本 branch 透過 GTK+/DirectFB 運作的畫面:

Have Fun!
剛剛更新自己最近的 kBrowser 計畫,現在的版本推進到 0.1.1,預計到 0.1.5 或者 0.2.x 後會公開釋出,現在已經不需要 X Window System 了,全部在 DirectFB 下都可以運作。順便處理 GTK+ 2.6.1 在 DirectFB 的 porting,然後用以編譯 SCIM 1.1.2,把 x11 FrontEnd 關掉,只剩下 GTK+ im-module,再配合我去年發起的 [新酷音],整體呈現的畫面如下:

即便是 VIA C3 600MHz 跑這些炫麗的特效也相當順暢。



$ ./httpd.sh Resin 2.1.s050103 (built Mon Jan 3 11:16:04 PST 2005) Copyright(c) 1998-2003 Caucho Technology. All rights reserved. Starting Resin on Thu, 20 Jan 2005 23:34:37 +0800 (CDT) java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke0 (Method.java) at java.lang.reflect.Method.invoke (Method.java:255) at com.caucho.util.BeanUtil.setBeanProperty (BeanUtil.java:537) at com.caucho.util.BeanUtil.configure (BeanUtil.java:370) at com.caucho.util.BeanUtil.createBean (BeanUtil.java:153) at com.caucho.server.http.JndiFactory.initContext (JndiFactory.java:294) at com.caucho.server.http.ClassLoaderContext.init (ClassLoaderContext.java:696) at com.caucho.server.http.ServletServer.initInternal (ServletServer.java:694) at com.caucho.server.http.ServletServer.init (ServletServer.java:538) at com.caucho.server.http.ResinServer.init (ResinServer.java:415) at com.caucho.server.http.ResinServer.main (ResinServer.java:1176) at com.caucho.server.http.HttpServer.main (HttpServer.java:103) Caused by: java.lang.StackOverflowError at com.caucho.sql.DBPool.setMaxIdleTime (DBPool.java) at java.lang.reflect.Method.invoke0 (Method.java) ...11 more看來有得 hacking 了。
剛剛找資料的時候,發現論壇上有這篇文章 [Windows 上使用 GCJ+SWT 開發 native GUI 應用],算是這個主題少有的中文文件,發表時間是 2003-11-24,雖然有些部分離題,但是整個 thread 可以稍微 follow up。其餘的繁體中文文件就少得可憐,大概只有 champ 學長寫的 [SWT, GCJ 開創Java程式開發新紀元] 系列文章了。
By the way,MinGW + msys 上面能跑的應用程式越來越多了 :-)
今天早上醒來 (睡得真舒服,很幸福的離開睡帶),開始鑽研 MiniGLX,這是 Tungsten Graphics, Inc. 提出的規格,或許沒聽過這家公司的大名,可以去下載 Linux Kernel、Xorg,以及 Mesa 的 source code,就會找到一堆 credit 了。
OpenGL rendering on embedded devices 是個非常重要的議題,MiniGLX 以一個務實的途徑去實現 xlibs 最小的相容層,並且已經有很不錯的表現,這點可以參考 Mesa3D 的 linux-solo。而我的目標是針對 Xgl 做出改進,並且針對 MHP 環境提出一個有效且快速適用的架構出來,David Reveman 不僅改善了 Xgl,同時也依據上述的基礎,建立 Xglx,後者可以有效的克服目前 X Window System 的 GL 實作的窘境,這點可以比較我過去整理的 [XFree86 4.x DRI 運作示意圖],這相當的複雜,層層的包裝卻是硬體加速實現的途徑。我們可以研究既有的 DRI DataFlow,Xglx 將會秉持 "Simple is beauty" 的原則,以全然不同的 software stack 來實現,但也確保原本應用程式的相容性,這是 X11 重要的發展指導原則。
台灣 KDE 使用者 終於要聚會了,活動與報名的網頁可參考 [KDE@Taiwan First Meeting]。這次預計由 AceLan 報告 kde.tw 的現況、KDE-i18n 的翻譯狀況,還有Qt Quarterly(Trolltech 官方提供給開發者參考的季刊,有很多不錯的文章) 的正體中文翻譯,而我則花一點時間跟大家說明 KDE/Qt 下一代的新 Framework -- Qt4 的發展概況,當然啦,聚會的主角是與會的朋友們,光是分享美美的 KDE 桌面就目不暇給啦 :-)
所以,一起來看看吧。
# 時間:2005 年 1 月 23 日 (星期日) 13:30
# 地點:Open Studio開放社群工作坊 (台北市新生南路一段103巷13號)
# 備註:歡迎帶您的 NB/PDA/PC/XBox/PS2 其它有趣的東東,供大家參拜
KDE.news 上發佈了一篇新聞 [The Importance of KOffice],我順手翻譯成繁體中文,請見 [KOffice 發展的重要性]。作為一個與 KDE 高度整合的辦公室軟體套件,KOffice 團隊尋求更多新血投入,這篇新聞提供了一些資訊。
KDE & KOffice rules!
依據 LinuxDevices.com 的新聞 [DCE source code released under LGPL],搞分散式系統的開發者想必對經典的 DCE (Distributed Computing Environment) 架構都非常熟悉,現在終於以 LGPL 授權釋出了,還好不是類似 OpenMotif 那種麻煩的授權 :-)
引述 Data Power Technology 的 CSO (Chief Security Officer) Rich Salz 說法:"It's great to see DCE -- the first secure enterprise computing platform -- finally available for development by the OSS community. Its size alone makes it both a formidable challenge to, and testament in the belief of, the open source community."
現在就前往 DCE Portal。
嗯,兩個月去某個「寶」公司的工讀期結束,正式放寒假了。(要等好心的廠商願意收留我,這樣我才能「開學」)
寒假很多計畫,當然也包含重頭戲 FOSDEM 2005,隨著時間的逼近,越來越緊張了。基礎研究告一段落後,我將會繼續研究 MHP (Multi-media Home Platform) 的 paper work 與 prototype 實作,並且展開另一個基礎研究,雅稱是「格物致知」,而代號則是 "sucker"。這是延續之前作 Boot-time optimization 的項目,但是以不同的角度切入,我將會設計一套 Simulation 環境作徹底的 profiling,藉此徹底理解箇中環節的奧義。
再說下去就洩底啦,總之,新年快樂!

Happy Hacking!
$ kaffe -cp . njava Test
應該會得到以下結果:
Test Constructor
hi
hi
hi
hi
hi
kBrowser 是我最近 (其實作很久了,學生時代就開始作,但是最近才到比較成熟的水準) 開發的 embedded Web Browser 專案,以 KDE Konqueror 作 codebase,但是不以 KDE/Qt 為侷限,就目前的發展來看,可能會透過 DirectFB 重新打造過,這在我之前的 blog: [親愛的,我把 KDE 塞進 DirectFB 裡頭了] 已經有提到最新的進度。
但是,話說回來,這樣的呈現比較適合 MHP (Multi-media Home Platform),這個領域事實上有不少商業廠商在著墨,比方說對岸的 NetScute 就作得很不錯,國外的廠商更不在話下,那 Free/Open Source 的 solutions 呢?Minimo 與 Konqueror/Embedded 這兩大專案大概是最有希望的,而身為一個 KDE Fan,我選擇了後者,作為我開發 kBrowser 的根據。
如果完成 DirectFB 的移植後,我將會回頭作在 handheld 環境,比方說 PDA 與 SmartPhone 環境,運作的可行性分析,比較想達成我以前修改 Konqueror/Embedded 呈現的以下效果:



說來好玩,我大學時代曾經告訴自己不應該再鑽研 OpenGL Programming,沒想到現在峰迴路轉,我又開始研究 OpenGL,不過這次不是純粹 Programming,而是探討在 Embedded System 裡頭 GL 的硬體加速實作設計。
這個議題真的非常困難,光有電腦圖學的基礎是沒有太大的幫助,為了研究這個主題,我特別去研究 VIA CLE266 的北橋晶片組,對我一個學習軟體的開發者來說,這是相當艱深的議題,但是沒有這些基本功,想要徹底發揮硬體效能,絕對是緣木求魚。需要先簽署 NDA,才能拿到詳細的 datasheet,這點我就不多說了。
我的研究方向有兩個,一個是探討最小的 GL 實作 (注意,這裡不是指 TinyGL 一類部分相容 OpenGL 規格的迷你實作,而是在符合規格的前提下,最小的 software stack 可能性),另一個是在既有的 Graphics Toolkit 下強化硬體 GL 表現。
在我的簡報 [X Window System 的現況與挑戰] 中稍微提及未來 X Window System server 實作的種種挑戰,其中,3D Graphics 已經走出 2D mapping 的呈現方式,接踵而來的局面是 3D Living World,是此,FreeDesktop.org 已經有 Xserver over GL 的實作,在去年 Debian@Taiwan IRC Conference 時,我也跟與會的朋友討論過這個議題。然而,這些挑戰背後的學問實在是複雜的驚人,在撰寫新書的同時,也試著涉獵箇中的奧義,讀規格書是很無聊的苦差事,所以我想到一個很有趣的點子,也就是對既有的實作進行 Refactoring,這樣一來,依循二十世紀美國的教育學家杜威的「作中學」(Learning by doing) 的教育理念,弄起來也比較起勁。
屈指算算,我已經耗費 25 個工作天在這個基礎研究的項目,現在參考的計畫是 Mesa fbdev/DRI Drivers,參考硬體實作平台是 VIA Unichrome,未來這些成果也會陸續釋出,不過現在還處於「燒錢」(燒自己的積蓄) 的階段,更動的幅度還不是很大,好吧,就研究人員的角度來說,我是極度廉價的,只要有普通的網路環境與便當盒就可以養活我了 (*苦笑*)。
作基礎研究可能不是多吸引人的事情,畢竟真正能夠成功的項目不多,就算成功,要拿來 profit 要考慮的因素就更令人難以掌握,可能終其一生都會像我這樣成為苦哈哈的獨立工作者,但是一旦理解箇中奧秘,進而大刀闊斧的提出強而有力的新架構與實作,那種成就感實在不可言喻。
發牢騷完了,我又要繼續作基礎研究了 -- High Performance Hardware-Accelerated GL Implementation in Embedded System。希望自己不要 coding 到餓死 :(
感謝 KDE Developers 之一的 Jeff Snyder 告知,現在的 Kompare 已經有很大的進展,擁有許多商業軟體的特徵,對協同開發相當有幫助,其中 [Three-way diffs] 相當吸引我,運作的畫面如下所示:

"merge" 往往是弄出 branch 後最麻煩的一件事,現在 Kompare 已經有 3-ways diffs 的話,就一目了然,相當方便。此外,在實驗版本中,也提供新的 layout,其效果如下:

很心動吧,這些卓越的進展都放上 cvs server 的 kompare3_branch 中,有興趣的朋友可以嘗鮮,當然,也可以選擇等到 KDE 3.4 釋出再來玩。
Enjoy it!
上週的 Gentoo User Party,我利用了一點時間展示在 VIA CLE266 整合繪圖晶片組上運作 DirectFB 的效果,而剛才 Benny 告知聚會的照片出爐,部分展示的照片如下:
- 自己設計的 PointPoint -
- 典型的 DirectFB 運作畫面 -
- 極度噁心的半透明效果 -
比較尷尬的是,中途突然 kernel panic,所以我就偷偷跑去 debug :p
晚上在 Sayya BBS 看到李果正前輩的 post 提到一個 [純 C 寫 pdf creator],不需要使用 pdflib,看起來非常吸引人,於是就抓來玩,嗯,效果實在不錯,還偶然有「書中自有顏如玉」的意外收穫。(自己跑起來就知道)
不過呢,程式排版實在是亂得不行,於是我只好大刀闊斧的用手頭的工具翻修,順便解決可能的 dangling-else 情況,這個新的 tarball 可在此取得。姑且不論 coding style,其實原作者的功力真是高干,巧妙的使用 FSM 來簡化設計,實在有意思,學起來。
uClibc 0.9.27 是 uClibc 發展的一個重要里程碑,發佈於 12 January 2005。主要更動有:新的 stdio 實作、Linux Kernel 2.6 支援、shared library loader 的改進、支援許多新的硬體架構,當然還有一堆的 bug-fixing。
從 ChangeLog 中可以發現,0.9.27 與之前的版本 "Binary Incompatible",所以如果要更新到 0.9.27 的話,務必將程式重新編譯,但這絕對是值得的事情。
KittenBox 現在的實作也轉換到 uClibc 了,code size 更容易控制,效能也有改善,等累積比較多成果時,再來作較正式的 benchmarking。
之前 TimHsu 與幾位熱情的 Hackers 共同創立 chroot.org,以 Network Security 為主軸,每月定期會有成員內部聚會,並適度分享成果,可以在 [Articles] 取得部分的簡報資料。除了讀書會形式外,也鼓勵各成員成立自己的專案計畫,如 [Projects] 就羅列一些公開的項目,我個人相當推崇 TimHsu (新婚新郎倌,不再是 "kids" 了,是「老小孩」) 與那群 Hackers 的熱情。
moto 學園聚集很多人氣,不僅是來自台灣的朋友,從論壇上我們也可以發現有香港,甚至是大陸的朋友分享經驗,這的確很不錯。去年辦的 Debian@Taiwan IRC Conference 也發現反應還不差,所以呢,是否可能舉辦針對特定主題的聚會或發表分享會呢?
我對聚會的舉辦沒有太大的想法,而我比較重視的是協同開發的部分,主要是著眼於國內事實上有許多熱情、有活力的朋友願意參與 Free/Open Source Softwares 的開發,但是如果只透過網路作溝通,顯得有些不足。如果可以,我的想法是先針對特定主題,比方說中文輸入法系統、國際間的輸入法架構主題先行分析並作資料分享,然後聚集成員思考,作腦力激盪,然後透過不定期的專案進度討論會,配合 issue tracker,讓專案進行能更順遂。這樣的聚會不見得只用一個專案開發,事實上是可以同時進行的,只要比重拿捏的當,不會有太大的衝突。
在我的個人首頁羅列一些我過去參與的計畫,其中有幾個項目是獨自完成,鮮少與其他開發者溝通與協調,這樣往往無疾而終,相當可惜。不管是參與哪個 Free/Open Source 計畫,都會累積一些經驗,這些經驗事實上遠比結果重要,如果能夠 serialization 起來,是相當的寶貴,對日後從事同樣工作項目的朋友來說,絕對可大幅降低學習的門檻。
越扯越遠了,簡單來說,希望在 2005 年,我可以號召到更多熱情的朋友共襄盛舉,並且彼此激勵,創造出更多有趣的專案 :-)
剛剛更新 XDirectFB 對 XFree86 的支援,cvs checkout 時間為 2005-01-17,並且順手修正幾個 imake 的問題,可以在此取得我整理的 patch,連同 sample configuration 都準備好了,所以只要取得 XFree86 cvs 再作 patch 後,打 make World 就可以順利建構完畢。
同樣的,有任何問題請提出討論,謝謝!
至於這個改過的 tarball 可以在此下載
接下來,我就提及修改的細節。NetFrontGTK 之所以無法顯示中文的原因是,當呼叫 gdk_fontset_load() 時,只載入了日文字型,所以只能顯示日文網頁。所以,如果能攔截 gdk_fontset_load() 的進入點,動態加入中文字型名稱,不就迎刃而解了?以前 XCIN 架構還不是很完備前,有個 XA (Xcin Anywhere) 的輔助程式,他的動作正是攔截特定的 X 呼叫,強迫採用 XA 內部可與 XCIN 溝通的動作。於是,我搬出 XA 的程式碼作為參考,主體的流程大致是:
/* Wrapped functions */
/*
* PROTOTYPE:
* GdkFont* gdk_fontset_load (const gchar *fontset_name);
* real_gdk_fontset_load 就是真正的 gdk_fontset_load() 進入點
*/
static GdkFont* (* real_gdk_fontset_load)(const gchar *fontset_name);
void load_all_syms(void *handle)
{
real_gdk_fontset_load = dlsym(handle, "gdk_fontset_load" );
}
#define XA_LIBX11 "libgdk-1.2.so.0"
void wrap_init()
{
static void *handle = dlopen(lib_path, RTLD_LAZY);
load_all_syms(handle);
}
/*
* 我們的 gdk_fontset_load() 實作
* 看到包含 "jisx0208" 的字型名稱,自動加入台北字型
*/
GdkFont* gdk_fontset_load(const gchar *fontset_name)
{
gchar new_fontset_name[BUF_SIZE];
wrap_init();
if (strstr(fontset_name, "jisx0208") != 0) {
sprintf(new_fontset_name,
"-taipei-ming-medium-r-normal-*-*-160-*-*-c-*-big5-0,"
"%s", fontset_name);
return real_gdk_fontset_load(new_fontset_name);
}
return real_gdk_fontset_load(fontset_name);
}
Happy Hacking!
rdesktop 是 UNIX 上著名的 MS-Windows Terminal Service (RDP) client,實作了 RDP v5 大部分的規格,幾乎市面上非 WinCE-based 的 Thin Client 大致都採用這個實作。RDesktop 的開發者 Jay Sorg 在 SourceForge.net 設立了一個專案,稱為 xrdp,目標就是建立 X11 下的 RDP server。
xrdp 的設計相當巧妙,xrdp 提供了 RDP server 的 frontend,可作為使用者登入,而一旦 session 認證完畢後,xrdp 會動態載入 backend,以目前的實作來說,就是 libvnc,透過設定檔來聯繫到既有的 VNC session 去。
正所謂「一圖勝千文」,這裡展示 xrdp 運作的效果:

標題為「192.168.0.30 - 遠端桌面」就是我透過 MS-Windows 內建的 RDP client 連線到 xrdp 的 session,而這個視窗背後就是 Linux server,在其中運作 xrdp。
正因為 open source,有許多特別的概念得以實現。
剛剛在 Slashdot 網站上看到這則新聞: Linux Live Gaming Project,非常有意思,桌面環境採用 KDE,並且內建 nVidia Linux driver,然後提供 TORCS、Wesnoth、SuperTux、TuxRacer,等等著名的 Linux 遊戲,最後放到 Knoppix 為基礎的 Live CD 上,我還沒抓下來玩,不過光看介紹就讓我很動心。
號召全世界 Free/Open Source hackers 參與的盛會 FOSDEM 2005 即將到來,先來看 FOSDEM 2005 Speaker 列表,我想去瞻仰 Alan Cox、 Matthias Ettrich,以及 Richard M Stallman 前輩,看來二月份去的時候一定有不少收穫 。
對了,到時候也會遇到其他 Free Java 的開發者,Kaffe Developer 之一的 Dalibor Topic 提供了一個免費住宿的消息,應該也是挺有趣的經驗,不過我現在比較擔心的是語文方面的問題。這幾天 irc 上很多討論,大家都興致高昂,好期待呢 :-)
今天去參加 Gentto@Taiwan User Party,並且分享 FreeDesktop.org 的嶄新發展與作了小小的展示,將 VIA 贈送的 mini-ITX 主機搭配 DirectFB 的效果展現出來。
幾個 GOT (Gentoo@Taiwan) 的重要成員大概都撥冗前來,如 GOT 執行長 Benny、ebuild 與文件組的 ccpz、GOTWN (GOT Weekly News) 的負責人 frid、熱心的 Visa、Sinder、FourDollars 、chuany、... 等等,也作了比較正式的簡報,對 GOT 運作提供了一個明確的方向與進度分享。
傍晚我們移駕到附近的麻辣鍋店,聊了很多有趣的議題,然後吃得很撐,真美味 :-)
跟大夥討論後,激發我一些靈感,這幾天應該會來作些實驗,驗證這些想法的可行性,再來作分析報告吧。
Linux rocks!
為了明天的GOT (Gentoo Taiwan) 使用者聚會,我花了一點時間設計一套簡報軟體,暫時命名為 "PointPoint"。這是修改自 DirectFB 的 sample code,並且設計一個 XML-based presentation 的壓縮格式 (有點類似 OpenOffice Impress),配合硬體加速,很多特效變為可能,而且 TrueType 的 rendering 也相當好,anti-alias font 的呈現比 MS-PowerPoint 還棒。
有了這麼好用的工具後 (老王賣瓜),我終於可以開始作簡報了,在此之前,秀張快照:
