網路思想家Clay Shirky表示,分支(Forking)提供公民參與新的思考方向。他解釋,電腦並不會自動產生程式碼,而是由人類所撰寫,因此原始碼控制系統管理的資源,除程式碼外,還包含了人。

圖片來源: 

iThome

對開發者而言,為了儲存原始碼,追蹤各開發版本間的差異,學習使用版本控制系統是不可或缺的能力,但版本控制系統不僅可用於軟體開發,甚至新型公民參與也可向版本控制系統取經。

著有《鄉民都來了:網路群眾的組織力量》的Clay Shirky,除了任職紐約大學互動電子媒體課程合聘副教授外,也是當代著名的網路思想家之一。他表示,在研究公民參與的方式時,「分支(Forking)提供了新的思考方向。」

在軟體世界中,分支是起於原始碼改變,而原始碼的更動,則是來自人的決策。因此,版本控制系記錄軟體演進過程的蛛絲馬跡,可以追溯在何種條件、狀況下,「人們會待在一起作一件事,反之,人們為何會分開。」

版本控制系統的起源可以追溯至至1972年開發的SCCS(Source Code Control System),使用於IBM大型主機System/370上。隨後,各類版本控制系統也開始發展,例如集中式版本控制系統CVS、Subversion及Perforce等,採取主從式架構,開發者本機端只會儲存最新的軟體版本,而分散式版本控制系統如BitKeeper、Git,每個開發者本機端都有一份完整的儲存庫,紀錄軟體各個版本的改變。

而線上協作開源專案的風氣興起,線上開放原始碼平臺GitHub、GitLab也將Git版本控制的精髓在線上實作,讓使用者也能線上操作Git的Push、Pull、Fork等指令。

Clay Shirky解釋,版本控制系統的核心概念在於,拷貝新版本的同時,存留一份舊版本,「程式碼更變後,不想要失去舊版的系統」,而分支正是管理原始碼資源的基本操作。但Clay Shirky認為,分支本身並非很重要,「它只是帶來改變的契機,重要的是,專案分支後的發展方向。」持相異立場的開發者,使軟體產生相異版本,因此版本的分裂,也可進一步視為人們意見的分裂。

Clay Shirky表示,當軟體開始出現分支後,可能發生狀況總共有三大類:分支後合併(Fork and Merge)、分支後分割(Fork and Split)以及分支後死亡(Fork and Die)。

在開發流程中,通常會稱主要版本為主幹(Master),分支版本為分支(Branch)。在第一種狀況中,開發者認同分支版本的開發方向,便將分支重新合併至主幹中,繼續進行開發。如果開發者想要嘗試新功能,也能隨時另外開設分支,在此類型中,軟體的發展動向,仍然是以主幹為主。類推至真實世界,即社群歷經分裂後,又重新團結。

第二種情況,當主要版本與分支版本分割後,可能因為具備不同的特點,不再進行合併,而開發者各自決定分支的發展動向,「因此兩種不同的軟體共同存在。」例如,當今百家齊放的Linux作業系統版本如Debian、openSUSE、Red Hat及Ubuntu等等,都是源自於Linux之父Linus Torvalds打造出的Linux,但是各版本因不同的特性,適用於不同的場合。Clay Shirky解釋,在此類型中,軟體分開的機會比合併還高,「很多時候,兩個分支再也不會進行合併。」若以美國的起源為例,一群來自英國的清教徒離開原生國家,走往新大陸建立了獨立國家,因此,美國可以說是從英國分支出的另一種版本。

最後,當軟體分為兩種版本後,其中一個版本繼續進行開發,但是其中一個版本,可能因為缺乏人力開發,或是因為前景不被看好,就此停止支援,例如開源內容管理系統Joomla是Mambo在2005年分支後的版本,但是在2008年後,Mambo就在也沒有推出穩定版本,而Joomla到至今仍然繼續穩定發展。

軟體開發時,可以透過分支的概念,讓不同概念各自發展成獨立的版本,如果將Clay Shirky對版本控制系統的解讀,移轉到公民社會的運作,將會把生活在一國的公民,分類為各種社群。

用分支劃分社群中不同偏好的族群

但是,公民社會又該如何實際利用分支的概念?Clay Shirky使用虛擬遊戲世界中的PvP(Player versus Player)規則進行解釋。在非PvP伺服器中,玩家僅能與預設的怪物、敵人對戰,反之,PvP伺服器中,玩家可以彼此攻擊,享受互相抵抗的樂趣。

為了解決玩家喜好相左的情形,同時又能兼顧不同偏好的使用者,遊戲公司決定不進行強制規範,讓玩家自行決定是否採用PvP模式,「而分支則讓人們有選擇的自由」,而遊戲世界便因為兩群偏好不同的玩家,一分為二。

單憑玩家是否選擇PvP遊戲模式,就將玩家分成兩群,只要繼續對玩家提出更多答案為是或否的問題,就能以等比級數的速度,將虛擬世界切分,「只要有20個Yes/No問題,就能將人群分類為100萬種。」

但Clay Shirky打趣地說:「臺灣只能有一種版本」,現實生活中分支有其限制,無法像虛擬世界一樣劃分乾淨。

雖然分支能分割數位資源,讓意見不合的社群也能和睦相處,但若原封不動地搬回實體社會中,「結局就是讓社群進行分裂」,無法凝聚共識。

用投票賦予社群正當性

此時,因為意見而踏上不同道路的人們,仍然生活在同一片土地,不若虛擬世界,各族群可以互不打擾、各自發展。如果一個國家可能潛在多種發展走向,此時社群必須藉由投票,確立某一發展方向的正當性。

社群因意見不合而遂行分裂的情況屢見不鮮,「比民主的起源都還來的早」,Clay Shirky解釋,《荷馬史詩》中所記載的特洛伊戰爭,是最早留下西方文明中投票記錄的文獻。

在希臘神話中,阿基里斯戰死沙場後,兩大英雄奧德修斯與大埃阿斯,為最有資格獲得他遺留下戰甲的候選人。倘若讓兩人透過決鬥爭取,任何一方都會付出極大的成本。因此,雙方決議使用投票制度,每個戰士可以將選票投給心目中的英雄,賦予勝利方得到盔甲的正當性。而現代選票(ballot)一詞,便是源自於當時作為選票的小球(small ball)。

「這場投票的重要意義在於,不是得到正確答案,而是保存社群。」因此,藉由投票,即便社群中的人們意見相左,還是必須尊重獲勝方的決議。而投票作為一種公民參與形式,並非是要取得新資訊、匯聚意見,而是強化社群的團結,「讓群眾(crowd)進一步成為社群(community)。」

但是,投票作為鞏固社群、賦予正當性的工具,仍然有不足之處。Clay Shirky使用美國總統選舉的經驗作為例子,從老布希到川普,總共有3任總統並非他所屬意的候選人,「有超過一半的時間,我都不滿意如此的投票結果。」不過,Clay Shirky解釋,社群中相左意見的人團結,並非出自於自私,「而是為了相同的願景」,即使每項決議並非都滿意,仍然可以讓社群繼續前進。

維繫社群的三大方法:會員資格、規定及懲罰

然而,社群除了合併、分開後各自發展外,Clay Shirky認為,其中最難處理的狀況是社群分割後,一群人繼續發展,而另一群人則決定停止前進。單論開發層面而言,僅只是哪些軟體受到使用者的青睞、用途較為廣泛等,但拉回現實世界中,「這群人自行決定走向自己的道路,如果想要保持社群完整性,就必須為他們設定規則。」

Clay Shirky表示,經濟學家Elinor Ostrom觀察美國原住民社群自治的模式,歸納出即使某一群體不滿足於現有社群走向,但仍可以讓團體保持不分散的方法。他解釋,即使意見分歧,要確保社群維持完整性,最重要的就是確立每個人都具有會員資格(Membership)。他表示,會員資格真正意義是「贏家在意輸家」,即使社群發展走向不能滿足所有人的喜好。再者,社群的運作,必須仰賴自主訂定的規則,當某些人因觸犯規則遭受懲罰時,也不得擅自離開社群,「因為自己制定的規矩。」

最後,則是給予觸犯規則的成員懲罰,Clay Shirky表示,最好採取漸進式的罰則,按照成員觸犯的次數逐漸加重。同時,讓成員了解懲罰的目的,除了讓效果更好之外,也賦予社群的正當性,「正當性讓社群聚在一起,即使大部分人無法事事如願。」。

【相關報導請參考「公民科技」專題】

熱門新聞

Advertisement