GitHub時(shí)代:為什么我們都在開源
Mikeal Rogers是Getable的CTO以及NodeConf的負(fù)責(zé)人,日前,他撰文稱,我們正在進(jìn)入GitHub時(shí)代,新一代的人們正在塑造一個(gè)全新的開源文化。
以下為文章全文:
GitHub的本意是旨在成為一種開放的軟件協(xié)作平臺(tái),但它目前已成為一個(gè)巨大的綜合性的平臺(tái),其作用遠(yuǎn)遠(yuǎn)超過單純地開源代碼。它現(xiàn)在在藝術(shù)家、建筑商、業(yè)主等許多領(lǐng)域使用。
芝加哥市最近宣布:“當(dāng)建立新的自行車道時(shí),當(dāng)?shù)缆氛谑┕r(shí),當(dāng)興建新的建筑時(shí),任何人都可以更改數(shù)據(jù)。”人們在GitHub上管理家庭裝修項(xiàng)目。去年,甚至有人在GitHub上公開了德國的所有法律。當(dāng)然,GitHub仍然主要被程序員和開發(fā)人員所使用。
隨著曾經(jīng)的用戶轉(zhuǎn)變?yōu)樯a(chǎn)者,他們正在重新塑造開源的文化。
不會(huì)集中革命
當(dāng)大多數(shù)人聽到“開源”,他們認(rèn)為它是民主的、分布式的、平等的:每個(gè)人建設(shè)的東西放在一起,供其他人使用。
但是,實(shí)際上并沒有這樣。大多數(shù)開源軟件已經(jīng)被專業(yè)開發(fā)人員創(chuàng)建和維護(hù),他們與其他很像他們的開發(fā)人員互動(dòng)。
在GitHub之前,我花了很多時(shí)間思考和討論管理開源項(xiàng)目的最佳方式,因?yàn)閰f(xié)調(diào)一個(gè)開源項(xiàng)目的成本是很重要的。事實(shí)上,當(dāng)一個(gè)項(xiàng)目做的很好,并且增長成為一個(gè)足夠大的社區(qū)時(shí),項(xiàng)目比分裂成小項(xiàng)目成長更有意義。但一個(gè)軟件項(xiàng)目越大和越復(fù)雜,越難以做出貢獻(xiàn)。所以,各種各樣的成員的任務(wù)都是管理和生產(chǎn)項(xiàng)目,這往往導(dǎo)致一個(gè)項(xiàng)目之間生產(chǎn)和消費(fèi)的裂痕。
GitHub通過更分散的開源解決這個(gè)問題。
使用GitHub的工作流程是非常個(gè)人的。開發(fā)人員和設(shè)計(jì)人員直接對(duì)他們所開發(fā)的內(nèi)容負(fù)責(zé),只要他們已經(jīng)準(zhǔn)備好了就可以隨時(shí)發(fā)布。
這個(gè)工作流程很有用:它鼓勵(lì)個(gè)人解決問題。這也給所有用戶提供了一個(gè)新的開源文化的認(rèn)同;GitHub實(shí)際上是互聯(lián)網(wǎng)上對(duì)等生產(chǎn)的頭號(hào)身份供應(yīng)商。
我參與開源項(xiàng)目已超過10年,但不同的是,我不是這些項(xiàng)目的“會(huì)員”——我只是一個(gè)“用戶”,一個(gè)貢獻(xiàn)很小的用戶。我和項(xiàng)目維護(hù)者之間僅在我使用的各種小項(xiàng)目上,每周發(fā)生有限的幾次交流。
甚至更多的時(shí)候,它發(fā)生為另一種情況:我從未看過有人給我已經(jīng)發(fā)布的小項(xiàng)目發(fā)送任何代碼。
民主的權(quán)利下放
GitHub的第一個(gè)版本做了一件很好的事:他們使你的代碼更容易被發(fā)布。這對(duì)于許多重大項(xiàng)目來說足夠了,包括Ruby on Rails,幾乎可以立即移動(dòng)到GitHub上。
但接下來發(fā)生的事情更有趣:人們開始在GitHub上發(fā)布一切。推送代碼變得幾乎成為了例行程序,就像發(fā)微博。通過降低進(jìn)入壁壘,使其更容易協(xié)調(diào)和促進(jìn)開源,GitHub對(duì)普通用戶擴(kuò)大了對(duì)等生產(chǎn)。
今天,一個(gè)巨大前景是,簡單易懂的軟件都可以被過去沒有必要的深度技術(shù)知識(shí)參與大型開源項(xiàng)目階層的人所訪問。
這種生產(chǎn)者、貢獻(xiàn)者、消費(fèi)者之間的模糊關(guān)系自然值更小、項(xiàng)目更容易理解。例如,在2012年9月,GitHub上推動(dòng)“變更集合”活躍用戶中,有半數(shù)的人只推送不到5個(gè)變更集合,有22%(約44000人)每月只推送一個(gè)單一的變更。
這個(gè)業(yè)余化的開源軟件有一些明顯的好處。
使事情變得更容易使用
開源軟件的一個(gè)長期問題是完美兼容。糟糕的文檔、網(wǎng)站設(shè)計(jì)和可用性一般來說一直表現(xiàn)不佳,尤其是與許多專有同行相比。
但現(xiàn)在,隨著貢獻(xiàn)門檻的降低,非技術(shù)用戶看到這些領(lǐng)域是容易提高他們依賴軟件的地方。(這意味著神秘的錯(cuò)誤消息這樣的小事件得到更多的人性化解決,并且微小的一行CSS的變化,就可讓網(wǎng)站正確的呈現(xiàn)在古老的瀏覽器和手機(jī)上)。
在新的開源時(shí)代,人們希望使用技術(shù)而不必成為這方面的一個(gè)專家。易用性比以往更受重視。
防止過渡設(shè)計(jì)
工程師喜歡尋找更多的方法來解決問題,以及更聰明的解決方案。當(dāng)這些解決方案的消費(fèi)者與工程師志同道合時(shí),這也是挺好的,他們很高興用巧妙的方法來解決老問題。
但業(yè)余愛好者不一樣,他們對(duì)于解決方案的看法是:一旦一個(gè)問題解決了,他們將很少回頭重新審視它。并且因?yàn)闃I(yè)余愛好者只能構(gòu)建最理解的解決方案,它迫使開發(fā)人員創(chuàng)建簡單的解決方案,使困難的問題很容易理解。
支持更廣泛的生態(tài)系統(tǒng)
在Node.js,我積極參與,定義了足夠的簡單模式,人們可以編寫?yīng)毩⒌男觳㈦S意進(jìn)行推送。每個(gè)在生態(tài)系統(tǒng)中貢獻(xiàn)的人都可以使用這個(gè)值,不用任何協(xié)調(diào)。這是完全相反的大型垂直堆棧,其有著大量的工具和功能(如像ember, Dojo, and YUI那樣的集成插件系統(tǒng)),這是在專有的環(huán)境中取得成功所需要的。
但在開放的環(huán)境中,如GitHub上的Node.js,我們看到更小的API尺寸,可以輕松利用生態(tài)系統(tǒng)中值的其余部分,而不用協(xié)調(diào)(例如回調(diào)在jQuery上的API或節(jié)點(diǎn)的標(biāo)準(zhǔn)回調(diào)模式)。開發(fā)人員與庫之間的協(xié)調(diào)越少,我們可以創(chuàng)造的價(jià)值越大。
GitHub已經(jīng)被新一代的人們授權(quán)進(jìn)行協(xié)作、創(chuàng)造和生產(chǎn)。很多開發(fā)人員將對(duì)傳統(tǒng)的文化規(guī)范的丟失表示哀嘆,但未來已經(jīng)掌握在新一代手中,并且已經(jīng)在進(jìn)行改變。
這不僅僅是一個(gè)工具:我們正在見證一個(gè)新文化的誕生。