January 4, 2010

2010 年免費課程:X Window System 全面進攻

X Window System 自 1984 年現身後,這 25 年的時間見證資訊科技產業的典範轉移,諸如工作站與個人電腦的消長、網路科技的通行、高品質的繪圖需求、普及運算等等,而 2004 年初,X.org/FreeDesktop 社群正式與封閉的 XFree86 core team 決裂後,一度死寂的 X Window System 有如浴火鳳凰般,獲得重生,並以開放原始碼模式,廣泛接受各方提案與匯集成果,頗振奮人心。筆者於 2005 年的演講 [綜觀 X Window System 新發展] (PDF) 中,探討若干背景概念與當時 FreeDesktop 的開發方向,而近五年後回顧,又是新氣象,是此,筆者決定在 2010 年分享名為「X Window System 全面進攻」的新課程,預期能全面性探討 X Window System (以下簡稱 "X") 與相關技術的概況。

過去我們很難想像,運作於高不可攀的 UNIX 工作站上面的 X Window System,如今竟重現於咫尺,甚至就在褲檔裡頭,試看 Nokia 的智慧型手機 [N900],本身就建構於 Linux 與其上的 [Maemo] 環境,而後者就以 X 搭配許多高品質的自由軟體作基礎。另一個案例就是炒得火熱的 [Chrome OS],這個由 Google 主打的 netbook 系統,雖然不知道市場反應,但其設計遵循 Xorg/FreeDesktop 的架構,也是 X,這兩者都說明了 X 的彈性與可靠度,甚至硬體廠商如 Intel 還延攬若干 X 開發的重要人物、買下專門作 X 嵌入式開發的 OpenedHand 公司,儼然就是對 Linux 核心貢獻外,另一關鍵指標。

本議程的設計,參考筆者的《揭開 X Window System 神秘面紗》撰書計畫的部份內容,預期有以下子題目:
  • 作為指標性的自由軟體,X Window System 的歷史背景
  • 以實際的產品與專案,探討 X 到底有什麼能耐,已非昔日阿蒙
  • X 核心概念與相關的 X Extensions
  • 拋開包袱的開發模式,探討 XCB 與 Xorg X server 的新突破
  • 針對 2D/3D 的硬體加速模型
  • 知名的 Toolkit 與應用概況
就應用面來說,會提及類似 [Clutter -- 釋放 OpenGL 威力的新途徑] 與 [許我們一個 Keroro 的桌面] 等演講的技術性目,也會涵蓋 [OpenGL/ES 自由軟體實做] 演講所提及的嶄新突破,不只在 X 層面,Linux 核心也需引入新的技術。在 [0xlab],甚至有強者 olv 全職投入 Linux / Android 3D 的開發,將成果直接整合到 [Mesa] 專案中,希望在這個議程中,也會提及這部份的原理及實務。自 2006 年,PCMan 與筆者共同創立 [LXDE] 專案後,現已是活躍且廣泛採納的自由軟體項目,過程中,我們也跟 X 底層、Gtk+ 內部設計,以至於 Linux 2.6 新增的機制奮鬥,可就不是單純使用 X Extensions 即可,往往得深入思考 [非同步 Xlib 處理機制] 的議題。

2006 年初,撰書過程需要驗證想法,就著手撰寫小型的 window manager,當時做了 [ToyWM 的建構紀錄],雖有初步成果,還是不堪使用。今年元旦在台北新店住處,重新整理過以前的程式碼,並建立小型的 X Toolkit,協助開發,目前的成果如下圖:

簡要的特徵描述:
  • 作到恰好滿足 LXDE 相關元件所需,保持獨立運作,執行檔約 50 KB (i386),不需要設定檔即可執行,只有 Xlib 的相依性
  • 支援 ICCCM 與 EWMH 裡頭的常見項目
  • 透過 Xft 描繪標題列字形,可支援多國語文
  • 提供基本的佈景主題支援 (目前仍是寫死在 header 檔案中)
  • 提供典型的按鍵對應,如 Alt-F4 作視窗關閉
  • 支援 FreeDesktop 的 Startup Notification
名稱暫定為 WinLight Window Manager,相信探討其設計原理,對「X Window System 全面進攻」議程來說,應可讓與會者體驗到,單純的滑鼠點按事件背後,所涉及 X protocol 的微妙變化與 X 主體的狀態移轉,又是充滿了多少技術細節,且讓我們尋幽訪勝吧。

與稍早提到的「親手打造 ARM 平台的 Boot Loader] 與 [以 GDB 重新學習 C 語言程式設計] 課程一般,這個新議程也是免費、開放參加的,期待您的指教與討論,預計在今年三月公佈議程相關的資訊,謝謝!
由 jserv 發表於 11:35 PM | 迴響 (0)