開源代表的絕不只是放開代碼——我們亦需要構建一套支持基礎設施,邀請人們加入并作出貢獻。為了建立一個充滿活力、不斷發展且令人興奮的項目,社區需要讓更多人參與到治理、文檔編寫、代碼創建以及結構調整的工作中來。
盡管很多項目打著“開放一切”的旗號,但其基礎設施的大門卻往往拒絕訪問。通常情況下,開源項目只由少數人管理其基礎設施并保持正常運作。雖然將王國核心寶庫的鑰匙交給每一個人并不靠譜,但我們也確實需要對每位參與者給予一定程度的信任。
過去幾年以來,Ansible、Chef以及Puppet等基礎設施工具開始得到廣泛普及。這意味著開源項目基礎設施即代碼目標完全能夠變成現實,即允許每一位貢獻者以同樣的級別進行訪問。
為了保持這一良好勢頭,我們將共同了解以下幾項相關要點:
以開放方式制定決策: 使用公共郵件列表討論并規劃基礎設施相關事務。在決策過程中,確保每個步驟皆源于社區。具體而言,避免一切由少數人決定的操作方式。
將基礎設施定義為代碼: 使用Ansible、Puppet乃至其它配置管理工具,確保貢獻者能夠推動基礎設施發展。如此一來,開發者及廣泛社區能夠更為輕松地定義新型任務。
定義基礎設施所有權: 明確定義基礎設施所有權并發布故障后的取證結果。這種透明度有助于提升社區信任度,讓參與者們更為積極地作出貢獻。
明確貢獻途徑: 定義明確的基礎設施貢獻途徑。正如我的一位朋友所言,“如果需要root訪問才能完成日常工作,那這肯定是一項錯誤。”
不過在開放基礎設施的過程中,大家肯定會遇到一些問題。下面來看幾項常見問題及其解決辦法。
必然會改變現狀: 在變更基礎設施流程時,原有工作機制也將受到影響。團隊中可能因此出現一些不滿情緒。因此,請確保提前公布計劃,以分撥方式實施變更。站在團隊一方,積極修復一切對生產力有所影響的因素。
需要修復的問題大量出現: 基礎設施中總有大量需要修復的問題。請注意,面對這樣繁雜無序的狀況,最好先將其一一記錄下來,而非馬上著手修復。整個進步過程將相當緩慢,但務必確保效果穩定。最重要的是,不要被這些瑣事所淹沒。
打破常規: 在對流程及基礎設施進行大規模變更時,總有些常規會被打破。確保以公開方式對故障進行取證及總結。建立相關計劃,避免未來出現類似的錯誤。
工作似乎永無盡頭: 實際情況也確實如此——工作就是永無盡頭。項目需要對基礎設施進行變更,而且絕無“完成”一說。解決了這個問題,還會有下一個問題在等著。
最重要的是,這種開放絕不單純意味著將基礎設施的主導權分發給每位貢獻者,亦意味著每個人都可以參與到與之相關的文檔與流程改善中來。