軟體之所以應該是自由的理由在於:分享軟體,比限制軟體的分享對於整個社會更有益處,因為軟體的價值在於它的應用,而不在它本身的價值。我們在這裡舉地理資訊的分享來作為例子:
◎ 自由軟體的精神地理資訊是記錄著地球表面各種特徵的資訊表現,主要是以航空照片、衛星照片…等「影像」,以及使用點、線、面…等「向量」這兩種形式存在。影像的形式絕大部份的情形都是作為原資料(raw data)來使用。
在美國,影像的取得的代價非常低,許多甚至可以直接從網路中下載,因此我們可以將主要的資源放在取得研究所需要的資訊,像是從影像中擷取五十年來路易斯安納州各次洪水氾濫的範圍。這裡可以看出,影像的價值本身並不重要,重點在於我們由其中所取出的有價值資訊。
相較於其它國家,美國境內就提供了一個很好的工作環境,不僅影像的取得容易、利用率高,連帶著影像的生產量也跟著提高,生產量高,可以分析的東西就更精 細,研究課題就更多。這樣的反覆循環變成了一種良性的迴路。事實上,結果就是許多原本在其他國家的優秀地理資訊學者,不得不到美國進行研究,最後就定居下 來。其中最明顯的 就是來自加拿大的學者。經驗表明,愈不公開資訊的國家,競爭力愈是低落。
軟體也是一樣,如果可以儘可能地降低花費在購買軟體本身的成本,那麼就可以把多一點資源放在解決問題上。現在的問題就成了:我們如何建立起一種體系,而這一種體系可以有效地降低開發的成本,並且產出高品質的軟體。
至於「合作」,應該是不需要再多作解釋了!不過為了讓想法更具體,我們舉《自由自在》(Free as in Freedom)第一章的一小段話和譯註的文字來作為例子:
為 AI 實驗室借了這支程式的一份拷貝,史托曼並沒有剝奪哈佛駭客使用他們原始程式的權利【譯註】
譯註: (1) 如果借的是一支螺絲起子,那麼你就剝奪了它的主人使用它的權利。因此我們可以清楚地看出軟體與實體物件的根本差異-- 它真的很容易被複製。正由於這個差異,軟體應該是自由的,而不是想盡方法讓它變得和實體物件一樣。 (2) 事實上,如果不是由於物理條件的限制,螺絲起子還要向軟體看齊才對 — 剛開始,世界上只有這麼一支螺絲起子,當張大哥借給李小弟時,變成二支;幾個星期後,全球六十多億人口每個人都有一支。更不可思議的是,當其中五十億人不 再使用時,只要往天空一丟就不見了,沒有一支會變成難以處理的垃圾〈根據《聖經》,這在實體物件也是有可能發生的,請參閱《五餅二魚》的故事〉。實體物件 難以被複製是大自然的法則;禁止軟體的複製則完全是人為的限制。
如果合作是那麼地容易,為什麼人與人之間不應該要合作呢?因此,我們希望建立起一個重點在於:
一、培養出我國需要的人才
二、工作成果得以保存延續
三、誰做了什麼事、誰擁有技術都一清二楚
的自由軟體開發體系。縱然現在「自由軟體鑄造場」已經上了路,多點其它的想法總也是有益的,以下按照我們對於其它的軟體協同開發基礎建設的理解,作了一點想像。
◎ 中央山脈網站(基礎建設)
Savannah.gnu.org(大草原)是 GNU 計畫所設立的一個基礎建設,目的就在於使 GNU 的各項軟體開發能夠獲得足夠的支持,以使軟體協同開發的門檻可以降至最低。既然〔自由軟體基金會的〕 GNU(牛羚;角馬)是住在大草原中,那麼就假設我們的自由軟體計畫是住著中央山脈好了!我們將「中央山脈」設想成這個樣子:
根網址為 cymt.org ,下面分有幾個一級網址:
www.cymt.org 作為面向一般公眾的計畫網頁
ftp.cymt.org 作為可以匿名下載計畫源碼的檔案傳輸網址
climb.cymt.org 作為計畫程式員管理計畫、上載源碼等服務的網址
要作個類比的話, www.cymt.org 相對於 www.gnu.org ; ftp.cymt.org 相對於 ftp.gnu.org ; climb.cymt.org 則相對於 savannah.gnu.org 。除此之外,再額外建議一個 pack.cymt.org
以用來放置預先編譯好的目的碼(針對各個不同的作業平台),並且不放源碼。這樣子作法的用意在於讓有需要的使用者有一個簡潔的地方可以下載她所需要的檔 案,同時也可以使編譯的動作自動化(程式員只需要關心源碼有沒有寫好,再把 makefile 製作好就好了, pack.cymt.org 伺服器每小時,或每天就自動將計畫編譯一次,保持最新狀態)。
⊙ 計畫網址
我們以一個例子來說明這樣的基礎建設的運作機制好了。假設現在有一位程式員申請了一個名為 xenos 的計畫,那麼:
計畫的網址在 xenos.cymt.org
源碼的網址在 ftp.cymt.org/xenos
預先編譯好的檔案在 pack.cymt.org/xenos
支持程式員的計畫網址在 climb.cymt.org/xenos
如果有人想要瞭解 xenos 這個計畫,那麼可以瀏覽一下 xenos.cymt.org;如果想要看看源碼或是自己編譯程式,那麼就到 ftp.cymt.org/xenos ;想要下載立即可以安裝使用的預先編譯檔案,就到 pack.cymt.org/xenos ;至於程式員想要使用 cymt 所提供的 各種服務時,就是到 climb.cymt.org/xenos ,這裡事實上也是這個計畫的主頁,所有相關的網址應該都可以自動地在這一頁中加以呈現才是。
在申請計畫時,主持的程式員應該要如同學術論文一般,提供用來形容這個計畫的關鍵字。這些關鍵字在稍後可以用來作為在 xenos.cymt.org 中的一種分類索引的方式,另外一個作為軟體協同開發網站的 sourceforge.org ,其作法正是如此,不過我們在自動 化索引以及搜尋方式上應該還可以做得更好。
⊙ 郵寄清單與郵件帳號
郵寄清單當然是不可少的功能,除了額外增加的之外,每一項計畫在設立之初就應該有四個郵寄清單:
這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看
作為計畫新聞的發佈,一般公眾都可隨意加入
這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看
作為計畫成員之間的討論之用
這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看
作為臭蟲回報的機制
相對應的網址可能是:
climb.cymt.org/mailman/xenos/info
climb.cymt.org/mailman/xenos/discuss
climb.cymt.org/mailman/xenos/bug
另外,還有一個只有程式員可以寄送,並且傳遞對象是機器(而不是人)的郵寄地址:
這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看
伺服器收到後,會自動地將郵件整理到 xenos.cymt.org/task.html 這個頁面上,這樣子我們就可以很清楚地知道目前計畫裡面,各項進行中的工作了。
郵件帳號則根據其中所參與的人員來給定,例如:
這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看
基本上應該是別名的形式,就是當有人寄到 這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看 時,郵件實際上可能是被轉信到 這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看 了。另外,每項計畫也都預設有一個管理員的郵件別名,例如: 這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看
預設是轉信給計畫的主持人,專門用來作為計畫和公眾之間溝通的帳號。
⊙ 協同開發
軟體之所以可以協同開發的重要基礎在於「版本控制」與「安全」。「版本控制」指的是對於檔案所作的更動可以被仔細地記錄下來(哪裡有變?誰做的?),同時 幫忙處理檔案修訂時的衝突問題;「安全」則是說只有計畫的程式員才能夠對源碼做操作(新增、修改、刪除…等),任何其他人,包括 cymt 的系統管理員都沒有權限可以進行。
原本這並不容易做到,不過因為現在已經有了 CVS 和 ssh ,因此反而是最簡單的部份。就其中的任何一個計畫來說,只有計畫的程式員可以存取檔案,而計畫主持人則負責想要參與計畫人員的申請。在系統管理員的權限方 面,可以學習 GNU 計畫的精神,目前除了一、二位自由軟體基金會的管理員有外殼帳號之外,沒有人有 savannah 主 機的存取權。以這種方式,在降低了系統管理員權限的同時,也進一步地保護了軟體開發計畫的成果。事實上,系統管理員在最大程度上,本身也應該要把自己視為 其中的一個軟體開發計畫,如: peak.cymt.org
最好可以設計出一個通用的介面給參與維護的人員使用,能夠永遠避開使用外殼指令來更新系統是最好的了。
⊙ 想像的結語
這個想像對於作者而言是具有吸引力的,但是還有一些可以補充的地方:
一、如果沒有上面所述的各種網站設施的支持,我們還是要做下去。實際上,事先定義好各式各樣規格的好處就在於:有沒有自動化都一樣,網管頂多辛苦一點罷了;伺服器可以自動化當然更好,但絕非必要。有人要用,快快上線才是。
二、特殊化的鑄造場,比如用來製作自由音樂的,可以由軟體鑄造場簡單地加以修改就建立起來。舉例來說, pack.cymusic.org/noise 中放的就是 noise 這首音樂的 mp3 或其它可以直接播放的格式的檔案,意義雖然相同於預先編譯好的執行檔,但是顯然伺服器應該要有額外的支持才能做到。再比如用來編寫教科書的,前一陣子聽說 要將部編的教科書開放版權,實際狀況還要再多瞭解,不過如果真的開放了,那麼是不是應該要先準備好,怎麼樣去支持後續的教科書編寫和修訂工作呢?
三、也不見得每一個計畫都非得住在中央山脈不可,有些計畫已經運行了好幾年,順順的。但也可以在中央山脈報個戶口啊!這樣子不僅可以容納計畫、支持開發,同時也可以作為一個索引!誰說索引要另外做的?這樣子不就成了一個很好的入口網站嗎?
四、中央山脈的服務承諾,最重要的一點在於所有的內容都是自由的,而且會定期地製作備份,確保內容可以長久地保存下去。一個計畫能夠在不因包括主持人在內的任何人的來來去去,仍然持續地進行開發的工作,正是自由軟體最重要的特徵之一。
還是一樣!有遠見的機構提供一點人力、經費、設備和「電子量」,就可以讓許多急著發揮所學、貢獻社會的年輕人自我培養,還有比這個更便宜的人才養成計畫嗎?
要找個能幹的傢伙來寫程式?到中央山脈找找看吧!想要自己做個字形,又不知道怎麼著手?到中央山脈找找看吧!自己開發了一個自由軟體,卻沒有申請網址來 用?住到中央山脈吧!已經開發了一個自由軟體,又沒什麼人知道網址?到中央山脈報報戶口吧!想要知道有些什麼用起來方便、存起來又「自由」的程式?到中央 山脈問問看吧!看到某個自由軟體沒有中文版,卻又喜歡得緊?到中央山脈問問看誰要弄個中文版吧!
總之,不要讓想要開發自由軟體的熱血青年為了計畫所必須的基礎建設而磨去了精力,資源有限,人力資源更是寶貴,讓想做事的人好好做事,讓她在沒有干擾的情況下做事,然後把它給完成。這樣子,才是符合我們心中所設想的自由軟體基礎建設。