The software is updated at 2010/10/05.

It’s nice to see that people still like to use the small piece of software which been wrote for 20 months without updated. Thanks for feedback from

  • Uwe, g021030 (at) gmx.net
  • Keith Refson, K.Refson (at) rl.ac.uk

And the others how left the messages on the blog, especially patch from Hank Hampel and encouragement from Dick Dunbar. 😉

The new release is now handling in-line attachment as well, and it’s autotoolized and debianized.

You can download the tarball and deb file for Debian sid from

evolution-remove-attachments_0.0.2.tar.gz
evolution-remove-attachments_0.0.2_i386.deb
evolution-remove-attachments_0.0.2.dsc
evolution-remove-attachments_0.0.2_i386.changes

They are tested on Debian Sid with Evolution 2.22.

標題原為「何能使自由軟體計畫存活於麻煩人物之中?」,經 jserv 建議,改為「來亂者,去死!!」

這其實是去年就聽過的主題,不過近來又再次接觸到所謂「麻煩人物」的攻訐,因此特意整理此段演講分享社群中人參考。也作為內省之用。

基本上,這麼一些人長年以來到處與人唱反調,

  • 若你辦了協會,他會質疑你立意不佳。
  • 若你舉辦了票選活動,他會質疑你好大喜功。
  • 若你參加了票選活動,他會說你灌票,貪圖虛名。
  • 若你不幸被安了社群職位,他會說你沽名釣譽。
  • 若你有幸取了企業或政府資源贊助,他會說你分贓利益。
  • 若你剛刻了一個新軟體,他會說架構全錯,應該依照他的先知卓見重寫。
  • 若你刻了個好用的軟體,他說嫌棄功能不全。該用其他設計健全的軟體。
  • 若你失敗的經營了軟體社群,他會理所當然要你好好反省並影射你無能。
  • 若你成功的經營了新軟體社群,他會批評你政治不正確,號招成員出走。
  • 若你….他會….

可能是透過網路溝通的誤解或短時間內的情緒問題或過度自負或天生心理殘障或後天傷害悲觀或者根本是憤世嫉俗而造成上述的行為。

大體來說,這些行為是有益於社群發展。但問題是這群人基本上拒絕合作。他們願意抱怨,不願貢獻,很多時候根本是個戳樂 (Troller),他們以戳你為樂。你要跟他們客觀的分析問題,他們會很主觀的訴求於情緒。你誠心的想聽他們的意見,他們卻說不出個所以然。你邀他們出席聚會,他們會出污泥不染的拒絕參與。你邀他們主辦,他們會說這不是他們的使命。

到頭來,你只是自找罪受的徒勞無功。你甚至無法從討論中找出一點點建設性的意義。於是、於是你得好好的研究一個方法來辨識、管理他們。

這段標題為 “How Open Source Projects Survive Poisonous People” 的演講是由 Ben Collins-SussmanBrian W. FitzpatrickGoogle Tech Talk 中所分享。Ben Collins Sussman 與 Brian Fitzpatick 目前都是 Google 的工程師,兩位長久以來都致力於開發 subversion 計畫。

這個主題的基礎參考書是《生產開放原碼軟體,如何經營一個成功的自由軟體計畫》 (Producing Open Source Software, How to Run a Successful Free Software Project)

若你並非自由軟體開發者也無所謂,讀完整篇文章,你會發現這裡的情境適用於普遍的狀態,包含企業、NGO、社區、社群等。因為,到處都有這樣的人存在。甚至,你也可以找到類似的商業書籍中有相似的處理建議,像是 《成功開發員工潛能的24堂課》(Dealing with People You Can’t Stand)、《搞定頭痛人物》(How to Deal With Difficult People)等書。

生產開放原碼軟體,如何經營一個成功的自由軟體計畫


身為一個想認真瞭解開放原碼自由軟體的讀者,你肯定已經讀了 Eric S. Raymond教堂與市集,因而學習了所謂市集模式為你的軟體計畫帶了甚麼樣的好處,你大約也從書中習得幾個重要的準則,像是擁有使用者、儘早發表、頻繁發表等等。

不過,教堂與市集中並沒有告訴你該如何經營一個自由軟體計畫。很快你會發現,經營一個自由軟體計畫並沒有你想像中的簡單,除了各式各樣的術語文化,你還得學會經營社群與「管理」你的使用者們。

這本由 Karl Fogel 所著作的 《生產開放原碼軟體,如何經營一個成功的自由軟體計畫》 傳授了所有相關的眉角 (訣竅),主題廣泛的含括了

  • 啟動一個自由軟體專案,包含選擇專案名稱、定義計畫聲明書、計畫之資訊提供與敘述。
  • 技術基礎建設 (溝通管道之郵遞論壇、IRC、Wiki、版本控制系統、臭蟲追蹤系統)
  • 軟體專案計畫之社交行為與政治方法。
  • 資金籌措方式。
  • 溝通技巧,學習對話調性、辨識無禮/理的人、應對難搞的人、運營成長的社群。
  • 軟體套件封裝、發表、分支管理等。
  • 義工管理。
  • 授權、版權與專利等問題。

這本書非常適合剛想踏入自由軟體開發世界的開發者,也適宜任何一位想瞭解如何經營一個自由軟體計畫的讀者。

溝通

Ben Collins Sussman 與 Brian Fitzpatick 的演講主要是著重在《生產開放原碼軟體,如何經營一個成功的自由軟體計畫》一書第六章的【溝通】。重點在於自由軟體計畫中,該如何辨識所謂「缺德人士」,以及如何驅離他們。

之所以需要遠離缺德鬼的原因在於,自由軟體計畫發展最重要、最有價值的唯一資源是專注參與的義工們。任何一位無恥之徒的行為都可能污染快樂開發社群中的空氣,造成計畫中的義工們分心,甚至放棄參與計畫。

然而任何一個自由軟體計畫都會碰到這樣的人。原因在於領導開發者或協調者,總是必須在權宜的狀態下作抉擇。你得抉擇分支的目標、里程碑目標、修改建議的取捨。麻煩的是,凡是決定總無法令每個人滿意。因此你得準備好接受社群的其他人所給你的挑戰或批評。

然而,大部分的情況下,社群其他成員總是可以透過合理的溝通妥協於主協調者的決策。然而,有另外一群人的反應則不是如此。這群人就是演講中討論的頭痛人物。

頭痛人物

這裡所說的頭痛人物泛指任何使軟體開發受挫的人。若要評估一個自由軟體計畫的活躍度,我們通常會計算所謂的公車指數 (Bus factor),Bus factor 意指重要開發成員的多寡,指數意義在於萬一火車頭成員被公車撞死,計畫持續的機會有多大。

影響公車係數的變因很多,可能是因為工作內容改變、生活形式的改變、談了戀愛、失戀、生了小孩等等。或者是浪費時間在回應頭痛人物,或者被缺德鬼激怒,因此分心而降低生產力。

最常出現的頭痛人物就是日常即興加入的新手,他們帶著全部大寫或是 ‘root’ 的暱稱闖進 IRC 頻道或論壇,毫無禮貌的要求支援或宣告訴求。

或者是過度熱心的參與者,在演講中,提到一個案例。在 Subversion 的發展期間,大約是 2003 年的最後幾個月,有一位人士回覆每一篇文章,以至於他在當下的排名在頭六名中,然而其他五名都是主要的開發者,而他純粹發信,如此行為嚴重影響其他開發者的產能。這當然也算是一種麻煩人物。

但頭痛人物並不見得是新手,也可能是資深的社群人士,甚至是德高望重的前輩。既然軟體由人寫成,不可避免的總會碰到缺德難搞的人事問題,也並不是成功軟體計畫的主開發者/協調者就是一個容易相處的人,例如 Linus 長久以來就讓 Gnome 計畫很難過

但我們必須說,這樣的行為是非常不道德的。

你要知道,開放原碼社群是基於大家對名譽的重視所驅動,隱性的名譽機製為社群中的人提供了一種微妙的壓力系統,驅使人們往正向的方面發展。特別是開源軟體社群名譽壓力系統也拉引了好管閒事之徒的興趣,顯然破壞他人的名譽也是一種賺取名譽的方式。

身為一位自由軟體開發計畫的成員,你應該小心的保護專案的產能,以免計畫被老鼠屎拖累。

辨識

麻煩人物的通常有幾個主要的特徵,你可以依據這些特徵來辨識

  • 惡毒的人
    • 潑冷水、污辱現狀
    • 憤怒的索求
    • 散佈黑函
    • 刻意激怒他人
    • 偏執狂似陰謀論者、拚命指責別人
  • 自負
    • 拒絕承認他人的意見。
    • 以偏概全的主張。
    • 重啟已達成共識的話題。
  • 拒絕合作
    • 很愛抱怨,但不願意修正任何問題。
    • 不願意討論解決問題的構思。

有些人會帶著惡毒的心態踏進你的計畫裡面。他們可能會潑你冷水,將你的成就嫌棄的一文不值。另外一些人,認為你理所當然要提供服務,無論是技術支援或者是活動舉辦,你應該要立即妥善的滿足他的需求。有些人會散佈黑函甚至偏執的在認為計畫後面有某種陰謀,或者刻意的激怒他人。

另外有些人則是過度自負,認為他自己的主張才是正確的,相信任何事情都有正義是非,而他們自然永遠都是正義那一方。最麻煩的是他們以偏概全的訴求,往往會綁架專案的發展方向。或者他們會過份在意每一項討論,老是重提那些已經達成共識的老話題。

另外一些人則純粹拒絕合作,他們只是不希望看到你成功。因此會帶著負面的態度慢慢的污染你周圍的空氣,直到它發出惡臭,鬧走你的成員為止。

處置

你可以發現,其實有許多麻煩似乎都是溝通的問題。事實也是,由於開放原碼社群的對話討論一向都是在網路上進行,偶爾才有面對面的接觸。誤解似乎是多少難以避免的問題。例如,有些文化避免難堪公開的指責,有些文化則痛恨私下批評,你似乎很難判斷陌生人喜歡那一種溝通方式,很容易就會觸怒對方

然而有幾個準則是通用於任何處置方式的

  • 重點 (Comprehead)
    • 保持注意力與專注力 (preserve attention and focus)
  • 防禦 (Fortify)
    • 建立一個建康的社群 (Build a healthy community)
  • 辨識 (Identify )
    • 偵測搬弄是非的跡象 (Look for tell-tale signs)
  • 消毒 (Disinfect)
    • 保持鎮靜與自我立場 (Maintain calm and stand your ground)

在實務上,有幾個事項是在演講中所分享的。其中之一是不要把自己的名字擺進程式碼裡面,因為這會造成自尊膨脹的問題,這似乎是宣示此為你的地盤,外人誤觸的禁忌,這種習慣會妨礙整體計畫的發展與自由,應該有所避免。

此外,應該避免私下溝通。私下溝通是一件很容易使用的政治工具,透過私下溝通你總是可以比較輕易的做下決策。然而,這樣的行為卻排擠其他人的意見與想法。計畫成長後,你總會不停的為新來的人解釋當初的決策。總之是一種得不償失的手段。

另外則是郵遞論壇的禮儀、重啟舊議題等。特別容易發生於敵對的議題上,偶爾,你會發現有一人不停的重開那些反對他意見的對話。他的目的大約在於持續的張貼再張貼,直到對方疲累放棄,而獲得最終毫無意義的勝利感!

通常你可以很快速的辨識出這種戳樂毒瘤,原則上只要你保持情緒,客觀的進行討論通常可以達到有建設性的具體結論。然而,更多時候,戳樂會惱羞成怒的激動不已,甚至出口傷人。這種情況下,如果沒有提早為社群建立一個健康的政策防護機制,你也只能被動的請社群公斷啦。

雖然這篇文章是為了避免麻煩人物所寫,但是有時候這些人性問題也會出現在社群經營者身上。根據 Rober Kaye 的意見,無論你是參與者或經營者,都必須具備同理心,以及以下的態度,才能在社群中廣受歡迎

  • 禮貌 (Politeness)
  • 尊重 (Respect)
  • 互信 (Trust)
  • 謙卑 (Humility)

缺乏以上態度,你也可能會犯了過度自負的毛病,而做了不受社群歡迎的錯事呢。這篇短文大約四千字主要參考由 Ben Collins-SussmanBrian W. Fitzpatric 的演講 – “How Open Source Projects Survive Poisonous People” 以及 由 Karl Fogel 所著作的 《生產開放原碼軟體,如何經營一個成功的自由軟體計畫》 一文。敬請收聽以下演講

這個月底,將是 Wine 計畫成立十五週年!Wine 也將終於在十五年後釋出 1.0 版 !!

這兩三年,由於 Google 的積極參與 (Google 的其中一個產品 Picasa for Linux 是基於 Wine 所開發),許多程式如 Adobe PhotoshopAdobe Flash 都已經可以在 Wine 上面成功執行,相容性已經有大幅度的改善

因此我也試著再度玩起 Wine,試著裝了 wine, wine-doorsIEs4Linux,幾個主要的軟體、元件如 DCOM 98, MSXML 3/4, GDIPlus, Visual C++ runtime library 6, Internet Explorer, Micrsoft Media Player 9 等倒是沒有問題。

前些時候裝了 Sling Player, 以及 Macromedia 的 Dreamweaver 8, Fireworks 8 (可透過 winedoors 直接安裝) 大致上也可以運作。

接下來又測試一些台灣使用者常用的 Windows 程式,如 Foxy, GOGOBOX 與 KKBOX 等,則碰了些無法使用的障礙。雖說安裝都沒有問題。

首先是 Foxy (請別作道德勸說,這純粹是測試相容性),安裝時提示畫面,中文會顯示亂碼,但是可以成功的安裝,且系統也會自動設定啟動選單。但是啟動後,系統會出現以下錯誤訊息:

Unhandled exception: page fault on read access to 0x00000020 in 32-bit code (0x00422cb4).

過了啟動畫面後,無論如何都無法進到主程式,只好先回報到類似的問題上,稍後再求解。

另外一個測試的軟體是 GOGOBOX,安裝也沒有任何問題,也可以啟動主程式後登入系統。也可以進行「累積里程」的行為。但是 GOGOBOX 的使用是先從網頁上下載安裝檔,然後在點選網頁上得連結時,透過 ActiveX 元件將下載網址傳給主程式。

在進行點選連結時,Internet Explorer 可以叫起 GOGOBOX 主程式,但是軟體會不停的提示「GOGOBOX 檔案傳送管理員沒有設置好,或是新版本已問世。要現在設置/更新嗎?」,卻始終無法正確的把下載檔案傳進 GOGOBOX 主程式。殘念。

另外一個測試的軟體則是 KKBOX,安裝的過程中也沒有異狀,執行後可以進到主程式,雖說選單是亂碼。但是由於無法退出軟體啟動時的 Panel,也就是中間的「註冊」、「登入」提示畫面。那個畫面是嵌入一個瀏覽器元件,理論上按下「註冊」,系統應該開啟一個註冊網頁,若按下登入,系統應該提示一個登入對話視窗。

然而,此時按下註冊或其他網址,軟體毫無反應。應該是 shdocvw 未實做完全的緣故。若按下「登入」畫面,軟體則出現 “Unhandled exception: page fault on read access to 0x0100bbf8″,然後退出視窗。

要讓這些在中文微軟視窗使用者流行的軟體在 Linux 上順暢執行,還有許多功夫要下阿。

因為一個兩年前就犯下的愚蠢行為所造成的安全問題 DSA-1571-1 / CVE-2008-0166 ,你必須儘快更新所有曾經在 Debian 上透過 libssl0.9.8 (0.9.8c-1 或之後版本) 所產生的金鑰。

這個問題是當初為了修正透過 valgrind 檢查記憶體時所產生的錯誤訊息,因此拿掉了程式碼中的一行,該行恰巧是用以設定產生亂數 (RNG) 的種子,如此一來造成所有透過 libssl 產生亂數的密碼都是可以被預測的。結果就是加密金鑰很容易被猜到。修正方式就是再加回該行。不過此次更新也一併修正了 CVE-2007-3108CVE-2007-4995,因此應該直接升級到新版 openssl 較為保險。

影響的系統包含所有 Debian 為基礎的系統,如 Ubuntu (USN-612-1) 等。影響的軟體範圍包含所有的使用 libssl0.9.8 產生的金鑰。若你使用 etch 請確認 openssl 版本高於 0.9.8c-4etch3, sid 與 lenny 則是 0.9.8g-9

在更新完 openssl 後,你應該重新產生或轉換舊的弱金鑰 (weak keys)。首當其衝的是 ssh ,因為是最容易被攻擊而取得系統權限的軟體。Debian 與 Ubuntu 各提供工具以供用戶自行檢查。

Ubuntu 提供的一個小工具 ssh-vulnkey 可以幫你檢查單機上的 ssh user key 與 host key 是否是有風險。此工具可於新版的 openssh-client 取得,ssh-vulnkey 目前只在 Ubuntu 的套件庫中。

ssh-vulnkey 是一個 以 C 開發的 native program,速度比 dowkd.pl 快上一些。你可以於 Debian 或 Ubuntu 新版的 openssh-client 取得。(Debian 上的 openssh 版本於 1:4.3p2-9etch1 之後)

Debian 使用者可以使用 Florian Weimer 所開發的 dowkd.pl,載點位於

下載之後,請透過以下指令驗證檔案無誤

$ gpg --recv-keys 02D524BE
gpg: requesting key 02D524BE from hkp server pgp.mit.edu
gpg: key 02D524BE: duplicated user ID detected - merged
gpg: key 02D524BE: public key "Florian Weimer (HIGH SECURITY KEY) " imported
gpg: public key 5E13C7DB is 715511958 seconds newer than the signature
gpg: 3 marginal(s) needed, 1 complete(s) needed, classic trust model
gpg: depth: 0  valid:   2  signed:  38  trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: depth: 1  valid:  38  signed:  28  trust: 6-, 12q, 0n, 6m, 14f, 0u
gpg: depth: 2  valid:  14  signed:  14  trust: 2-, 4q, 0n, 2m, 6f, 0u
gpg: depth: 3  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 2f, 0u
gpg: next trustdb check due at 2008-12-13gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
$ gpg --verify dowkd.pl.gz.asc
gpg: Signature made Tue May 13 22:09:19 2008 CST using RSA key ID 02D524BE
gpg: Good signature from "Florian Weimer (HIGH SECURITY KEY) "
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: C8D3 D9CF FA9E 7056 3F32  FA54 BF7B FF04 02D5 24BE

確認檔案正確後,將其解開

$ gunzip dowkd.pl.gz

指令的用法很簡單,它可以用來檢查金鑰檔、host keys、user keys.

$ perl dowkd.pl help
usage: dowkd.pl [OPTIONS...] COMMAND [ARGUMENTS...]

COMMAND is one of:

  file: examine files on the command line for weak keys
  host: examine the specified hosts for weak SSH keys
  user: examine user SSH keys for weakness; examine all users if no
        users are given
  help: show this help screen

OPTIONS is one pf:

  -c FILE: set the database cache file name (default: dowkd.db)

dowkd currently handles OpenSSH host and user keys and OpenVPN shared
secrets, as long as they use default key lengths and have been created
on a little-endian architecture (such as i386 or amd64).  Note that
the blacklist by dowkd may be incomplete; it is only intended as a
quick check.
$ perl dowkd.pl host kalug.linux.org.tw
# kalug.linux.org.tw SSH-2.0-OpenSSH_4.3p2 Debian-9
# kalug.linux.org.tw SSH-2.0-OpenSSH_4.3p2 Debian-9
kalug.linux.org.tw: weak key
kalug.linux.org.tw: weak key
$ perl dowkd.pl user
/home/chihchun/.ssh/id_rsa.pub:1: weak key

若你發現掃描結果中有 “weak key” 字樣,應該儘速重新產生該金鑰。

對於 Host Key 的作法是在該伺服器上執行以下指令,如此便會產生新的 host keys

# rm /etc/ssh/ssh_host_*
# dpkg-reconfigure openssh-server

若 authorized_keys 或 private keys 為弱金鑰,則請刪除他們,升級 openssh 至新版後,再重新以 ssh-keygen 產生金鑰。若你知道怎麼使用 authorized_keys,大約就知道如何重新產生 ssh keys,細節不詳述。

以上是 ssh keys 處理方式,至於其它影響的軟體,請持續參考 http://www.debian.org/security/key-rollover/ 中的說明進行設定。

Ok, 我們看過了 Mobile Device 上應用 accelerometer technology 的應用,若是我們想實做同樣的技術在 Laptop, UMPC 或是 MID 上該如何作 ?

在 Thinkpad 上有個特色功能稱為 Active Protection System,基本上就是利用偵測加速度來達到保護硬碟的功能。透過這個功能,我們可以用來偵測筆記型電腦的傾斜狀態,在 Linux 上可以透過 HDAPS 驅動硬體並取得資料。

你可以透過 Yoni Rom, Patrick Kilian 與 Robert Love 所寫的 hdaps-gl 來動態顯示筆記型電腦的傾斜狀態。

雖說 Thinkpad 的加速度偵測只有二維 (BTW, 我的 Thinkpad X60 不知為什麼 X 軸, Y 軸是相反地),但是也足以玩很多把戲,像是防盜系統 (有人碰的電腦就自爆硬碟?!) 藉由搖晃切換桌面,或者像是 iPhone 一樣旋轉畫面為橫向、直向。甚至拿來玩滾小球遊戲 neverball 、或者直接把 X60 變成絕地武士的光劍!上回 Tatsuhiko Miyagawa 來台灣的時候也見過它展示透過 Thinkpad 使用 Google Maps 的 lighting talk,非常逗趣。

若是要在其他系統上實做這樣的功能,恐怕是得外加 acceleration sensing device 才行。極強的 hacker Till Harbaum (Twonky, NanoVM, LCD2USB, BlueZ 等開發者) 自己做了兩個版本的 USB TiltStick,可以分別偵測二維與三維的加速度。透過 USB 介面,可以接到 Nokia N8XX 系列設備或是個人電腦上,同時他也將軟體與驅動程式移植到 Maemo 平台。如此就可以在 Maemo 上玩些 Enigma 的小遊戲。

非常有趣是吧,雖然 Till Harbaum 提供了完整的電路圖,不過要自己找到元件跟焊接成功對我這種電子大外行實在困難。所以比較簡單的方法大概是直接買像是 Phidgets 提供的 Accelerometer 元件 了吧。:-)

2008 開放技術台灣高峰會 (Open Tech Summit Taiwan 2008) 預計於本週舉辦,根據目前的出席人員列表,有幾位我深為敬重的開發者會來台灣 (sort by letters)

當然國內的活躍開發者如 Jserv, pcman 等人也會出席。會議對話深度精彩可期,不過大約也需要足夠的背景知識與語言能力才能跟的上議程,希望不至於曲高和寡

主辦單位是 社團法人台灣數位文化協會 (ADCT)以及開放硬體策進會(Open Hardware Initiative)主辦。籌辦團隊是 Marek Lindner 等人,主題是 “Community” (社群)。希望可以透過此會議凝聚「社群」,主辦人希望開放給任何人對社群感興趣的人參與並加入社群。這基本上是一句廢話。根據我的認知、社群是

持有相同興趣的一群人 (group of people of the same religion, race, occupation, etc, or with shared interests) 摘至 21世紀英漢漢英雙向詞典

因此你大約對開放技術 (包含硬體、軟體) 感興趣或是 Open Mind 的人才會想加入。至於整個活動從頭到尾其實都頗令人一頭霧水,雖說目標是創造出一個合作無間或互補的環境,但是若你不認識相關主辦人,根本連報名聯絡的方式都不知道(現在已經更新了),更不用談「貢獻」。

何況社群原本就是政治詞,即使是一群人也是相同興趣但不同的目標的小圈圈出現,談「這次活動和以往國內活動最大不一樣的地方,是每個參與的人都盡自己的力量去貢獻」等共同分攤云云、開放社群的觀點未免太唱高調,過度貶低台灣本土社群。難道國內的社群運動都是單一組織人員用錢砸出來,毋需靠其他人的共同協助嗎?

主辦人之一的 Fred 寫了一篇 彼此需要的 Open Tech Summit Taiwan 2008, 開頭就為了鞭批台灣開放原碼社群的權力鬥爭亂象,痛斥國內冒用 “Open Source” 之名的邪惡廠商。不過本活動主要贊助者是華碩,也是利用自由軟體賺過水獲利的廠商之一阿。如此、如此的宣傳方式實在過度政治化。有點反胃。

只能說, Be Open Mind.

References: