自由主義:快紀 (Kwiki)
這一篇本是我在很久前給數位人的稿子,後來刊登於 2004/09/24 出版的《 DG 數位主義》第一輯,一直忘記要貼出來,所以現在補上。請注意,這一篇文章並不授權各位讀者任意作為商業使用,平面出版權僅授與《數位主義》雜誌。
圍紀 (Wiki) 的黑客文化
進入快紀 (Kwiki) 的世界前,我們得先來講講圍紀 (Wiki) 系統。許多初次接觸圍紀系統的人,總是會被一個個眼花撩亂的名詞給弄得昏頭轉向。 Wiki 這個字本身是 WikiWikiWeb 的簡稱,這個全名不但擺明了就是要跟縮寫為 WWW 的全球資訊網 (World Wide Web) 開玩笑,甚至是要用這種自己解釋自己(又稱作自我參照, self-reference )的文化,來解釋這個始終沒有被解釋的字眼 — Wiki ;妳永遠可以把 WikiWikiWeb 裏面的 Wiki 再度展開成 WikiWikiWeb ,然後妳就會發現這個字永遠沒有解釋、永遠可以無限制地展開。事實上多數的圍紀系統也確實如此:妳總是會在綿密的資訊網絡之中遊蕩、所有的資訊總是解釋著彼此也解釋著自己,沒有人能夠把這樣的網絡關聯給攤平成一張平面。所以我們纔說,用 WikiWikiWeb 來解釋 Wiki ,乃是幽默而又恰當不過的一件事。
幾乎所有的 Wiki 系統都繼承了這樣的文化:饒舌的發音、祇用大小寫而不加空白的專有名詞。有名的圍紀系統像是 MoinMoin 、 ChiqChaqWiki 、 WakkaWiki 、 WikkiTikkiTavi (簡稱 Tavi )、以及我們這次要特別拿出來講的 KwikiKwiki (簡稱 Kwiki ),無一不是這種文化下的產物。像這種祇以大小寫區隔、而不空白的專有名詞寫法,也稱為圍紀字 (WikiWord) ; WikiWord 這個字本身就是一個圍紀字,從這裡我們再度可以看出前述文化的幽默之處。「圍紀字」是圍紀系統裏用來表達特殊關鍵字的字眼,之所以會需要這些特殊關鍵字,其實是要實現黑客 (Hacker) 們對資訊網路的夢想。
全球資訊網 (WWW) 的前身與後續
全球資訊網奠基在超文字 (HyperText) 鏈結上,這一點可以從 http ( HyperText Transfer Protocol ,超文字傳輸協定) 這個今日最常被使用的通訊協定上看出端倪。「超文字」希望做到的是打破傳統文字的線性架構,讓文字可以隨著文本與讀者的互動而跳躍到別的地方、繼續下去。這跟妳今天所接觸到的超文字有些不同,如今妳所使用的超文字必須事先就被作者加上,讀者纔有機會選擇是否要隨著那個鏈結跳到其他地方;然而黑客們一開始卻是希望超文字能夠被更上層的架構所自動使用的。
不管是那個年代的黑客,都兼具三美德:懶散 (Laziness) 、不耐 (Impatience) 、傲慢 (Hubris) 。這意味著她們覺得可以不需要親自做的事就不要親自做、可以祇做一次的事就不要做第二次、可以交給電腦做的事就該交給電腦做,因此妳可以看到她們沈迷終日、沒天沒夜地撰寫奇怪的程式碼,祇因為她們覺得這樣可以省下未來的一個月,不要把時間浪費在枯燥的事情上。
當年,在剛發展超文字技術的那個年代,黑客們常常會寫些技術文件,甚至是發表(學術)著作,她們發現總是得花上不少力氣與篇幅,來解釋那些明明別人已經解釋過的事情。又或者,她們會需要在文末加註引用資料的出處,而要一一找出正確的鏈結位址,竟是如此地花費時間力氣。所以她們基於懶散、不耐及傲慢的原因,覺得把時間花在這些瑣碎的地方是毫無意義的,應該要寫一套程式,盡量一勞永逸地來解決這個困難。這個系統,她們希望,能夠自動地把每個文章裏出現的專有名詞,連結到足以詮釋那個字眼的地方去,而不需要靠作者自己耗費大量的時間來補足。
WWW 就是在這個理想下所誕生的玩意兒,儘管 WWW 裏的超連結不會自動產生。這麼多年來, WWW 越來越紅,而這個夢想卻似乎沒能被落實。事時不然,別忘了不管那個年代都有三美德兼具的黑客,日以繼夜地努力要偷懶。就在 WWW 誕生後不久,就已經有圍紀系統的存在了, Wiki 系統奠基於 WWW 之上,試圖實踐這個自動化的機制。 Wiki 系統的使用者始終不多, Wiki 也始終沒有成為主流媒體,但是它卻不斷地被沿用、傳承、革新,無數的菁英投入這場聖戰,期盼著有朝一日能夠改變資訊傳播及互動的模式。
圍紀的中心思想
雖然 Wiki 乃是奠基於 WWW 之上,卻有著許多很不一樣的中心思想。首先,在任何 Wiki 系統裏,所有的資訊都是以「節點 (node) 」的型態存在著的。最常見的節點就是單一一個網頁,不過節點也可能是任何一種(多)媒體檔案如聲音、圖片、視訊、影像等等。不管節點實際的內容或內容形式為何,這樣的節點都會有一個獨一無二的「名字」;在同一套 Wiki 系統裏,具有相同名字的必然是同一個節點,而任何一個節點也祇會有一個名字,這是 Wiki 系統的基本原則,絕無例外。
理論上,節點的所有內容都有共同的目的:詮釋節點的名字。節點的內容不祇是單純的描述與解釋而已,也可能記載著另外還有哪些節點會跟這個節點相關、它們之間的相連性又為何。而節點的「名字」也將成為 Wiki 系統裏的「關鍵字」,祇是實際的順序往往會是反過來的:先有了關鍵字後,纔有節點的內容。關於這一點,看起來也許很奇怪,其實卻比較貼近人們真正思考的樣子;妳總是先說出(或寫下了)某個奇怪的字眼,然後纔去加以詮釋這個字眼的含意。小孩子發展語言的時候,其實是先知道「狗狗」這個詞彙,然後纔去試著瞭解及歸納這個詞彙所代表的到底是甚麼、不是甚麼、跟甚麼有關、又跟甚麼無關。任何關鍵字被提到時, Wiki 系統就會自動地建立起連往由該關鍵字所引領的節點去(別忘了,相同的關鍵字必然引領著相同的節點);如果還沒有這個節點存在時, Wiki 系統就會建立出新的節點。
所以妳就能比較明白了,在 Wiki 系統裏,所有的新東西總是得奠基在舊東西上;建立新節點的方法就是在舊節點裏提到新的關鍵字。
當甲節點裏提到乙節點的名字(作為關鍵字)時,就會自動產生一個從甲節點連結到乙節點的鏈結;當甲節點的內容被修改、不再提到乙節點時,這個鏈結就會自動地消失。就算某個節點徹底跟其他節點失去聯繫了,這個節點仍舊會被保存在 Wiki 系統裏,靜靜地等待有朝一日、又有那個節點的內容提到了這個關鍵字,屆時鏈結又會產生。
節點間的關聯性就是這般飄忽不定,恰似千頭萬緒落在妳腦袋裡的樣子。
另一個 Wiki 的中心思想,是相信「真理越辯越明」。黑客們(再一次地)基於懶散、不耐與傲慢的原因,總是比較喜歡把自己的成果大剌剌地展示出來,還讓別人能夠繼續增添或刪減。一方面是因為展示自己的辛苦結晶總是件酷炫而值得驕傲的事,另一方面是她們相信這麼一來,就會有更多的人幫忙找出瑕疵與錯誤,甚至主動幫忙訂正(那麼自己就可以偷懶了)。因此幾乎在任何圍紀系統裏,讀者們總是能夠編修任何一個節點的內容。這聽起來相當地不可思議,事實上大半的人們都沒有想過網路媒體居然有這種可能性。黑客們(自認為相當有先見之明地)認為,祇要願意修改某個節點的讀者夠多,該節點的內容最終將會被改成大家都可以接受的樣子。(當然她們沒有想到的是,這種讀者太多的時候就會引發另外的問題。關於這一點我們稍後就會談到。)
為了要實現「真理越辯越明」的理論, Wiki 系統往往採用了「修訂版控制系統 (RCS, Revision Control System) 」來管理節點的內容。也就是說,每一次有人動過任何節點的內容時,修訂版控制系統就會賦予這一次的修訂版一個版號,這個版號不但會隨著節點的內容顯示出來,而且當讀者編輯節點內容時,還可以叫出任何先前的修訂版內容,甚至能夠比對任意兩個修訂版間的差異 (diff) 。
這麼一來,就算有人把節點內容給整個刪除,下一位讀者還是能夠把原有的內容還原;而任何微小的修改也將難逃 Wiki 系統的法眼。這就是為什麼 Wiki 系統敢把所有的內容開誠布公地、歡迎大家來改。
既然 Wiki 系統希望所有的讀者也都來參與內容的編撰與修改,勢必就要讓各種文字格式的語法也能直觀而簡單,否則為了達成排版效果的技術門檻將會讓人們懶於使用這樣的系統。(還記得嗎?黑客們個個都是懶散、不耐而又傲慢的傢伙。)於是黑客們再度很有遠見地設想了另一個 Wiki 的中心思想 — 快。 Wiki 這個字其實來自於夏威夷土話,意思就是「快」。
幾乎所有的 Wiki 系統都是實做於 WWW 網頁之上,也就是說,妳得要使用 HTML 標籤語法,纔能夠表達出各式各樣的排版效果、文字變化、表格等。然而並非人人都願意花時間去背誦這些語法,所以 Wiki 系統多半會採用更為簡潔而直觀的作法,例如說用空行來區別段落、用 * 號來表示不排序清單的項目、用 # 號來表示排序清單的項目、用 | 來繪製表格。這些簡化的符號使用不但看起來就跟妳會想做出來的效果很像(所以纔說直觀),而且要輸入的東西顯然也少了些,完全吻合懶散、不耐以及傲慢的態度。當然,實際上每個 Wiki 系統所採用的語法規則都有所出入,甚至有些圍紀系統能讓使用者撰寫自己的語法規則。
要快!這樣子纔能夠落實「真理越辯越明」的理念,也纔能迅速地累積龐大的資訊、堆砌複雜的思考脈絡,而又讓一切的資訊能被人們所輕易處理。知識本來就不是單純的線性關係,更非固定不變的架構,而圍紀實現了這種複雜度,還讓它能夠輕易地被完成,讓由眾多超文字鏈結所建構出來的複雜知識網路,也能夠被閱讀、編輯、增添。
自由與分享的圍紀主義
從上述的 Wiki 中心思想裏可以看出, Wiki 其實是相當自由、講求分享的玩意兒。在 Wiki 裏,幾乎任何謹代表單一身份的意見都將不復存在,取而代之的會是眾人思想的混合物 (Hybrid) ;而任何單獨存在的概念也不會孤立太久,很快地一定會跟其他脈絡扯上關係。任何發展蓬勃的 Wiki ,都是許多人積極參與的共同結果,因為圍紀在本質上就是一種以脈絡為主的載體,近似於共產主義下的產物,每個人均奉獻自己的知識,而獲得全體的智慧。
截至目前為止,已經有數不完的「成功案例」在述說著圍紀系統的好,其中最廣為人知的大概非屬 Wikipedia 不可了。 Wikipedia 是 Wikimedia Foundation 的一個計畫,目的是要用他們自己所撰寫的 MediaWiki 系統,來建構一份電子百科全書。正如同其他的 Wiki 系統,這份百科全書也是任何人都能夠加以編修的。自 2001 年 1 月 15 日 Wikipedia 成立至今,已經有上萬名註冊使用者以及不計其數的詞目了,這份圍紀百科不但圖文並茂,而且還多語兼備,不但所有的內容均採 GNU 自由文件授權而能方便地到處使用外,而且也跟其他 Wiki 系統裏一樣,至今仍不斷地被維護及更新。
這個大規模的計畫說明了自由文化的世界中,人們渴望付出、期盼彼此合作而完成艱鉅之舉的心態。而這種內心機制,也就是 Wiki 之所以會出現、傳承、壯大的因素;無關金錢、名聲、地位,完全就是付出與孕育的欣喜。
更大的野心 — 快紀 (Kwiki)
接下來讓我們來談談今天的主角,快紀 (Kwiki) 。 Kwiki 正確的讀法是 Quicky (而不是 K-Wiki ),也就是「迅速」的意思,其口號為「 Kwiki - A quick wiki that's not too tricky. (快紀—是種很快的圍紀,而且沒啥詭計)」,是由「應急」布萊恩‧英格森 (Brian "Ingy" Ingerson) 所撰寫的 Wiki 系統。不過根據他自己的說法, Kwiki 不僅僅是一套 Wiki ,而是一整個圍紀架構 (Wiki Framework) 。他說道:
「別人都祇是開開玩笑而已,但是我卻會對玩笑嚴肅以待,從中找到有趣的模組名稱,然後我會寫出這個模組,一個模組接著會變成一整個架構,累積使用者而變成一個社群,接著就會開始推動一個運動。我的快紀不是一個圍紀,而是一個圍紀架構,使用者可以自己拼湊這個架構的各個組件、選用各種元件與外掛模組;我的理想是將來沒有任何兩個快紀長得一模一樣 — 每個快紀都會有自己的特色與功能,獨一無二。」Kwiki 從安裝起就很快,號稱是幾秒鐘內就可以安裝完成的 Wiki 系統,現行的 Kwiki 也同時兼具了多項特異功能:快紀投影片展示、快紀部落格、快紀隱私權等。快紀投影片展示功能會把一個 Kwiki 頁面變成一份可以播放、具動態效果的投影片,隨著滑鼠或鍵盤的操縱而將一張張的投影片內容展示出來。快紀部落格則讓妳能夠把任何 Kwiki 頁面的最新樣子,轉變成一則部落格的內容,進而發表出來。快紀隱私權則把快紀頁面區分成公開、唯讀、私有三種不同的狀態,讓妳甚至能夠放心地把 Kwiki 變成私用記事簿。
如果要用新興的流行詞彙來描述 Kwiki 的話,大概可以用「社會性軟體 (Social Software) 」的概念來加以理解吧。所謂的社會性軟體指的是注重社交行為的軟體,甚至有些社會性軟體的內容本身就是這些互動的紀錄,圍紀則更有可能兼備。事實上 Ingy 目前就是 Socialtext 這間公司的員工,公司的業務就是要提供企業用的社會性軟體,而 Ingy 手中的王牌就是 Kwiki 。
為了實現這個理想, Ingy 花了整年的時間在重構更底層的 Perl 模組。他寫了 YAML 、 Spoon 、 Spork 、 Spiffy 、 IO::All 這些模組,來讓 Kwiki 可以做出各式各樣閃亮亮的事情,而又保持簡單及極大的延展性。 YAML 是用來處理 XML 的模組,目的是要讓 XML 文件更容易被(無論是人還是電腦)閱讀,主要被拿來處理 Kwiki 的設定檔; Spork 則成為了 Kwiki 的「投影片」功能,讓妳能用簡潔的 Wiki 語法,就做出炫麗的投影片播放。
在 Kwiki 的世界裡,不祇內容可以集眾人之力,就連程式元件的架構也可以是多變的。
妳可以任意地抽換語法剖析組件、備份(修訂版管理)組件、投影片組件、部落格組件等,當然也可以自由地決定哪些功能是否要啟用。對於 Ingy 來說, Kwiki 已經足堪作為閱讀 Perl 模組文件、撰寫及測試 Perl 腳本的平台了。這是妳在一般的商業軟體裏所難以看到的。
對於市面販售的套裝軟體來說,首要的往往會是明確的功能、有限的變化(如此使用者纔容易有安全感);但是對於開放源碼的自由軟體來說,卻是永無止盡的實驗與玩耍。對於自由軟體界的程式設計師來說,與其把時間耗在微調與修繕各種程式的行為,她們寧願把心力花在嘗試各種別人沒做出來過的可能性上。因此,對於自由軟體來說,充滿著不定、彈性、變更往往是很正常的。出身自由軟體的 Wiki 從概念上就是這樣的東西, Ingy 手上的 Kwiki 更是如此。
然而 Ingy 比其他多數程式設計師又更為了不起的地方在於,他致力於寫出乾淨漂亮的程式碼,總是一而再、再而三地用大量的時間重構自己的程式。所以 Kwiki 不僅有著那份活潑的野性,卻又帶了沈著與穩重。截稿前不久, Ingy 已經把最新版的 Kwiki 0.30 上傳到 CPAN ( Comprehensive Perl Archive Network, Perl 綜合典藏網)了,妳可以自由地取得、使用、散佈 Kwiki ,然而妳將發現妳從 CPAN 所取得、安裝的 Kwiki ,跟位於 http://new.kwiki.org/ 的最新版 Kwiki 並不相同,少掉了搜尋、近期更動、偏好設定、天氣、圖示等功能。
這就是我們稍早提到過的、 Kwiki 作為一整個 Wiki 建構架構的基礎,所有的功能都是再用獨立的外掛模組所加上的,這正是 Kwiki 遊走於自由軟體跟商業軟體間的利器。
Kwiki 的核心部分是自由的,一切的功能卻非必要;於是任何自由軟體的程式設計師都可以撰寫自由的 Kwiki 外掛模組,供人自由地使用,而私用軟體的程式設計師卻也能撰寫私用外掛模組,把 Kwiki 包裝成私用軟體,販售給其客戶。事實上 Ingy 正在同時扮演著這兩種角色,一邊撰寫著自由的模組,一邊為 Socialtext 發展商用模組。甚至連使用者介面、外觀、模版、樣式,對 Kwiki 來說,也都是個外掛模組罷了。這也就是為什麼 Kwiki 既可以是粗獷不羈的 Wiki ,也可以是精雕細琢的 Wiki 了。
事實上 Kwiki 並非第一個商業化的 Wiki ,有一個用 Java 撰寫而成的 Confluence 也是商業化的 Wiki ;然而無論這些 Wiki 經過多少的精細調校,最關鍵的部分還是會在於使用者的心態。 Wiki 的本質是樂於分享跟積極互動,或許這一波把 Wiki 帶入企業的嘗試,也將給各大企業帶來不小的影響吧。