開放與利他

我是開放原始碼軟體的支持者。從心理學的觀點來看,軟體開發者將自己的智慧結晶、也就是原始碼與他人分享,是一種利他行為(altruism)。人為什麼會利他?社會心理學家告訴我們,是因為對交互利他(reciprocal altruism)的期待。我們不顧自身利益去幫助別人,心中期待的是別人(未必是我們直接幫助的人)以後也會對我們作出利他行為。換句話說,長遠來看,利他行為其實是一件利己的事。我對開放原始碼軟體的支持,正是基於這樣的親身體驗。

就從 Google 瀏覽器(Chrome)談起吧!在 Google 瀏覽器的工具列選擇「關於 Google 瀏覽器」,會跳出一個小視窗說「『Google 瀏覽器』的開發仰賴 Chromium 開放原始碼計劃與其他開放原始碼軟體的協助才得以完成」。點擊「開放原始碼軟體」的連結,展開「中日文詞頻列表(Chinese and Japanese word frequency list)」,會列出好幾個套件的授權文件。其中,libtabe 的授權文件中就有我的名字。我的名字會出現在那裡,是因為 12 年前(1996 年)分享了一些學習經驗。

當年的中文資訊環境不像現在這麼發達,甚至連完全公開的中文詞庫(含詞列表、詞頻、發音、詞類等資訊)都沒有。要跟學術機構付費簽約取得的當然有,但金額不低且使用上有很多限制。我在網路上花了很多時間搜尋,把當時可以找到的詞列表統整成單一檔案,然後開放下載。我的期待是,其他有興趣的人能夠利用這個列表逐漸建立一個完整開放的詞庫,讓以後的人不會再經歷沒有開放詞庫可用的痛苦。

詞庫對於中文資訊處理很重要,因為中文的句子在詞間沒有空白分隔,有詞庫才能把句子中的詞認出來。我當時很想學習自動斷詞程式的運作,但程式寫作能力很差(現在也沒好到哪去),而且網路上又找不到可以參考的。於是花了很多時間在圖書館讀了很多書,然後再花了很多時間用拙劣的程式寫作能力寫了一個中文自動斷詞的程式。程式寫得很爛,但還是把它公開了。我的想法很單純:對於跟我有類似需求的人來說,有爛程式可用、有爛程式碼可看,總比沒有好。

當時負責 libtabe 計畫(Linux 環境下的智慧型注音輸入法模組)的蕭百翔注意到這個斷詞程式,覺得對於輸入法的開發有幫助。他把我的斷詞程式使用的幾個演算法重新寫進輸入法模組中,也採用了我原本的詞庫。此外,他也利用一些語料計算出我期待已久的、寶貴的詞頻統計。

這個過程讓我正式和台灣的 Linux 中文社群有所連結,也認識了許多朋友。這些具有不同專業背景的朋友,帶給我許多啟發。例如,現在 funP 的技術顧問葉秉哲,當年就在我寫新版的斷詞程式時給了許多建議,讓我獲益良多。說句題外話,我們其實在 1993 年就在網路上認識,但直到 2007 年才第一次見面。

12 年就這樣過去了。Libtabe 已停止開發,但 Linux 社群也有了更好的輸入法。我的程式沒人用了,但當年的想法好像還是持續對社群有些幫助。從這篇「Chinese Full-text Searching」得知,現在 Ruby 社群使用的幾種中文斷詞系統所採用的演算法還是我當年的組合。當年使用的四個演算法其實只有一個是我自己原創的,但這四個演算法是絞盡腦汁組合的:它們只需要詞列表字頻表就可以運作。我不是不想用其他的資訊幫助運算,但 12 年前能公開取得的資源也就只有那些了。

將個人學習的經驗用很單純的「希望有人能從中獲益」的心態與人分享,換來世界各地朋友的幫助,也為自己帶來更多的學習與成長機會。而開放原始碼社群基於利他精神的分享,凝聚了社群的智慧,更促成了整體資訊環境的進步。這些,都讓我很感動,也是我認同開放原始碼軟體的主要原因。

然而,這也是我在表達時迴避使用「自由軟體」這個詞組的原因。「自由軟體」是一種社會運動,強調軟體使用的自由。這帶著某種社會主義革命精神的運動,難免給人「激進」的印象。我一直相信,「利他」應該是自發的,不應該被任何運動規範的。而且我也不認為開放原始碼軟體和商業軟體是對立的。僅管如此,自由軟體的某些技術規範我是支持的,例如 GNU 通用公共許可證(GPL)。GPL 雖然帶了一點強制性,但基本上還是符合交互利他的精神。

延伸閱讀:更多「開放原始碼軟體應用」相關文章。