英文原文:The GitHub Revolution: Why We’re All in Open Source Now,編譯:36kr
我們是新的 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 不僅僅是一個工具,它在創造一種全新的文化。