哇,若你是個 Geek, 而且對 Linux, Python, Open Source Software 感興趣,你大約已經常常閱覽 Reddit.com,Reddit 是一個 Social bookmark 網站,使用族群較為偏熟悉技術的工程師。

就像所有的 Social Bookmark 一樣,首頁的排序與計算方式總是受到質疑與挑戰。於是 Reddit 乾脆就把整個網站的程式碼開放原碼,於是所有人都可以看到演算法與修改,也可以回饋建議、甚至 Patch。程式碼可於 code.reddit.com 下載。目前 Reddit 用的其他開放原始碼軟體還包含 Debian, lighttpd, HAProxy, PostgreSQL, Slony-I, 數個 Python libraries, Psychopg, pylons, Solr, Tomcat, Ganglia, Mercurial, Git, gettext, daemontoolsmemcached 等。

於是,好事者再也沒有理由質疑 Reddit 動了手腳。

reddit goes open source: message from the alien mascot

大約任何一個軟體開發者都可能碰到詭異的 undocument API 、噁爛的架構,或者碰到設計有問題的硬體,大約都會情不自盡的爆粗口。偶爾,你甚至會被其他莫名其妙的開發者惹火,例如未充分溝通就擅改程式碼包成套件的情境。

前些時候,quodlibet 的 Debian 套件維護者 Sebastian Dröge 因為誤解了 quodlibet 所使用 GStreamer 中的一個 API 相容問題,於是直接擅改程式碼中的一段,以便可以於新版的 GStreamer 中使用。但是這樣的行為卻未事前於 quodlibet 開發者 Joe Wreschnig 溝通,而那其實算是 GStreamer 的問題,並非 quodlibet 的錯誤。

於是,Joe Wreschnig 惱怒之下,身為一個上游開發者,就在 quodlibet 中也改了一段因應 GStreamer API 更改的措施。而且順便戳了 Sebastian Dröge 一下,要他去死一死吧。於是身為一個 Debian Developer,自然的解決方式當然是發一個 Bug Report。而且解決的討論很自然就往 DFSGDebian Policy 發展。所幸,最後 Tristan Seligmann 另外改了程式碼,並做了一份新的壓縮檔,算是解決了這個幼稚問題。

有趣的是 Joey Hess 在討論中,順便彙整了過去 Debian 修改紀錄中,曾經出現的粗口表,非常好笑,只能說 Software 真是 Sucks。XD

另外一個好玩的研究是 Vidar Holen 研究了 Linux 核心中有多少詛咒粗口,Linux kernel swear counts。我們可以拿程式碼中的髒話平均數量當作判斷品質的一個參考值嗎? :-p

Debian 的軟體套件原始碼通常包含幾個檔案,分別是 dsc, diff.gz 與 orig.tar.gz.

.dsc 是一個文字檔,包含軟體的基本資訊、如版本、維護者資訊與原始碼檔名與驗證碼 (checksums) 資訊 。.diff.gz 是壓縮過後的差異檔,由於軟體套件都必須針對不同的套件系統進行調整,以便符合套件系統的規矩。而 Debian 的方式是保留由上游所發行的原始碼壓縮檔,也就是 .orig.tar.gz 檔案,並將所有的修改另外儲存於 .diff.gz 檔,包含 Debian 包裝軟體時特有的 debian/* 檔案。

於是,對於使用者/原開發者而言,可以清楚的分辨哪些碼是被 Debian 軟體套件維護者所修改,在除錯或維護上都可以比較清楚的區分。若想了解 Debian 包裝軟體的細節不妨參考我的 Debianziation HOWTO

至於所有原生套件與非原生的套件的差別,則在於是否有 .diff 檔案。若你所包裝的軟體原始碼中本來就含有所有 Debian 所需要的 debian/rules, debian/* 檔案,你在產生 .deb 安裝檔時,套件包裝軟體就不會/無法生成差異檔,而只會生成 .tar.gz 檔案。

通常包裝成原生軟體套件 (Native Package) 的狀況是維護者手誤所造成,大約是忘記將原始檔名改成正確的 .orig.tar.gz 名稱。但有些時候,是軟體套件維護者刻意製成。但是除非該套件是針對 Debian 所開發,不可能被移植到其他套件系統上,否則不應該包裝成原生套件。

有些開發者原本就使用 Debian 作為開發平台,偶爾為了方便也會直接在發行的壓縮檔案中置入 debian/* 檔案。但是這是不應該的,Debian Mentors FAQ 裡面有稍加解釋,事實上在原始檔壓縮檔中放入 debian/* 檔案,很容易造成誤解與困擾,特別是需要追蹤修改紀錄的狀況。另外還有如下的原因

  1. 其他套件系統沒有理由想要、需要 Debian 的特定東西。
  2. 所有為 Debian 所作的的修改,都會造成一次版本提交。結果莫名的影響其他套件系統都需要更新升級。
  3. 不只是 Debian 使用 debian/,其他延伸套件系統可能也需要修改其中檔案才能運作。否則要則他們必須修改原本的原始碼壓縮檔,或者以一個 patch 來修正你的 debian/ 檔案。
  4. 當有安全問題或其他因素需要作 NMUs 時,這個 debian 目錄會造成其他人難以維護追蹤的困擾。

與 Debian Developer 討論之得。

還記得我寫過一篇「來亂者,去死!!」,詳細分析過戳樂 (Troller)。這裡有一個典型的 blog, Linux Hater’s Blog,言詞辛辣、諷刺,有些論點我無法同意,有些則犀利的點出問題。

如果你對 Linux 的各方面軟體開發、應用、文化,都具備一定程度的認知。你讀起此部落格肯定就像是讀幽默短文一樣哈哈大笑 (但別過度反應了,這可以算 Slashdot 上的長篇版機車留言)。

以下幾篇是我個人覺得夠諷刺,或值得思考的議題。

如果你要當一個 Troller, 至少也試著寫些具備觀點的文章。當個直言的真小人,比言之無物的偽君子實在來著有格調多了。

順便提一下排名第二的音樂下載軟體 – ezPeer+。話說 ezPeer+ 其實為了 Linux 平台開了一版介面 ezPeer+ for Linux 1.0,是使用 XULRunnermplayer 等軟體元件開發。

後端直接呼叫 mplayer 接取線上串流,會同時執行前端介面與後端播放軟體。偶爾會因為軟體處理不當,造成使用者按下暫停時,系統依然於背景播放音樂。稍微有點惱人的小問題。介面上也未提供進階選項,如調整快取大小等,我在 Seednet 上聽取音樂有點停頓。

此外大約是為了 mplayer 拿掉了 Windows Media DRM 功能,目前並沒有提供下載的功能,只能聽線上串流音樂,不過這應該已經可以滿足很多想在 Linux 上享受音樂的朋友。

可惜的是 ezPeer+ for Linux 目前只提供給 ASUS EeePC 的使用者使用,並未提供下載。若你購買了 EeePC,其實可以透過 dpkg-repack 重新將程式包成 .deb 檔案後丟到其他的 Debian/Ubuntu 上執行。

我說,你們這些多媒體娛樂資訊商,快照顧照顧我們卑微的 Linux/Unix 使用者吧。

上次用 Wine 1.0-rc1 測試了一下 KKBOX,由於上次測試時使用 Wine 實做的 ShDocVwMsHtml 等元件。由於無法透過內嵌的網頁登入,因此大部份某些功能無法順利使用。

但你若先將 Microsoft Media Player 與 Microsoft Internet Explorer 裝進 Wine 中,就可以順利執行起 KKBOX 了!安裝過的過程十分繁複,因此我其實是透過 wine-doorsIEs4Linux 才安裝成功。由於 IEs4Linux 預設會安裝一個獨立的 wine 系統,並把軟體預設安裝 $HOME/.ies4linux,因此必須稍加修改 IEs4Linux,以便強迫它安裝到正確的 wine 目錄。然後再重新安裝執行一次 KKBOX 即可成功啟動啦。

使用狀況倒是沒有甚麼問題,可聽取線上串流,離線下載由於尚未購買月卡,還無法測試。目前的一點點小問題是,左邊的選單還是亂碼,一般下拉式選單倒是沒有問題。此外嵌於軟體首頁的 Flash-based MV 會有嚴重閃爍的問題。

這是在 wine 1.0-rc1 與 wine 1.0-rc2 上測試。待有善心人士整理 Step by Step HOWTO. 或者乾脆整理成單鍵安裝程式吧。