我們是新的GitHub一代?GitHub塑造了新式開源文化?嗯,看看十幾年開源控、Getable CTO Mikeal Rogers 是怎么說的吧:
GitHub本來想做一個開源軟件協作平臺,結果做著做著成了一個兼容并包、不僅僅是照顧程序員的平臺。現在,這個平臺也成了各類藝術家、建筑生產商、各大公司、甚至各大城市使用的平臺。
例如,芝加哥市前陣子宣布了一項公告:“假如本市出現新的自行車道、公路或建筑物,那么人人都可修改GitHub上的數據。”另外,有些人則將家裝項目放到了GitHub上,有家律師事務所也在前幾天宣布,他們會將早期創業公司的融資相關法律文件全放到上面——而在去年,另有一個神人甚至將整個德國的法律全搬到了GitHub上。當然了,GitHub現在依然是那些用Node.js做AR無人機、或者是用jQuery做網站的程序員光顧的地方。
去中心化的一場革命
大部分人聽到開源的第一反應是“民主、分散、和平等”,想到所有人一起做東西,做出來給所有人用。
但實際情況并非如此。大部分的開源軟件都是由那些享有一定特權的一小撮人創建并維護的——即專業的開發人員,而這些人又只會跟同個圈子、同個水平的一幫人互動(后者與前者盡管很像,但又足夠不同到可持相異觀點供雙方爭論)。
在GitHub出來以前,我會花很多時間去思考、討論如何好地管理開源項目,因為這類項目的協同成本太高了。這個成本高到什么程度呢?當一個項目做得不錯,又發展成一個規模不小的社區時,我們發現,好的辦法是讓項目繼續龐大臃腫下去,而不是拆分成規模更小的項目。但這里面會有這樣一個問題,項目變得越大越復雜,個體越難對其作出貢獻。所以不得不有特定的一群會員,或者說所謂的“委員會成員”,被任命專門管理和生產項目,這也經常導致項目實際的消費人群和項目創作者之間的信息裂縫和信息斷層。
但GitHub的“去中心化”開源模式則讓這種裂縫漸漸彌合,讓開源不再聚焦“項目”本身,而是越發彰顯個體特色。此話怎講?
GitHub上的整個工作流程設計相當個人化。每個GitHub用戶都有一個自己的賬號,而他們發布的所有資料都會隸屬于這個層級以下。假如某些人需要對某個項目做出修復,他們只要“fork”(將項目分叉),即在自己的名下拷貝一個原項目的副本,進行相應的加工即可。
這種工作流程是非常強大的:因為它鼓勵了個體用戶去對一個他人已創建的項目做修修補補,而他們對該項目的所有權和控制權絲毫不亞于一個由自己先創建的項目。在這種新式的開源文化下,所有用戶都能擁有自己的身份和定位。而GitHub實際上也已經成為互聯網上協作式內容生產(peer-based production)大的身份提供商,不僅僅是在代碼方面。
我自己做了十多年的開源項目貢獻者,但現在的開源文化跟當年的一個很大不同是——我不再是某個項目的“會員”——而僅僅是某個項目的使用者。使用者的一個很大特點是,人人都可為項目貢獻“一點點”自己的力量。在我消費、使用的各種各樣的小項目中,我會跟項目維護者有一些更小層面的互動,而且保持一周幾次。
但更大的一種趨勢其實來自另一個方向:作為我自己的項目的發起者,現在我會收到有很多聞所未聞的人發來的關于這些項目的小代碼。
民主升起在“去中心化”
GitHub的第一版在一件事情上做得很好:他們讓個體發布代碼——而非雪藏代碼——變得比過去簡單很多。這也使得很多很有影響力的項目,比如說Ruby on Rails的項目,可以很快地遷移到GitHub上來。
但接下來發生的事情實際更有趣:人們開始在GitHub上發布除代碼以外的其他東西,幾乎無所不包...不夸張地說,在GitHub上推代碼變得跟發微博一樣簡單。通過降低用戶的進入成本、并讓用戶在開源項目中更方便地展開協作、貢獻力量,GitHub將“協作式生產”(peer production)的范圍擴大到普通用戶。
所以,GitHub式的開源文化降低了所有人的“創造門檻”——,對于那些富有創造力但又不具備深度技術知識的人來說,他們可以使用各類簡單又易于理解的軟件實現創意。而在過去,他們必須、而且只能具備深度的技術知識以參與到大型開源項目中。
而平臺上發起者、貢獻者和消費者這三類身份的日益彌合也使得那些更輕巧、更易懂的項目逐漸獲得更高的關注度——也催生了一批長尾的內容貢獻。舉個例子,在2012年9月全月,超過半數的GitHub活躍用戶都發布了5次以內的更改,而有22%(約4.4萬)用戶的更改次數只有一次(明顯的長尾趨勢)。
這種開源軟件“業余化、平民化”的趨勢也有明顯的好處,如下:
1.讓軟件變得更易用
不能做到“傻瓜易用”(fit and finish)一直是開源軟件的一個問題。這類軟件的說明文檔和網頁設計通常都是亂糟糟的,產品的可用性也很差——尤其是跟很多專有的同類產品相比。
但現在,因為貢獻門檻的逐步降低,那些對技術不那么在行的用戶可將上述的幾個方面逐漸優化,以方便自己對這類軟件的使用。而這意味著那些原本詭異的報錯消息現在變得越來越像人話,簡單修改一兩行CSS會讓網頁在一些更老的瀏覽器和手機上渲染。
所以說,在新的開源文化下,人們希望自己不用成為技術專家可方便地使用技術,“易用性”獲得了全所未有的關注和重視。
2.規避過度“工程化”
工程師們往往樂于接受挑戰,要是能給他們更多的機會解決問題,他們越有可能想到聰明的解決方案——假如這類解決方案的終端消費者跟這些工程師一樣,對技術有很好的理解,又會像他們一樣因為有更聰明的方法解決老問題而激動不已,那一切都沒問題。
但問題是,業余愛好者只喜歡那些在他們眼中理所當然、顯而易見的解決方案,一旦某個問題已經得到解決,他們很少會回過頭去重新審視這個問題。因為業余愛好者只會利用那些顯而易見的解決方案做東西,這迫使開發人員不得不去尋找簡單而接地氣的解決方案來解決難題。
3.支持一個更大的生態系統
以我自己頻繁使用的Node.js為例,這種編程語言定義了足夠簡單的語法結構(patterns),使得人人都可以編寫獨立的小型函數庫,并按自己的意愿發布。在這個生態系統中,每個人都可以獨立享受當中的價值,無需協作。這跟一些大型、垂直、擁有大量工具和功能、需要在特定環境下(比如說Cocoa和iOS)使用的棧(比如像ember, Dojo,YUI這樣的集成的插件系統)形成了鮮明對比。
但在開源環境下,如之前提到的Node.js,我們可以看到一些更小的 API空間輕松使用該生態系統中的其他資源,避開協調(比如用jQuery或node的標準回調模式來回調API)。開發者與開發者、庫與庫之間的協調越少,越利于我們創造價值。
總結下來是,GitHub讓新一代的年輕人更方便地協作、創造和生產。很多開發者可能會因為過去那種正規開源文化(如“委員會圈子”、需要糾結使用哪種授權模式)的消弭而大唱挽歌——但開源的未來已經掌握在那群無所顧忌、大步向前的新一代人手中。
從這個角度來說,GitHub不僅僅是一個工具,它在創造一種全新的文化。