GitHub 是怎麼火起來的?

最近只覺得越來越多的開源項目遷移到 Github 上,感覺一瞬間就超過了 Sourceforge,有什麼必然的原因么?


Github不是突然火起來的,在Ruby社區Github其實從一開始就很流行,我們2009年搞Ruby大會就邀請了Github的人來上海了,早在2009年Github在國內的Ruby社區就很有名氣了。之所以今天大家突然覺得Github火,只不過是因為剛拿到1億美元融資的眼球效應罷了。

Github是一個從Ruby社區誕生出來的項目,這幾年我也算是看著Github發展起來的,可以說Git在Ruby社區普及和爆發幾乎是必然的事情。Git雖然是Linux內核社區開發出來的,但前幾年一直不溫不火。真正在開源社區普及和爆發,是從Ruby社區和Github開始的。

Rails是一個高度集成的Web框架,通常情況下一到兩個Rails程序員做一個Web項目就夠了,一旦多人同時在一個Rails項目上工作,代碼提交和協作會遇到很大的麻煩,更不要說開源項目大規模遠程協作了。這算是Rails項目的一個痛點:單個工程師開發效率很高,但是團隊協作很困難,CVS/SVN這種集中提交式的SCM都不能很好的支持Rails團隊的工作模式。事實上我的Ruby團隊規模一大也遇到了這個難題,代碼提交經常衝突,協作困難。

Git這種良好支持分支管理的分散式的SCM真正解決了這個問題:每個工程師在自己本地分支上開發,完成功能以後往master分支合併。我們Ruby團隊使用Git以後,代碼提交衝突問題迎刃而解。所以Git這種SCM像是給Ruby社區量身打造的一樣,所以你可以看到Ruby社區幾乎沒有不用Git的。

Github本身也是這種需求下的產物,一些灣區的Ruby社區的程序員使用Git以後,找不到好的Git託管網站,於是就開發了Github出來。然後Rails框架率先遷移到Github上,形成了示範效應,整個Ruby社區呼啦啦都遷上去了。Ruby社區另有一好處:各種開源庫和包都統一用Gem格式發布,而一旦大量Gem都遷移到Github上了,Ruby程序員就跟著都開始用Github了。我當年就是為了跟一些gem的庫就開始用Gihub的。

這裡多說兩句:Ruby社區是一個相當團結的社區,很少分裂,經常是一旦採用一個技術,整個社區就會迅速跟進和普及。雖然在國內Ruby是個小眾的編程語言,但是在矽谷,Ruby很火,被譽為雲計算時代的Web編程語言。Ruby整個社區都遷移到Github,開始對其他編程語言社區形成示範效應,其他編程語言社區接著跟進。

Ruby程序員因為做Web開發,經常用JavaScript,很多Ruby社區核心人員本身也是JS社區的核心人員,JS社區也就很快進駐Github。同時Ruby社區因為DHH的示範效應,基本上整個社區都是人手一台Mac,天然對OSX比較近,而隨著iOS開發的繁榮,大量的Ruby程序員跟進開發iOS app,帶動iOS社區也從Github上成長起來了。看看今天的Github,Ruby,JS和iOS的項目比例是非常高的,Java比例則遠不如Sourceforge和Google Code,這有一定的社區淵源。

Github也很重視社區活動,經常搞Drinkup,此外Github產品上有很多領先的地方,例如從網站產品上定位為social coding,支持大規模開源項目分散式協作的各種工作模式等等。

不過Github現在估值這麼高,我認為主要還是雲計算SAAS平台的概念帶來的,它給企業用戶提供Private代碼倉庫託管收費服務是盈利的。雲平台現在估值都很高,Dropbox,Evernote都遠比Github估值高,所以Github現在的估值高也不算意外。


一個是 git 本身在開源社區裡面的流行,這是主要是因為 Linus 的影響非常大。
然後就是因為 Github 本身。創始人都是在 Ruby 社區裡面非常活躍的人。所以大家可以看到在 Github 上 Ruby 的成分非常多。他們的創始人曾經在 Startup Open Sourced 這本書上提到他們是如何在一個 Ruby 的線下聚會遇到,所以他們非常重視線下的社區聚會活動。他們的 Github Drinkup 活動從灣區開始,後來變成用戶自發組織,變成全球很多開發者聚集的城市都會搞的活動。這樣的社區號召力使得 Github 從一個源代碼管理的工具變成了真正的開發者社區。
在發展過程中,Github 獲得了開源社區非常大的支持,Ruby on Rails 和 Linux Kernel(根據張西家在評論中的勘誤,Linux Kernel 的代碼是直到 2011 年秋季 http://kernel.org 事故之後才臨時放到 Github 的。之前的 http://github.com/mirrors/linux[-2.6].git 是有 Github 負責同步的非官方鏡像。 )的代碼都被放到了 Github 上,這是非常重要的里程碑。
Github 本身非常重視從開源社區中吸取精華,他們的 wiki 系統是 gollum,Github Pages 是 Jekyll,這兩者都 host 在 Github 上並開源,並也成為了 Github 產品中非常好用的部分。
Github 在社區方面的努力還包括他們的 Changelog 播客,招聘程序員的 Github Jobs 以及一大堆有趣的紀念品,比如那個「fork you」的 Tee。這些都從側面幫忙 Github 建立了獨一無二的品牌。
也許這些都是一些側面原因,但是我會傾向認為 Github 的成功來自他們對社區的重視。

PS - 如何和 Sourceforge 相比,好像前者有一段時間在國內是不能訪問的。


我完全不同意@范凱 的意見,這件事上他感情用事了。

實際上github之所以火這個故事,有幾種說法。@范凱的說法只是其中的一種,ruby的粉絲的角度的看法。但是這個事情有需要說不通的地方,其實Linus大神開發git並沒有多久。最初的階段,git只有linux的核心成員在用,而且由於起古怪的邏輯和內在思想,讓人根本很難上手。而且即使今天我看到的情況,也是很多人在把git當svn來用。實際上@范凱之所以會這麼說,也是因為他在寫這個東西的那一刻有些糊塗了。其實git作為分散式的代碼管理程序鼻祖,恰恰就是認為存儲應該是分散式的,是不要求有一個伺服器的。而實際上最初的使用git的一種方式,是在形成發布的版本後,在把代碼發布到svn伺服器上,對外發布出去的。而進一步說,github是一個代碼託管網站,而不是你的代碼存儲網站。另外說點題外話,更加有效的使用git這些軟體的方法,應該是直接的相護操作,而盡量避免跟伺服器打交道。只能在掉線將發生的時候才去使用伺服器。但是確實這樣作很古怪,而且管理起來比較繁瑣,許可權更加難於實現,所以我看到的基本沒有這樣原教旨主義的。

而由於github的產生確實是因為ruby社區的貢獻。也就是在最初灣區的一些人,因為需要(當然我猜測也是因為太多的人看重了git的速度,而根本就沒有理解git的內涵,就如同現在一群根本不懂agile的人天天教agile一樣)一個代碼託管的網站。而sf這個東西太面向用戶了,google code還不夠那麼cool,於是github就誕生了。但是請注意,最初的github僅僅是小眾的小眾,而且不溫不火的持續的一段時間。恰恰是在他們活得融資的前後,用戶數量才開始爆發。這段時間內發生的事情才是關鍵。也就是說git和ruby以及rails,都不是關鍵。

在這段時間,有幾個關鍵的手段,一個是Pages,一個是許可權,另外一個是閉源的商業用途的實現。另外還有幾個關鍵的時間點,發生的關鍵性的一些事件,比如linux核心代碼等等。也就是說github團隊不僅僅作對的事情,而且在關鍵時刻還抓住了時機作好了事情。特別是github趕上了javascript社區的爆發,這一點十分重要。當然因為對ruby的喜歡,@范凱認為是ruby社區的人引領了這個潮流。

但是我不得不說,實際上是node.js社區才是領袖。當然我要在這裡澄清一點,我並不認為我這裡是在誇hode.js,而恰恰我是要貶低他們。我認為js這種語言,是一種混亂的語言,起社區也是混亂的社區,人員也是一群混亂的人。當然這點確實跟rails社區開始階段很類似。而rails變為merb之後,ruby社區已經沒那麼多噪音了。噪音多,紛爭就多,分支自然也就多,於是git自然就用途多了,github自然也就用的多了。注意,我這裡的意思是git和github是平行的,並沒有git多,導致github的多。人類的語言無法表示並行,這裡就是如此。而github一下才就趕上兩次熱潮,rails和node.js,自然運氣也很好。

另外他們的Pages也很是合乎時機,至少在國內很多blog都轉到那裡去了。而且即使是非技術人員,很多人在用這個東西。這點在國內感受應該非常明顯。這點無疑給他們又增加了很多用戶。

同時另外一個領域,也就是移動開發,因為最近這個比較熱門,收入也多,資金也多,吸引的關注也多。而恰恰從事這個方面的人員,也剛好很多是javascript社區的人,因此這樣的人自然也就多。

注意我在這裡要強調一點,跟@范凱的邏輯相反,並不是因為你用什麼東西,作什麼事情,所以你就是什麼人,而是因為本身你就是什麼人,才會去用什麼東西,作什麼事情,並且會以什麼方式去作什麼事情。這個我跟他分歧的關鍵所在。

而實際上對github的估值我覺得根本就不是問題,他們現在僅僅是活得了一筆投資,而不是被估值後賣出。也就是說他們僅僅是接受了1一個億的投資,而是他們現在就值那麼多。而且就我看來,凡是作SCM能成功的,價錢都不會太小,而且也基本都不會去接受什麼外部的投資,至於上市更加不可能。特別是能夠提供雲計算配置管理工具的公司,更加沒有太多資金的需要。所以他們這麼快就接受了投資,我感覺很奇怪。或者更加乾脆的說,他們接受了這筆投資,反而說明他們目前的狀況沒那麼好。

所以github走到現在的關鍵我看是下面幾條,第一不較真,非要原教旨;第二是及時與眼光;第三是運氣也足夠。

當然github的繁榮也有些需要認清楚情況的,比如很多實際是作個人存儲的庫,比如我自己的配置文件就放在那裡,有些其他的文件也存在那裡。我看這塊的東西,數量十分巨大。其次很多項目根本就是才起步,就結束的狀態。而且github目前項目的規模普遍比較小,而且很多項目實質上就是一個項目。

2015年5月31日添加
cjb/GitTorrent · GitHub
今天看到的,附在後面算是個說明。


我還以為是因為他的圖標是賣萌貓頭所以才紅的呢


孤陋無知的我一直以為是自從程序員約架事件之後Github才火起來的,Orz!

什麼樣的程序比試姿勢適合薛非?


我覺得首先是因為git比svn等版本控制系統好用得多了。在github之前,Sourceforge、google source等代碼託管網站都沒有支持git,而得益於git本身的很多特性,使得github相比較Sourceforge等可以提供如fork、pull request等特性,而恰恰因可以直接fork一個項目,然後編寫自己的代碼,再通過pull request對源項目請求合併代碼,又使得為開源項目貢獻代碼變得從未如此簡單

對於崇尚「外貌協會」的人,github的UI實在比Sourceforge等好看多了


還有一些大牛職業社區網站
http://doximity.com
http://quantiamd.com
http://behance.net
http://dribbble.com
Stack Overflow
GitHub 路 Build software better, together.


難道不是因為它是全球最大的同性交友網而火起來的?


貌似是各大package-manager都在那吧。

nodejs npm/bower/component ...
rubygems
perl cpan
python pip
OS X homebrew
sublime text的package-control 那個repository添加插件的方式還得pull request


從我自己使用訪問github頻率,主要是因為,googlecode和sf很多時候訪問不了。
再加上github本身的各種優勢


sf被ban了_(:з」∠)_


個人確實覺得Git要比svn好用的多,我給公司部署的git代碼伺服器用了三年了,一直很穩定,結果換了個總經理和產品經理,就要把代碼全部遷移到svn,簡直服了,就簡單的一個項目就要創建3個不同的倉庫來管理,測試,檢測,生產,每次都要重新 update 然後編譯,簡直是浪費生命,為什麼現在國內一些所謂資深的程序員這麼的抵制新生的技術呢。。。。搞不懂


KCV的傲嬌開發娘在twitter上表示她使用GitHub進行版本管理~


liyuunxiangGit/CircleOfFriendsDisplay 唉!慚愧,寫的東西star都沒過百


應為開源啊!
https://github.com/mumuy


曾經只用過svn,自從之前跟團使用github之後,表示再也不想切到svn了!剛開始用github我是拒絕的,提交個代碼憑空多出好幾步, 簡直煩得要死,後來發現每一步都是有特定意義,用慣了小夥伴再也不用擔心自己的改動搞壞產品,拉分支簡直在方便不過了,爽。可惜跳槽了之後又變回svn,真是折磨,好消息是月底遷移到git, 各種期待中


看了這麼多 受益匪淺 原來這次是Git的真身 我用Git純粹是流行 好玩


github顛覆以往的svn版本控制,火起來是必然的。


推薦閱讀:

TAG:Git | GitHub | X 是怎麼火起來的 |