十年前的開源軟件還沒有把科技圈搞的亂七八糟,而當(dāng)時(shí)應(yīng)用最廣泛的開源軟件要屬Linux系統(tǒng)了,甚至華爾街都把Linux部署在自己的服務(wù)器上。這說明了一點(diǎn),利用全世界應(yīng)用最廣泛的免費(fèi)分享軟件一樣能夠創(chuàng)造價(jià)值,甚至可以賺錢。然而,開源社區(qū)依舊是個(gè)非常小的群體,那時(shí)如果某個(gè)程序員或極客想啟動(dòng)一項(xiàng)全新的開源項(xiàng)目,通常會(huì)選擇一個(gè)不算穩(wěn)定的網(wǎng)站——SourceForge。
Chris DiBona當(dāng)時(shí)在Google負(fù)責(zé)開源項(xiàng)目,也是一名開源大師,他非常擔(dān)心目前的開源軟件行業(yè),因?yàn)樗X得不該“把所有雞蛋都放進(jìn)一個(gè)籃子里”。
“我們只有一個(gè)‘籃子’,SourceForge。”
因此,和許多公司一樣,Google也建立了自己的開源平臺(tái)Google Code,幫助用戶在上面自建開源項(xiàng)目。Google正是依靠Linux和其他開源軟件,才成為了一家互聯(lián)網(wǎng)巨頭,而除了SourceFore,Google Code也成了程序員的另一個(gè)選擇,確保開源可以繼續(xù)發(fā)展,并且在互聯(lián)網(wǎng)圈子里繼續(xù)傳播這種理念。
但之后,位于舊金山的GitHub橫空出世,讓開源理念傳播的更快。
終于,在Google Code推出十年之后,Google宣布將關(guān)閉這一平臺(tái)。當(dāng)然,人們對(duì)此并不感到意外,因?yàn)樵谶^去的三年時(shí)間里,Google已經(jīng)從這個(gè)平臺(tái)移出了約1000個(gè)開源項(xiàng)目。Google Code退出歷史舞臺(tái)并不會(huì)造成太大影響,因?yàn)榻^大多數(shù)開源項(xiàng)目都已經(jīng)把自己的源代碼放在GitHub上,其中就包括從Google Code上移出的近千個(gè)項(xiàng)目中的一部分。
有人認(rèn)為,Google之所以推出Google Code,是出于“自私”,因?yàn)樗麄兿M瓶馗?,盡可能在自己的平臺(tái)上保存開源代碼(他們也習(xí)慣這么干了)。但最終,GitHub還是甩開了Google,因?yàn)樗麄兡転槌绦騿T提供更多價(jià)值,相比于SourceForge、Google Code等開源平臺(tái),GitHub軟件開發(fā)民主化更徹底,這恰恰是軟件開發(fā)圈子里開發(fā)人員最看重的一筆“財(cái)富”。
屬于程序員的GitHub
GitHub目前已經(jīng)成立七年了,擁有900萬注冊(cè)用戶量,每月非注冊(cè)用戶訪問量大約為2000萬。根據(jù)網(wǎng)站流量監(jiān)測(cè)服務(wù)商Alexa的數(shù)據(jù)顯示,GitHub是全球最受歡迎的前100家網(wǎng)站之一。
GitHub上面沒有名人八卦新聞,也沒有貓咪視頻和社交聊天,而是程序員經(jīng)常使用的一個(gè)專業(yè)網(wǎng)站。GitHub戰(zhàn)略副總裁Brian Doll說道:
“全球排名前100名的網(wǎng)站,很大一部分是媒體網(wǎng)站,還有些是社交網(wǎng)站,另外有三十家是和Google相關(guān)的網(wǎng)站,當(dāng)然還有我們GitHub。”
諷刺的是,GitHub的成功意味著開源世界又重新回到了“一個(gè)中央儲(chǔ)存庫放置所有代碼”的時(shí)代。但這一次,和其他大多數(shù)程序員一樣,DiBona卻對(duì)GitHub采用這種方式贊賞有加,因?yàn)閷⑺虚_源代碼保存在一個(gè)地方,更有助于用戶便捷協(xié)作。另外和SourceForge不同,GitHub獨(dú)特的協(xié)作處理方式,也讓“所有雞蛋放在一個(gè)籃子里”的風(fēng)險(xiǎn)降到了最低。GitHub非常重要,但是又不會(huì)局限在上面。
因此,即便所有的代碼都被放置在一處,GitHub依舊能“無處不在”,有時(shí)悖論可以讓人們真正看到開源軟件之美,也能讓人們感受到開源對(duì)未來技術(shù)的重要性。
Git
雖然大家都知道把雞蛋放在一個(gè)籃子里風(fēng)險(xiǎn)很高,但GitHub卻用這種方式創(chuàng)造了開源軟件奇跡,那如何解釋這種悖論呢?答案就是Git。Git是GitHub開發(fā)的一套“版本控制”軟件,創(chuàng)造這套軟件的正是Linux之父Linus Torvalds。實(shí)際上,當(dāng)Linus在2005年開發(fā)出這套軟件的時(shí)候,他只是希望能找到一個(gè)更好的方法去構(gòu)建Linux。有了Git版本控制軟件,人們可以同時(shí)編輯相同的Linux代碼,而不用擔(dān)心影響到其他人。
簡單的說,Git允許任何人將Linux源代碼下載到自己的電腦上進(jìn)行修改,之后可以隨時(shí)將自己所做的改動(dòng)上傳到Linux中央存儲(chǔ)庫內(nèi)。Git可以將每個(gè)人的改動(dòng)無縫整合在一起。這就是Git軟件的天才之處,GitHub深諳此道。
GitHub創(chuàng)建了一個(gè)網(wǎng)站,讓每一個(gè)其他項(xiàng)目都能像Linux項(xiàng)目那樣,實(shí)現(xiàn)同步無縫編輯,程序員迅速掌握了這種代碼編輯方式。Rob "CmdrTaco" Malda是科技網(wǎng)站Slashdot總編輯,他評(píng)價(jià)GitHub這種開源革命:
“GitHub運(yùn)行非常流暢,操作界面也很性感、現(xiàn)代。”
如今,絕大多數(shù)軟件公司都會(huì)將自己的開源項(xiàng)目部署在GitHub上,其中就包括Google,F(xiàn)acebook,Twitter,甚至連過去厭惡開源軟件的微軟也不例外。最近幾個(gè)月,當(dāng)微軟將其最重要的源代碼實(shí)施開源時(shí),他們選擇了GitHub,而不是自己旗下的開源網(wǎng)站CodePlex。
S. "Soma" Somaseger負(fù)責(zé)為微軟的軟件開發(fā)人員采集工具,這位微軟資深員工表示CodePlex將會(huì)繼續(xù)運(yùn)營,Sourceforge和BitBucket這些源代碼存儲(chǔ)庫也不會(huì)很快消失。
“我們希望這些開源平臺(tái)能夠繼續(xù)存在,至少可以作為一種其他選擇。”
但是當(dāng)微軟選擇開源Microsoft.NET項(xiàng)目時(shí),他還是選擇了GitHub。
“我們希望滿足開發(fā)人員的需要,不得不說,GitHub是目前最大的開源社區(qū)。”
當(dāng)“私有”遇見“公開”
實(shí)際上,Git的厲害之處在于它能讓開源社區(qū)不局限在GitHub上,程序員不僅可以將某個(gè)特別項(xiàng)目的源代碼下載到本地電腦上面,也能將代碼分開,建立新的獨(dú)立項(xiàng)目,選擇哪些可以公開,哪些為私有。
或許你已經(jīng)發(fā)現(xiàn)了,其實(shí)Git和GitHub并不僅僅為了開源軟件而存在,他們也可以成為一個(gè)“私有”代碼平臺(tái)。在GitHub上,用戶可以在“私有”和“公開”模式下輕松切換。程序員既能在上面“干私活兒”,也能和其他人協(xié)作處理項(xiàng)目,這正是開源的魅力所在。
Google就在按上述套路出招,“Go”是他們新一代的編程語言,它在GitHub開源平臺(tái)上是完全公開的。另外,一個(gè)名為Kartes的項(xiàng)目在GitHub上則是“私有”狀態(tài),但它之后又支持了一個(gè)“公開”項(xiàng)目KUbernetes。而我們熟知的Chrome瀏覽器則是一個(gè)Google的“私有”Git服務(wù)。
微軟應(yīng)用GitHub的方式與Google也很相似。在微軟內(nèi)部,他們使用Git軟件來管理其Visual Studio和Team Foundation Server工具。當(dāng)然,微軟也在GitHub上公開分享代碼,向全世界提供軟件工具。微軟甚至向其他公司推薦Git版本控制軟件,現(xiàn)在微軟20%的客戶或多或少都在使用Git軟件。
程序員也是人
更重要的是,程序員社區(qū)規(guī)模已經(jīng)變得越來越大。我們知道,科技世界里最重要的就是這幫人,隨著GitHub躋身全球網(wǎng)站前一百強(qiáng),表明軟件正在變得越來越重要。
Igor Minar是Google工程師,他負(fù)責(zé)監(jiān)控Angular開源項(xiàng)目,該項(xiàng)目部署在GitHub上,并且有數(shù)萬名程序員參與。他透露,為了配合日益壯大的程序員社區(qū)規(guī)模,GitHub正在嘗試提供更好的工具以支持較大規(guī)模的開源項(xiàng)目。
程序員無處不在,很多人都在GitHub上為數(shù)萬個(gè)開源項(xiàng)目做貢獻(xiàn)。Minar把GitHub開源平臺(tái)形容是一個(gè)“義賣市場(chǎng)”,可以提供程序員所需的源代碼,而且是免費(fèi)的!
“如果你需要一切代碼,上GitHub就可以了,在上面肯定能找到你所需要的。”
開源時(shí)代已經(jīng)到來,最終,開源將幫助我們以更快的速度去構(gòu)建、改善我們的世界。