GitHub:代碼是程序員溝通最直接的手段
如果不是 Andreessen horowitz 的投資,估計(jì) GitHub 很難被福布斯、CNN、紐約時報(bào)等傳統(tǒng)媒體注意到。普通大眾之前不了解這個工具,是因?yàn)樗嚯x記者的世界太遠(yuǎn)了——GitHub 是一個程序員所使用的托管項(xiàng)目的服務(wù)。
但在一些程序員眼里,它不僅是托管項(xiàng)目的地方,還是“開源”項(xiàng)目的大本營,而且是提高程序員“技術(shù)水平”和“技術(shù)品味”的地方,更是一個程序員社交的地方。
目前托管在 GitHub 上項(xiàng)目的數(shù)量為 3263005 個,包括 Linux 的內(nèi)核、Ruby on Rails、jQuery、Apache 和最近流行的 Node.js 等等程序員所熟知的開源項(xiàng)目和框架。
為何 GitHub 如此受歡迎?
優(yōu)秀的項(xiàng)目管理工具
Artodia 所繪制的圖簡單而清晰,展示了程序員使用 GitHub 管理項(xiàng)目的一般流程:
- 首先,從原本的代碼倉庫(repository)中拷貝一份出來,創(chuàng)建一個分支(fork);
- 然后,你可以在自己的分支下修改代碼;
- 當(dāng)你的修改完成之后,可以將自己修改過的分支與原來的代碼倉庫中“合并”在一起。“合并”并不是將自己的代碼復(fù)制粘貼,覆蓋原來的代碼倉庫,而是只更新那些修改過的部分,代碼倉庫其他部分不會收到影響;
- 而若原本的代碼倉庫中發(fā)生了變動,這些變動也可以更新到程序員的分支中。
這意味著:
- GitHub 允許程序員方便的創(chuàng)立分支,實(shí)驗(yàn)自己的新想法,而不必?fù)?dān)心自己的實(shí)驗(yàn)會影響原本正在開發(fā)中的產(chǎn)品。
- 程序員可以通過簡單的命令,讓自己的分支與代碼倉庫的代碼保持一致,不必?fù)?dān)心版本混亂的問題;
程序員創(chuàng)建一個分支的時候,實(shí)際上是將原本的代碼倉庫拷貝出來,一份存放在 GitHub 的個人賬號下,一份保存在自己的電腦中。這意味著:
- 程序員工作不必依賴網(wǎng)絡(luò),即便是在脫網(wǎng)的環(huán)境下,也能夠順利工作,只要自己的電腦還有電;
- 參與項(xiàng)目的程序員,每人都有一份項(xiàng)目代碼的備份,能夠避免代碼丟失。
GitHub 能夠讓程序員毫無阻礙、隨時隨地地實(shí)驗(yàn)自己的新想法,而且不會影響項(xiàng)目本身,這是它吸引大量程序員和開源項(xiàng)目入駐的原因。
開源自由的文化
重視開源,是 GitHub 的產(chǎn)品、公司以及社區(qū)的重要特征。不但有名的開源項(xiàng)目入駐 GitHub,其本身也完全由開源技術(shù)打造。
GitHub 公司內(nèi)部的文化相當(dāng)崇尚開源精神,這個精神的核心是自由和平等。公司會在官方博客上歡迎每一位新加入的員工,配上大圖和一句話簡介,而且他們會讓員工挑選自己喜歡工作的地點(diǎn),不管辦公室還是在家,或是其它。而且,公司的管理方式也非常寬松與自由。
Wanstrath 告訴《華爾街日報(bào)》,許多員工感覺沒有管理層的時候,自己能夠更容易獲得成長。一直以來,GitHub 是一個沒有 “老板”的公司,雖然 Wanstrath 的職位是 CEO,但他一直堅(jiān)持名片上只印自己的名字。在 GitHub 工作,員工們一起討論項(xiàng)目的優(yōu)先級,不必接受來自管理層的命令,每個員工都可以自由加入自己喜歡的項(xiàng)目。
Preston-Werne 曾撰文一篇,表達(dá):“開源(幾乎)是一切”的觀點(diǎn):
- 開源代碼是對個人和公司而言,是優(yōu)秀的廣告,擁有很強(qiáng)的宣傳力;
- 當(dāng)你的開源項(xiàng)目流行開來,并吸引了很多人的注意,你會得到眾人的幫助,他們會幫你把工作完成得又快又好;
- 如果你開放了一個有用的代碼,你會吸引聰明的人的注意,他們會根據(jù)你的代碼,創(chuàng)建一個分支;他們也可能會直接向你提意見;
- 開源代碼是***的簡歷,它證明你的技術(shù)實(shí)力;
- 開源代碼能夠留住聰明的人;
- 將自己的代碼開源,可以看到別人是如何使用自己的產(chǎn)品的,他們會如何改進(jìn),讓你認(rèn)識到產(chǎn)品應(yīng)該如何改進(jìn);
- 將代碼開源可以減少重復(fù)做功。
程序員的交流
GitHub 吸引越來越多優(yōu)秀的開源項(xiàng)目進(jìn)駐。每個程序員能夠?yàn)g覽這些優(yōu)秀開源項(xiàng)目的代碼,從而提高自己的水平。
在 GitHub 上,你可以通過 GitHub 自身的“頁面”功能,將自己的想法整理出來,給其他人看。而他人也能夠直接提交 issue,提出自己的意見,其它人則在 issue 下討論問題。你還可以通過 Follow 的功能,跟蹤其它項(xiàng)目***的情況。
當(dāng)然,程序員之間的交流,最直接的就是“用產(chǎn)品說話”。如果你覺得一個產(chǎn)品原先的想法不是很好,但提意見又遭到反駁,那么你可以直接根據(jù)原來的版本,創(chuàng)建屬于自己的分支,開發(fā)出屬于自己的版本,實(shí)現(xiàn)自己的想法。
Mac 上面有名的文本編輯器 Notational Velocity(簡稱 NV)是一個有趣的案例。自 2002 發(fā)布***版以來,它就以簡潔的界面,方便易用而受到用戶的歡迎。不過,NV 之前一直缺乏用戶需的新特性,比如全屏模式、標(biāo)記語言 MarkDown 語言等等。
為了能夠?qū)崿F(xiàn)自己的想法,2010 年不少程序員將 NV 的源代碼拷貝出來,創(chuàng)建自己的分支,具體可以看這張圖片:
現(xiàn)在由 Brelt Terpstra 開發(fā)的分支版本 nvALT 2.0 是最有名的分支,它基本實(shí)現(xiàn)了當(dāng)時 Terpstra 當(dāng)時之所以創(chuàng)建分支的目標(biāo)——成為一個簡潔的書寫、出版應(yīng)用。有趣的是,這些分支也促進(jìn)了 NV 的改進(jìn)。
GitHub 讓程序員方便快速地參與一個開源項(xiàng)目:一切不過“Fork”一下而已。
總結(jié)
GitHub 原本的口號是“Git 代碼托管(git repository hosting)”,現(xiàn)在變?yōu)?ldquo;Social Coding(社交化編程)”,更加符合自身的定位。
代碼,是程序員溝通的最直接的手段。
附上 2007 年 10 月 19 日,GitHub ***次 Commit 的記錄,由 GitHub 創(chuàng)始人之一 Chris Wanstrath 發(fā)出:
題圖來自 felixtriller