GitHub一代 : 我們都是開源控

0
561

GitHub 塑造了怎樣的新式開源文化?看看十幾年的開源控、Getable 的 CTO Mikeal Rogers 是怎麼說的吧:

GitHub 本來想做一個開源軟體協作平台,結果做着做着就成了一個兼容並包、不僅僅是照顧程序員的平台。現在,這個平台也成了各類藝術家、建築生產商、各大公司、甚至各大城市使用的平台。

例如,芝加哥市前陣子就宣布了一項公告:「假如本市出現新的單車道、公路或建築物,那麼人人都可修改 GitHub 上的數據。」另外,有些人則將家裝項目放到了 GitHub 上,有家律師事務所也在前幾天宣布,他們會將早期創業公司的融資相關法律文件全放到上面——而在去年,另有一個神人甚至將整個德國的法律全搬到了 GitHub上。當然了,GitHub 現在依然是那些用 Node.js 做 AR 無人機、或者是用 jQuery 做網站的程序員光顧的地方。

socialite

去中心化的一場革命
大部分人聽到開源的第一反應是「民主、分散和平等」,想到所有人一起做東西,做出來給所有人用。

但實際情況並非如此。大部分的開源軟體都是由那些享有一定特權的一小撮人創建並維護的——即專業的開發人員,而這些人又只會跟同個圈子、同個水平的一幫人互動(後者與前者儘管很像,但又足夠不同到可持相異觀點供雙方爭論)。

在 GitHub 出來以前,我會花很多時間去思考、討論如何最好地管理開源項目,因為這類項目的協同成本太高了。這個成本高到什麼程度呢?當一個項目做得不錯,又發展成一個規模不小的社區時,我們發現,最好的辦法是讓項目繼續龐大臃腫下去,而不是拆分成規模更小的項目。但這裡面就會有這樣一個問題,項目變得越大越複雜,個體就越難對其作出貢獻。所以就不得不有特定的一群會員,或者說所謂的「委員會成員」,被任命專門管理和生產項目,這也經常導致項目實際的消費人群和項目創作者之間的資訊裂縫和訊息斷層。

但 GitHub 的「去中心化」開源模式則讓這種裂縫漸漸彌合,讓開源不再聚焦「項目」本身,而是越發彰顯個體特色。此話怎講?

GitHub 上的整個工作流程設計相當個人化。每個 GitHub 用戶都有一個自己的帳號,而他們發佈的所有資料都會隸屬於這個層級以下。假如某些人需要對某個項目做出修復,他們只要「fork」(將項目分叉),即在自己的名下拷貝一個原項目的副本,進行相應的加工即可。

這種工作流程是非常強大的:因為它鼓勵了個體用戶去對一個他人已創建的項目做修修補補,而他們對該項目的所有權和控制權絲毫不亞於一個由自己最先創建的項目。在這種新式的開源文化下,所有用戶都能擁有自己的身份和定位。而 GitHub 實際上也已經成為互聯網上協作式內容生產(peer-based production)最大的身份提供商,不僅僅是在代碼方面。

我自己就做了十多年的開源項目貢獻者,但現在的開源文化跟當年的一個很大不同是——我不再是某個項目的「會員」——而僅僅是某個項目的使用者。使用者的一個很大特點就是,人人都可為項目貢獻「一點點」自己的力量。在我消費、使用的各種各樣的小項目中,我就會跟項目維護者有一些更小層面的互動,而且保持一周幾次。

但更大的一種趨勢其實來自另一個方向:作為我自己的項目的發起者,現在我會收到有很多聞所未聞的人發來的關於這些項目的小代碼。

民主升起在「去中心化」

GitHub 的第一版在一件事情上做得很好:他們讓個體發佈代碼——而非私藏代碼——變得比過去簡單很多。這也使得很多很有影響力的項目,比如說 Ruby on Rails 的項目,可以很快地遷移到 GitHub 上來。

但接下來發生的事情實際更有趣:人們開始在 GitHub 上發佈除代碼以外的其他東西,幾乎無所不包…不誇張地說,在 GitHub 上推代碼就變得跟發推一樣簡單。通過降低用戶的進入成本、並讓用戶在開源項目中更方便地展開協作、貢獻力量,GitHub 將「協作式生產」(peer production)的範圍擴大到普通用戶。

所以,GitHub 式的開源文化降低了所有人的「創造門檻」——今天,對於那些富有創造力但又不具備深度技術知識的人來說,他們可以使用各類簡單又易於理解的軟體實現創意。而在過去,他們必須、而且只能具備深度的技術知識以參與到大型開源項目中。

而平台上發起者、貢獻者和消費者這三類身份的日益彌合也使得那些更輕巧、更易懂的項目逐漸獲得更高的關注度——也催生了一批長尾的內容貢獻。舉個例子,在2012年九月整個月份,超過半數的 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 不僅僅是一個工具,它在創造一種全新的文化。