自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【2014】GitHub中國(guó)開發(fā)者年度報(bào)告

開發(fā) 后端 前端 系統(tǒng) 開源 移動(dòng)開發(fā)
目前 GitHub 上的注冊(cè)用戶數(shù)量已經(jīng)超過(guò) 1000 萬(wàn),為了準(zhǔn)確我們抓取了所有用戶的個(gè)人信息并從中篩選出了所有中國(guó)開發(fā)者、中國(guó)組織和美國(guó)開發(fā)者、美國(guó)組織,然后抓取了他們所有的公開項(xiàng)目信息進(jìn)行分析。報(bào)告的內(nèi)容分為三個(gè)部分,第一部分是中國(guó)開發(fā)者的現(xiàn)狀,第二部分是中美開發(fā)者的對(duì)比,第三部分是國(guó)內(nèi)優(yōu)秀開源項(xiàng)目作者的采訪。

[[127178]]

GitHuber.info 團(tuán)隊(duì)出品

前言

不知道從什么時(shí)候開始,GitHub 成為了潮流,沒(méi)有個(gè)把 Star 上街都不好意思和人打招呼。由于做了 GitHuber.info,我們有機(jī)會(huì)接觸到很多 GitHub 的數(shù)據(jù),加上@Python 愛(ài)好者 的建議,的建議,我們決定自己抓取、分析數(shù)據(jù),做一個(gè)報(bào)告出來(lái),讓大家對(duì)中國(guó)開發(fā)者在 GitHub 上的現(xiàn)狀有更具體的了解。

目前 GitHub 上的注冊(cè)用戶數(shù)量已經(jīng)超過(guò) 1000 萬(wàn),為了準(zhǔn)確我們抓取了所有用戶的個(gè)人信息并從中篩選出了所有中國(guó)開發(fā)者、中國(guó)組織和美國(guó)開發(fā)者、美國(guó)組織,然后抓取了他們所有的公開項(xiàng)目信息進(jìn)行分析。

報(bào)告的內(nèi)容分為三個(gè)部分,第一部分是中國(guó)開發(fā)者的現(xiàn)狀,第二部分是中美開發(fā)者的對(duì)比,第三部分是國(guó)內(nèi)優(yōu)秀開源項(xiàng)目作者的采訪。

第一部分從個(gè)人信息、項(xiàng)目信息和組織信息三個(gè)方面對(duì)中國(guó)開發(fā)者進(jìn)行了統(tǒng)計(jì),由于數(shù)據(jù)量是大長(zhǎng)尾,我們將相似的區(qū)間進(jìn)行了合并,讓圖的可讀性更高。

第二部分同樣從個(gè)人信息、項(xiàng)目信息和組織信息三個(gè)方面對(duì)中美開發(fā)者進(jìn)行了對(duì)比,希望借此讓大家更了解我們和美國(guó)開發(fā)者之間的異同。

第三部分我們采訪了幾個(gè)國(guó)內(nèi)優(yōu)秀開源項(xiàng)目的作者,我們有意選擇了不同類型的項(xiàng)目,從而可以展示不同的開源項(xiàng)目發(fā)展路線,讓不同類型的開發(fā)者都能有所收獲。目前國(guó)內(nèi)的開源環(huán)境還處于發(fā)展期,仍有很多方面需要探索,希望借此拋磚引玉讓大家深入思考開源。

由于我們是第一次做這樣的報(bào)告,加上一些時(shí)間、設(shè)備方面的限制,并沒(méi)有做出我們期望的所有報(bào)告內(nèi)容和展示效果。不過(guò)從題目就可以看出來(lái),這個(gè)報(bào)告我們會(huì)一直做下去。失敗的事情太多了,也不差我們這一件。不過(guò)萬(wàn)一成功了呢,萬(wàn)一為大家?guī)?lái)一些價(jià)值呢?想做的事情還是要去試一試的。

這是 1.0 版,之后我們還會(huì)根據(jù)大家的反饋不斷完善和更新內(nèi)容,因此我們非常希望大家能提出各種意見(jiàn)和建議,微信微博郵件網(wǎng)站,想用哪個(gè)都可以,我們會(huì)全部記錄下來(lái)。

非常感謝欒俊清和夏天晗,作為 GitHuber.info 團(tuán)隊(duì)的一員,大家為這份報(bào)告付出了太多;感謝所有接受采訪的作者,在百忙之中抽出時(shí)間來(lái)耐心回答我們一連串的提問(wèn);感謝各位顧問(wèn),為這份報(bào)告提出了很多有用的建議——雖然并不是每個(gè)人都會(huì)發(fā)聲,但是即使作為觀眾,也給我們帶來(lái)了無(wú)盡動(dòng)力;感謝何斌協(xié)助挖掘數(shù)據(jù);最后,還要感謝看報(bào)告的每一個(gè)你,報(bào)告本身毫無(wú)價(jià)值,是你們的注視給它注入能量,讓它能夠發(fā)光,謝謝你們,謝謝大家!

梁杰

2015. 1.29

中國(guó)開發(fā)者數(shù)據(jù)統(tǒng)計(jì)

個(gè)人信息

從上下兩幅圖中可以看出中國(guó)區(qū)程序員的活躍時(shí)段,右側(cè)的圖例是 GitHub 的各個(gè)事件,最高的灰色是 Push,次高的橘黃色是 Watch??梢钥闯?,每周六的活躍度最低,周日的活躍度比周五還高。每天的活躍度有三個(gè)高峰:上午、晚上和半夜,半夜的最高,可見(jiàn)大家都是夜貓子。

polyrabbit 用過(guò) 129 種語(yǔ)言,原因是他的項(xiàng)目 polyglot 中包含一個(gè)編程語(yǔ)言的語(yǔ)料庫(kù),其中收集了各種語(yǔ)言的代碼段。

由于項(xiàng)目中可能包含第三方庫(kù),所以統(tǒng)計(jì)出的語(yǔ)言數(shù)會(huì)稍大于實(shí)際使用的語(yǔ)言數(shù)。不過(guò)即便如此,還是有很多人掌握多門語(yǔ)言。

之所以使用字節(jié)而不是行數(shù),是因?yàn)閺?GitHub 的 API 拿到的就是字節(jié)。此外,我們也認(rèn)為字節(jié)比行數(shù)更精確一些。

可以看出絕大多數(shù)開發(fā)者的總代碼量集中在 10 萬(wàn)~100 萬(wàn)字節(jié)這個(gè)區(qū)間,可以在這里統(tǒng)計(jì)一下你的代碼量,看看處于哪個(gè)區(qū)間。

去 Fork 和不去 Fork 的差別非常之大,去掉 Fork 之后基本上數(shù)量都會(huì)下降一個(gè)數(shù)量級(jí),可見(jiàn)大家非常喜歡 Fork。在我們的理解中,F(xiàn)ork 就表示你想要給項(xiàng)目提交代碼,如果只是關(guān)注的話 Star 就完全夠用了,F(xiàn)ork 過(guò)來(lái)項(xiàng)目還會(huì)干擾查看自己項(xiàng)目。

Fork 最多的那個(gè)朋友有 8000 多個(gè)項(xiàng)目,很難想象打開自己項(xiàng)目列表的時(shí)候是一種什么體驗(yàn),大家可以去體驗(yàn)一下。

絕大多數(shù)開發(fā)者的粉絲數(shù)都沒(méi)有超過(guò) 10 個(gè),超過(guò) 1000 個(gè)粉絲的開發(fā)者極其少見(jiàn)。事實(shí)證明,互粉最多只能走到第三個(gè)區(qū)間,到第四個(gè)區(qū)間必須要有優(yōu)秀的開源項(xiàng)目,GitHub 是一個(gè)靠代碼說(shuō)話的地方。

Star 數(shù)的統(tǒng)計(jì)顯示大多數(shù)開發(fā)者的 Star 數(shù)都在 500 以內(nèi)。Star 就像收藏夾,內(nèi)容太多反而會(huì)影響使用。目前已經(jīng)有了一些不錯(cuò)的 Star 項(xiàng)目管理工具,比如 oh my star,可以借助這些工具充分發(fā)揮 Star 的價(jià)值。

關(guān)注的價(jià)值在哪里?似乎是可以看看大神們每天都在做什么。不過(guò) GitHub 作為一個(gè)程序員的社交平臺(tái),在交互方面似乎還是稍重了一些,并不能像微博那樣易用,用 GitHub 的 API 實(shí)現(xiàn)一個(gè)移動(dòng)版是個(gè)不錯(cuò)的選擇。

項(xiàng)目信息

單個(gè)項(xiàng)目的代碼量大多集中在 1 萬(wàn)到 10 萬(wàn)字節(jié)這個(gè)區(qū)間, 前端項(xiàng)目大多短小精悍,或許與此有關(guān)。之后我們會(huì)統(tǒng)計(jì)不同語(yǔ)言的項(xiàng)目代碼量分布,看看各個(gè)語(yǔ)言的繁瑣程度。

分⽀⽅面,⼤量的項(xiàng)目都在 3 個(gè)以下,這反映出⼤部分項(xiàng)目還是純個(gè)人開發(fā),并沒(méi)有達(dá)到需要規(guī)范分支的程度。隨著項(xiàng)目的不斷膨脹,分⽀的管理也會(huì)變成很重要的⼀環(huán)。

PR 和 Issue 的分布并不意外,90% 的項(xiàng)目幾乎沒(méi)有 PR 和 Issue。在采訪李成銀的時(shí)候我們也討論過(guò)這個(gè)問(wèn)題,反饋對(duì)一個(gè)開源項(xiàng)目來(lái)說(shuō)非常重要,即使沒(méi)有能力提 PR,也可以盡量提 Issue,讓項(xiàng)目越走越好。

項(xiàng)目 Star 數(shù)
vinta/awesome-python 9083
numbbbbb/the-swift-programming-language-in-chinese 8078
julycoding/The-Art-Of-Programming-By-July 5500
astaxie/build-web-application-with-golang 5452
Trinea/android-open-project 5408
justjavac/free-programming-books-zh_CN 4749
tommoor/tinycon 4231
astaxie/beego 3678
greatfire/wiki 3677
binux/pyspider 3602

組織信息

 

 

組織部分總體的分布趨勢(shì)和項(xiàng)目很類似,不過(guò)各項(xiàng)統(tǒng)計(jì)按比例來(lái)算要比項(xiàng)目信息稍差一些。按理說(shuō)組織中的項(xiàng)目應(yīng)該更容易吸引成員參與,從而在 PR、Issue 上有更好的表現(xiàn)。反過(guò)來(lái)說(shuō),目前中國(guó)的組織并沒(méi)有充分發(fā)揮組織的作用,對(duì)開源項(xiàng)目的發(fā)展推動(dòng)不大。目前國(guó)內(nèi)的優(yōu)秀開源項(xiàng)目主要還是依靠線下團(tuán)隊(duì)的合作開發(fā),距離美國(guó)開源項(xiàng)目的眾包模式還有些差距。

項(xiàng)目 Star 數(shù)
ecomfe/ECharts 5240
haiwen/seafile 2625
fastos/fastsocket 2558
railsbp/rails_best_practices 2545
alibaba/tengine 2429
cNode.js/nodeclub 2226
nomad/cupertino 2166
allmobilize/amazeui 2140
springside/springside4 2087
nomad/shenzhen 2038

#p#

中美開發(fā)者對(duì)比

個(gè)人對(duì)比

圖中左側(cè)圖例由上至下的順序就是語(yǔ)言的排名,餅圖中順時(shí)針?lè)较蛞彩钦Z(yǔ)言的排名。

可以看出 JavaScript 和 CSS 占絕對(duì)優(yōu)勢(shì),兩者加起來(lái)接近 1/3。中美差別比較大的是 Java 和 Ruby,這兩個(gè)語(yǔ)言的排名幾乎完全對(duì)稱。作為國(guó)內(nèi)的大熱門 Java 排在前面并不奇怪,但是另一個(gè)大熱門 PHP 卻并不靠前,甚至還比美國(guó)區(qū)的 PHP 使用率低,似乎國(guó)內(nèi)的 PHP 愛(ài)好者們并不太熱衷于開源。

右側(cè)是中美個(gè)人統(tǒng)計(jì)的對(duì)比,第一張和第三張圖中美的分布非常相似,第二張和第四張圖中稍有差別,在第一個(gè)區(qū)間中國(guó)的比例要小于美國(guó),其他區(qū)間中國(guó)的比例要大于美國(guó)。

第一個(gè)區(qū)間是不活躍的用戶,可以看出美國(guó)的不活躍用戶比例比中國(guó)大。從第二個(gè)區(qū)間開始是活躍用戶,中國(guó)的比例大于美國(guó)。

之所以會(huì)出現(xiàn)這樣的情況,主要是因?yàn)槊绹?guó)開發(fā)者的數(shù)量很大。我們過(guò)濾出的中國(guó)開發(fā)者約 6 萬(wàn) 7 千人,而美國(guó)開發(fā)者有約 36 萬(wàn)人,在這種情況下,美國(guó)有更大比例的不活躍用戶也可以理解,量的上升往往帶來(lái)質(zhì)的下降,希望在總量相當(dāng)?shù)臅r(shí)候我們?nèi)阅茉诒壤项I(lǐng)先。

項(xiàng)目對(duì)比

左側(cè)是中美項(xiàng)目統(tǒng)計(jì)的對(duì)比,可以看到三張圖的對(duì)比結(jié)果非常類似:在第一個(gè)區(qū)間中國(guó)的比例大于美國(guó),其他區(qū)間中國(guó)的比例往往遠(yuǎn)小于美國(guó)。

后幾張圖中的對(duì)比結(jié)果表示美國(guó)的活躍項(xiàng)目量全面大于中國(guó),從第二個(gè)區(qū)間開始美國(guó)的比例最多可以達(dá)到中國(guó)的三倍,這意味著絕對(duì)數(shù)量的比例在十倍以上。

總體來(lái)說(shuō),個(gè)人信息的對(duì)比上美國(guó)稍弱于中國(guó),但是項(xiàng)目對(duì)比上要強(qiáng)于中國(guó),說(shuō)明美國(guó)的活躍用戶其活躍度確實(shí)比中國(guó)高很多。

代碼量的對(duì)比比較特別。我們統(tǒng)計(jì)到的中國(guó)區(qū)項(xiàng)目量大約是 22 萬(wàn),美國(guó)區(qū)項(xiàng)目量大約是 100 萬(wàn),也就是說(shuō)美國(guó)的絕大多數(shù)代碼都集中在第二和第三個(gè)區(qū)間,其數(shù)量遠(yuǎn)大于中國(guó)。

從分支數(shù)來(lái)看,美國(guó)和中國(guó)的對(duì)比相差不多。不過(guò)相比之下分支數(shù)量更加集中在第二個(gè)區(qū)間。前面我們說(shuō)過(guò)量的上升往往會(huì)導(dǎo)致質(zhì)的下降,從這個(gè)角度來(lái)說(shuō),目前我們的量和質(zhì)都處在劣勢(shì),還需要不斷發(fā)展。

組織對(duì)比

組織的對(duì)比我們稍有劣勢(shì)。我們統(tǒng)計(jì)出 2500 個(gè)中國(guó)區(qū)組織和約 25000 個(gè)美國(guó)區(qū)組織,也就是說(shuō)美國(guó)的組織數(shù)是中國(guó)的十倍。人數(shù)是中國(guó)的四倍,組織數(shù)卻達(dá)到了十倍,組織的各項(xiàng)指標(biāo)也要強(qiáng)于中國(guó),可見(jiàn)美國(guó)區(qū)的組織整體形式很好。

各項(xiàng)平均值對(duì)比

#p#

國(guó)內(nèi)優(yōu)秀開源項(xiàng)目作者采訪

ECharts

G:介紹一下你自己吧。

林峰:林峰,開源中國(guó) @Kener-林峰,GitHub @kener ,微博 @Kener-林峰,百度商業(yè)前端通用技術(shù)組,數(shù)據(jù)可視化方向負(fù)責(zé)人,資深前端研發(fā)工程師。喜歡設(shè)計(jì),熱愛(ài)編程,ZRender,ECharts 作者,目前專注于數(shù)據(jù)可視化方面的研究工作。

G:能否簡(jiǎn)單介紹一下 ECharts 以及它的應(yīng)用場(chǎng)景?

林峰:數(shù)據(jù)可視化產(chǎn)品有很多,ECharts 定位在滿足可復(fù)用的商業(yè)數(shù)據(jù)可視化需求,與業(yè)界已有的 Highcharts、FusionCharts 同級(jí)別的產(chǎn)品,當(dāng)然他們都是成熟的商業(yè)收費(fèi)產(chǎn)品,我們免費(fèi)開源了,才起步,完善程度還有不小的差距。但不謙虛的說(shuō),ECharts 高度個(gè)性化和交互能力在不少方面已經(jīng)成為了業(yè)界領(lǐng)先,拖拽重計(jì)算、大規(guī)模散點(diǎn)圖獲得了國(guó)家專利,數(shù)據(jù)視圖、值域漫游、子地圖模式也都是業(yè)界首創(chuàng),獨(dú)有的功能。至于應(yīng)用場(chǎng)景就比較廣了,不同行業(yè)都有各種需求。互聯(lián)網(wǎng)就不用多說(shuō),報(bào)表系統(tǒng)、運(yùn)維系統(tǒng)、網(wǎng)站展示,只要有數(shù)據(jù)展現(xiàn)的需求基本都能使用。像傳媒,數(shù)據(jù)新聞在近幾年也被越來(lái)越多的提及,財(cái)新網(wǎng)走得很前,他們是最早使用 ECharts 作為數(shù)據(jù)新聞的可視化工具。各行各業(yè)其實(shí)都有營(yíng)銷展示、企業(yè)品牌宣傳、運(yùn)營(yíng)收入的匯報(bào)分析等各種各樣的應(yīng)用場(chǎng)景,不管大數(shù)據(jù)是否被過(guò)渡熱炒,數(shù)據(jù)確實(shí)已經(jīng)成為很多企業(yè)最受重視的財(cái)富之一,有數(shù)據(jù)的地方基本都會(huì)有這方面的需求。

G:最初是怎么想到開發(fā) ECharts 的呢?

林峰:我進(jìn)入百度的時(shí)候被分配到一個(gè)對(duì)公司舉足輕重的產(chǎn)品:鳳巢系統(tǒng)。2 年多的摸爬滾打從菜鳥變成了高級(jí)菜鳥,成了鳳巢前端的技術(shù)負(fù)責(zé)人,整天跟各種數(shù)據(jù)打交道,開始知道了數(shù)據(jù)的價(jià)值和力量,那是 2012 年末,大數(shù)據(jù)這名詞才剛剛浮出水面,數(shù)據(jù)可視化更是(至少在國(guó)內(nèi))未被流傳,喬幫主不讓i系列上運(yùn)行 Flash 加上 HTML5 開始火熱,我們需要尋求一個(gè)解決方案,用于鳳巢系統(tǒng)數(shù)據(jù)報(bào)表的可視化展現(xiàn),用于對(duì)鳳巢系統(tǒng)用戶體驗(yàn)監(jiān)控?cái)?shù)據(jù)的可視化展現(xiàn)等等,編程+設(shè)計(jì)+數(shù)據(jù)的結(jié)合的仿佛為自己量身定制,于是就轉(zhuǎn)向了數(shù)據(jù)可視化的研究。百度前端領(lǐng)袖人物 Erik 回歸后組建了商業(yè)前端的通用技術(shù)組,特意的規(guī)劃出數(shù)據(jù)可視化方向,我也就順理成章的從鳳巢技術(shù)負(fù)責(zé)人的角色轉(zhuǎn)到現(xiàn)在的角色,然后就挖了一個(gè)很深很深的坑(ECharts 的功能設(shè)計(jì)),之后近 1 年的時(shí)間里就開始與團(tuán)隊(duì)一起一點(diǎn)點(diǎn)的填上這個(gè)坑。

G:ECharts 發(fā)展到現(xiàn)在,儼然成為國(guó)產(chǎn)最佳開源項(xiàng)目,大家一定都很好奇 ECharts 是如何走到今天的,能聊聊這個(gè)過(guò)程嗎,有哪些你印象深刻的事件呢?

林峰:最佳不敢當(dāng),只是一直在認(rèn)真的做一件自己感興趣,對(duì)公司也對(duì)領(lǐng)域有價(jià)值的事情而已。這是 ECharts 的第 19 個(gè)月,每天習(xí)慣性的看看 ECharts 的 Star 數(shù),每到整百的時(shí)刻就記錄一下仿佛已經(jīng)融入到生活里。感謝領(lǐng)導(dǎo)們的信任讓我們團(tuán)隊(duì)大多都可以隨心所欲的工作,我們不用擔(dān)心查崗,沒(méi)事出去參加個(gè)交流甚至跑去看個(gè)展覽熏陶一下啦,喜歡的話在咖啡廳呆上一天也都可以。這種信任給予的自由并沒(méi)有減少工作時(shí)間或降低效率,我相信我們團(tuán)隊(duì)的小伙伴們都早已習(xí)慣了隨時(shí)隨地工作(餐廳、地鐵、機(jī)場(chǎng)甚至醫(yī)院),關(guān)鍵的是大家也愿意自發(fā)的工作,或許這也是造就 ECharts 很多天馬行空的 feature 誕生的因素,已經(jīng)數(shù)不清有多少個(gè)大晚上 hi 里突然蹦出小伙伴創(chuàng)造的杰作(我們?cè)缫迅F盡了相互吹 NB 拍馬屁的詞語(yǔ)了),也忘記了自己多少回半夜突發(fā)靈感爬起來(lái)敲代碼了。編程本身就是一件創(chuàng)造性的工作,更不用說(shuō)我們做到還是一件與藝術(shù)結(jié)合的事情,如果你并不真正喜歡,只把他作為朝九晚五的差事,你也就不會(huì)有創(chuàng)造力了。

很感謝陪伴 ECharts 一路走來(lái)的各位,沈毅,祖明,董睿,宿爽,紅啟,楊驥,叮叮,黃悅,同兵,太云,周揚(yáng),世威,胡瑤,德城師兄,李湛總,志敏總,陳為老師等等,當(dāng)然,可能還包括您。所有印象深刻的事件也都與你們有關(guān),ECharts 1.1.0 發(fā)布微博是我們第一條轉(zhuǎn)發(fā)過(guò) 500 的微博(還好沒(méi)被抓)。1.3 后我們被譽(yù)為“可視化領(lǐng)域的后起之秀”出現(xiàn)在各大主流技術(shù)媒體上,拿下了當(dāng)年中國(guó) 10 大熱門開源項(xiàng)目。1.4 后已經(jīng)有了三種不同編程語(yǔ)言的 ECharts 版本,Why ECharts 的分享在R語(yǔ)言,數(shù)據(jù)庫(kù)等大會(huì)上出現(xiàn)。2.0 前夕我們?cè)诠靖鞔箅娮悠辽厦娣帕?ldquo;比 ECharts 更好用的圖表即將出現(xiàn)”的宣傳海報(bào)引來(lái)很多關(guān)心我們的朋友“聲援”,一個(gè)不大不小的驚喜,2.0 發(fā)布我們刷了微信幾乎所有與大數(shù)據(jù)相關(guān)的大V公眾號(hào)頭條,這是我們對(duì)自己發(fā)起的挑戰(zhàn)和超越。2014 年 6 月 30 我們?yōu)?ECharts 辦了第一個(gè)生日會(huì),從此有了小鯨魚的形象。2.0 后我們團(tuán)隊(duì)基于 ECharts 的應(yīng)用百度圖說(shuō)上線開始公測(cè)。北京、上海、廣州、杭州、武漢、哈爾濱、西安,各種活動(dòng),各種公司,已經(jīng)數(shù)不清做過(guò)多少次分享了。我們還帶著小鯨魚去了硅谷讓美帝同學(xué)知道我們的厲害,我們?nèi)チ藦V州,在酒店里我們通宵的準(zhǔn)備了第二天的分享,還把圖說(shuō)正式發(fā)布了,讓我們高興的是活動(dòng)第二天上了廣州日?qǐng)?bào)的頭條。2.1.8 ECharts 的英文官網(wǎng)終于上線也開啟了我們國(guó)際化的征程,成為了中國(guó)第一個(gè)也是目前唯一一個(gè)入選了 GitHub Explorer Data Visualization 板塊的開源項(xiàng)目,短短 2 個(gè)月后 Jaroslav Benc 帶來(lái)了 Datamatic ECharts edition (英文版的圖說(shuō))讓我們倍感壓力,老外(此處為尊稱)程序員太 NB 了!登錄 GitHub 熱門榜單,star 破 5000,百度人氣、知識(shí)圖譜、世界杯等合作項(xiàng)目的上線等等,回想起來(lái)歷歷在目,有太多值得紀(jì)念的時(shí)刻,感謝有你。

G:ECharts 目前還面臨哪些問(wèn)題呢,未來(lái)有什么發(fā)展計(jì)劃嗎?

林峰:對(duì)我們自己項(xiàng)目升級(jí)和維護(hù)來(lái)說(shuō),代碼體積,特性功能耦合在主模塊里是最大的問(wèn)題,要進(jìn)一步的打散,更細(xì)粒度的拆分,提供動(dòng)態(tài)、按需組裝的能力。

對(duì)開發(fā)者項(xiàng)目開發(fā)來(lái)說(shuō),更詳細(xì)友好的文檔,幫助,我想我該做些教程了(已經(jīng)計(jì)劃半年了...)。

對(duì)圖表閱讀使用方來(lái)說(shuō),移動(dòng)設(shè)備優(yōu)化,藝術(shù)美感的提高,大數(shù)據(jù)性能響應(yīng)。ECharts 2.2 已經(jīng)做了大量移動(dòng)設(shè)備優(yōu)化工作,ECharts-m (ECharts Mobile 版)很快就要跟大家見(jiàn)面了,其他的事情先賣個(gè)關(guān)子,很快大家就會(huì)看到更好玩的 ECharts。

G:ECharts 的發(fā)展過(guò)程中應(yīng)該也遇到過(guò)很多困難吧,你是如何克服它們的呢?

林峰:永遠(yuǎn)都有未完成的任務(wù)列表,這是我寫 ECharts 以來(lái)一直提到的,我曾經(jīng)極度懷疑我是永遠(yuǎn)沒(méi)法把這個(gè)任務(wù)列表清空的,現(xiàn)在我是深信不疑了-_-。

不管團(tuán)隊(duì)還是個(gè)人,能力和時(shí)間在某段日子里總會(huì)是有限的,能做和可做的事情有很多,可以也應(yīng)該收集盡量多的需求和反饋,但要學(xué)會(huì)辨別哪些是真實(shí)需求哪些是偽需求甚至是不合理的需求,不要被用戶左右,學(xué)會(huì)做減法,保持自己的節(jié)奏。

另外就是很多人看到來(lái)自百度的不管什么東西,上來(lái)先劈頭蓋臉的一句“真是谷歌有什么百度出什么啊”,也不管好壞與否,接著補(bǔ)刀“一看就是山寨 xx 的貨色,跟 xx 比弱爆了”,一開始我還去禮貌的跟他們回復(fù)一句我們的不同啦,特色啥的。他們還會(huì)接著找茬,上手調(diào)不通就罵文檔,不符合他的預(yù)期就說(shuō)有 bug,后來(lái)我發(fā)現(xiàn)完全沒(méi)必要浪費(fèi)這個(gè)時(shí)間伺候他們。做好自己的事情就行,忍并隨他去吧,當(dāng)你把事情做好了他們就會(huì)慢慢的閉嘴的,他們?nèi)绻娴男枰?ECharts,那些文檔就能解決的問(wèn)題寫得再爛他早晚也會(huì)自己找到或者從各種途徑問(wèn)到的。

這可能會(huì)怠慢了一些人,但我后來(lái)明白了,把精力放在更該做的事情上是對(duì)更多人的負(fù)責(zé),用祖明同學(xué)的話,這是“我們指尖上的責(zé)任”。

G:可以總結(jié)一下 ECharts 的發(fā)展模式嗎?比如先從興趣出發(fā)最后得到公司支持,或者從誕生就由公司支持和運(yùn)作等等。如果其他開發(fā)者也想遵循這個(gè)模式的話,有什么話想對(duì)他們說(shuō)嗎?

林峰:ECharts 怎么來(lái)的各位自己去看緣起吧,我很幸運(yùn),這事本身就是自己的興趣,也是公司的需要,遇到各種好領(lǐng)導(dǎo)放任自如的讓我隨意發(fā)揮,并且當(dāng)事情越做越大的時(shí)候能夠不斷的給于支持和幫助。

做好一個(gè)項(xiàng)目,最最重要的,團(tuán)隊(duì)的力量,要找到那些志同道合,才華橫溢的小伙伴與你并肩,ECharts 團(tuán)隊(duì)是個(gè)跨部門的虛擬組織,我們面向百度全體 FE 招募,組建時(shí)我立了個(gè)規(guī)矩,“如果你忙或者沒(méi)時(shí)間做這件事情,請(qǐng)暫時(shí)離開,我們隨時(shí)歡迎你歸來(lái)”,剛開始幾個(gè)月我兩周清一次場(chǎng),各種進(jìn)進(jìn)出出,但半年后團(tuán)隊(duì)就基本穩(wěn)定至今了,用叮叮的話我們也成了一個(gè)小小的 family。

G:最后來(lái)聊聊開源吧,你覺(jué)得開源對(duì)大多數(shù)普通程序員來(lái)說(shuō)意義何在呢?大家都聽(tīng)過(guò)開源、GitHub,但是就像那些大道理一樣,真正做的時(shí)候往往無(wú)法進(jìn)行結(jié)合,你覺(jué)得程序員應(yīng)該如何充分利用 GitHub 呢?

林峰太有意義了,學(xué)習(xí)??!看大牛們的代碼是一種幸福,從模仿到領(lǐng)悟到融入自己的程序里,這就是成長(zhǎng)。身邊很多大牛們都把 GitHub 視為游樂(lè)場(chǎng)或者玩具店,不是說(shuō)兒戲了,是要有玩家的態(tài)度和享受玩的快樂(lè),要在上面學(xué)會(huì)折騰,GitHub 上有無(wú)數(shù)好的項(xiàng)目,多動(dòng)手,多折騰,嘗試融入到這些開源社區(qū)去做些貢獻(xiàn),一開始哪怕就是跟 Issue 湊熱鬧,給些使用反饋,文檔錯(cuò)別字糾正都是有意義的,然后就是貢獻(xiàn)自己的想法,幫助別人解決問(wèn)題,當(dāng)你開始貢獻(xiàn)代碼,或許你就能體會(huì)到開源對(duì)你的意義。

G:2014 年國(guó)內(nèi)開源界涌現(xiàn)出很多優(yōu)秀的開源項(xiàng)目,大多數(shù)似乎都有公司的介入,這一點(diǎn)上國(guó)外的優(yōu)秀開源項(xiàng)目也很類似,往往有大公司的程序員是核心貢獻(xiàn)者。你覺(jué)得公司在開源項(xiàng)目中扮演的是什么角色呢?在當(dāng)前國(guó)內(nèi)的大環(huán)境下,如何在公司中做一個(gè)成功的開源項(xiàng)目呢?

林峰:對(duì)公司來(lái)說(shuō)是貢獻(xiàn)者也是獲益者,公司是不會(huì)無(wú)緣無(wú)故啟動(dòng)一個(gè)跟自身業(yè)務(wù)無(wú)關(guān)或者自己都用不到的項(xiàng)目。好的項(xiàng)目能獲得更多人的關(guān)注、反饋、代碼貢獻(xiàn),開源后如果能讓這個(gè)項(xiàng)目發(fā)展更好不僅對(duì)公司自身項(xiàng)目需求有意義,甚至可以讓公司在某個(gè)領(lǐng)域確立自己的技術(shù)領(lǐng)導(dǎo)地位(想想看 Android,Linux,jQ,Bootstrap),這無(wú)疑是對(duì)公司極好的事情。

公司是否可以運(yùn)作一個(gè)開源項(xiàng)目跟公司狀況和基因有關(guān),這個(gè)真不好說(shuō)。只能說(shuō)一點(diǎn),在公司內(nèi)做開源項(xiàng)目,這個(gè)項(xiàng)目本身是否對(duì)公司帶來(lái)價(jià)值是關(guān)鍵,短期的長(zhǎng)期的都最好要有。

PS:我們離成功還遠(yuǎn)著呢,還沒(méi)到分享成功經(jīng)驗(yàn)的時(shí)候。

ThinkJS

G:介紹一下你自己吧。

李成銀:我叫李成銀,工作 7 年了吧。以前在百度待過(guò),現(xiàn)在在 360,以后嘛還不知道。以前是做后端的,現(xiàn)在主要在做前端以及 Node.js 這邊的一些東西。我自己想做并且一直在做的是一些工程化、工具化、流程化方面的東西,希望可以提升團(tuán)隊(duì)的開發(fā)效率。

G:為什么要開發(fā) ThinkJS?

李成銀:使用 Express 的時(shí)候感覺(jué)框架功能有限,無(wú)法快速實(shí)現(xiàn)特定的業(yè)務(wù)需求,此外,Node.js 自身的異步寫法并不好寫也不好用,再加上之前用過(guò) ThinkPHP,于是就想開發(fā)一個(gè)使用 Promise 的類似的 Node.js 框架。

G:ThinkJS 是如何發(fā)展起來(lái)的呢?

李成銀:最初是作為興趣來(lái)做,并不是一開始就準(zhǔn)備當(dāng)做一個(gè)項(xiàng)目來(lái)寫。到 2014 年 4 月份的時(shí)候發(fā)現(xiàn)這個(gè)項(xiàng)目在公司內(nèi)外都有很多人在用,大家也確實(shí)有這樣的需求,于是就繼續(xù)做下去,并明確了當(dāng)做部門的正式項(xiàng)目來(lái)做。2014 年 9 月 22 號(hào) 1.0 正式發(fā)布,標(biāo)志著 ThinkJS 成為一個(gè)正式的開發(fā)項(xiàng)目。1.0 之前主要是實(shí)現(xiàn)了我個(gè)人的一些想法,但是之后作為部門的正式項(xiàng)目,部門會(huì)有更多時(shí)間和人力的投入,也會(huì)考慮 merge 一些 PR。

G:ThinkJS 為什么決定采用開源的形式來(lái)做呢?

李成銀:實(shí)際上現(xiàn)在不涉及公司機(jī)密的東西公司都是鼓勵(lì)開源的。對(duì)于前端來(lái)說(shuō),本來(lái)代碼就是藏不住的,既然藏不住何不把它開源出去,用更好的心態(tài)來(lái)?yè)肀?。這其實(shí)也是 GitHub 上前端項(xiàng)目最多的原因。雖然 ThinkJS 是一個(gè)后端框架,但是因?yàn)槲覀冇羞@樣一種心態(tài),所以一開始做的時(shí)候就很自然的決定要開源。

G:開源給 ThinkJS 帶來(lái)了什么呢?

李成銀:開源可以帶來(lái)更多的用戶,從而可以發(fā)現(xiàn)更多我們內(nèi)部使用無(wú)法發(fā)現(xiàn)的問(wèn)題和需求,讓項(xiàng)目可以發(fā)展的更好。此外,開源項(xiàng)目對(duì)團(tuán)隊(duì)和維護(hù)者本身有很大的提升作用。開源項(xiàng)目除了技術(shù)還有很多東西要做,比如寫文檔、和用戶交流等等,這些事情實(shí)際上會(huì)鍛煉很多重要的能力,長(zhǎng)遠(yuǎn)來(lái)看對(duì)于開發(fā)者個(gè)人的發(fā)展有很大好處,之后做更大的事情時(shí)就會(huì)發(fā)揮出效果。

我也很不喜歡寫文檔,寫完文檔代碼變了就必須更新。但是實(shí)際上很多用戶都是只看文檔不看代碼的,因此你的文檔質(zhì)量直接影響到項(xiàng)目的上手難度和使用效果。

G:ThinkJS 有沒(méi)有受到公司方面的幫助呢,比如推廣?

李成銀:ThinkJS 實(shí)際上是以部門的形式開源,并不是以公司的形式開源。這樣做的好處是更加自由一些,而且和公司的關(guān)系并不是特別緊密,這對(duì)于項(xiàng)目本身的發(fā)展是一件好事,因?yàn)槿绻?xiàng)目和公司關(guān)系非常緊密的話,一旦項(xiàng)目的負(fù)責(zé)人離職,項(xiàng)目就很可能無(wú)法繼續(xù)發(fā)展。雖然這樣做可能會(huì)減少一些公司方面的支持,但是長(zhǎng)遠(yuǎn)來(lái)看對(duì)項(xiàng)目的發(fā)展更有利,主要的支持來(lái)自社區(qū)。

G:ThinkJS 是如何從一個(gè)個(gè)人項(xiàng)目轉(zhuǎn)變成部門的正式項(xiàng)目呢?

李成銀:主要有兩方面原因,一方面是當(dāng)時(shí)已經(jīng)有一些人在用 ThinkJS,我們看到了這個(gè)項(xiàng)目的實(shí)際效果,再加上 Node.js 越來(lái)越熱,我們覺(jué)得這個(gè)項(xiàng)目未來(lái)有很好的發(fā)展前景,因此就變成了部門的正式項(xiàng)目。這其實(shí)是一個(gè)很自然的過(guò)程,從個(gè)人興趣出發(fā)的項(xiàng)目如果在實(shí)際使用中得到大家的認(rèn)可并且有很大潛力的話,就很可能會(huì)被部門認(rèn)可。

相對(duì)來(lái)說(shuō),產(chǎn)品型的項(xiàng)目更容易得到認(rèn)可,因?yàn)楫a(chǎn)品類型的項(xiàng)目更容易看到效果,技術(shù)類型的項(xiàng)目有時(shí)候很難統(tǒng)計(jì)使用情況,有些公司并不會(huì)公開他們使用的技術(shù)。不過(guò)總體來(lái)說(shuō),只要一個(gè)項(xiàng)目能體現(xiàn)出它自己的價(jià)值,就很容易變成部門的項(xiàng)目。

G:你覺(jué)得國(guó)內(nèi)的開源現(xiàn)狀如何呢?

李成銀:目前國(guó)內(nèi)的開源項(xiàng)目基本上都是團(tuán)隊(duì)內(nèi)部在開發(fā),即使是非常成功的項(xiàng)目 PR 也非常非常少,所以目前來(lái)說(shuō)國(guó)內(nèi)的開源環(huán)境仍然不夠活躍不夠開放。一個(gè)項(xiàng)目出來(lái)會(huì)被很多人罵,不過(guò)關(guān)鍵就是別人罵了我們我們還不知道,也就無(wú)法改進(jìn)。我們覺(jué)得罵本身不是壞事,說(shuō)明用戶還是需要你的項(xiàng)目的,只是項(xiàng)目不夠好而已。但是關(guān)鍵是罵也要去 Issue 里罵,這樣我們才能看到??傮w來(lái)說(shuō)國(guó)內(nèi)的開源環(huán)境已經(jīng)比之前要好了,Issue 多起來(lái)了,PR 也有一些,不過(guò)目前來(lái)說(shuō)還不夠成熟,不能像國(guó)外的項(xiàng)目一樣能夠通過(guò) PR 完成很多功能。

其實(shí)也不能怪大家,國(guó)內(nèi)和國(guó)外的工作情況就不一樣。國(guó)外大家把編程當(dāng)興趣來(lái)做,工作也沒(méi)有國(guó)內(nèi)這么忙,所以有更多的時(shí)間和興趣投入開源項(xiàng)目中。國(guó)內(nèi)經(jīng)常加班,壓力很大,大家對(duì)于開源的熱情就不高,更多的是把開源項(xiàng)目當(dāng)做一個(gè)寶庫(kù),遇到問(wèn)題的時(shí)候去找現(xiàn)成的解決辦法,而不是參與其中。

此外,大家更喜歡用國(guó)外開源項(xiàng)目還有一個(gè)原因,就是國(guó)外的項(xiàng)目更加穩(wěn)定,不太容易出現(xiàn)項(xiàng)目無(wú)人維護(hù)的情況。國(guó)內(nèi)的開源項(xiàng)目有時(shí)候開發(fā)者會(huì)放棄并停止更新,這樣依賴這些項(xiàng)目構(gòu)建的項(xiàng)目就會(huì)很難處理,而國(guó)外的開源項(xiàng)目即使維護(hù)者停止更新,他也會(huì)找到其他人繼續(xù)維護(hù),比如前段時(shí)間的 Express,這就讓用戶很有安全感。

Cocos2d-x

G:請(qǐng)簡(jiǎn)單介紹一下你自己吧。

林順:林順,Cocos2d-x 的聯(lián)合創(chuàng)始人,從小喜歡玩游戲,暴雪粉,星際死忠粉,最近愛(ài)上風(fēng)暴英雄,喜歡不受打擾寫代碼,喜歡數(shù)碼電子。

G:Cocos2d-x 大家應(yīng)該都聽(tīng)過(guò)了,說(shuō)實(shí)話我第一次聽(tīng)到它的時(shí)候還以為是國(guó)外的開源項(xiàng)目,后來(lái)知道是國(guó)人開發(fā)的時(shí)候非常驚訝。雖然 Cocos2d-x 在國(guó)內(nèi)已經(jīng)非常有名,不過(guò)對(duì)于大多數(shù)沒(méi)有接觸過(guò)游戲的開發(fā)者來(lái)說(shuō)可能不太了解,你能介紹一下 Cocos2d-x 以及由它延伸出的整條產(chǎn)品線嗎?

林順:Cocos2d-x 是專業(yè)的跨平臺(tái)移動(dòng)游戲引擎,采用 MIT 協(xié)議,從 2010 年 7 月提交第一行代碼到 GitHub 就是完全開源免費(fèi)的,目前在全球超過(guò) 25% 的市場(chǎng)份額,而在中國(guó)這一份額超過(guò) 70%,全球超過(guò) 40 萬(wàn)的開發(fā)者正使用該引擎開發(fā)游戲。X 代表著 Cross,為開發(fā)者提供了跨平臺(tái)支持,采用 C++ 語(yǔ)言編寫一次游戲邏輯即可編譯到 iOS、Android 以及更多手機(jī)平臺(tái)上運(yùn)行,并且運(yùn)行性能是最高效的。2012 年初 Google 贊助 Cocos2d-x 團(tuán)隊(duì)創(chuàng)建了 Cocos2d-html5 分支,并在 Zynga 的幫助下完成了 JSB(JavaScript Binding)產(chǎn)品的開發(fā),實(shí)現(xiàn)了 JS 腳本游戲一次開發(fā),不僅能跨原來(lái) Cocos2d-x 支持的所有平臺(tái),還能發(fā)布到 Web。

目前 Cocos2d-x 的工具鏈已經(jīng)覆蓋了游戲從新建項(xiàng)目一直到游戲 SDK 接入、打包發(fā)布的全過(guò)程,集成開發(fā)工具 Cocos Studio 支持快速原型構(gòu)建和驗(yàn)證,調(diào)試腳本代碼和應(yīng)用打包使用 Cocos Code IDE,AnySDK 高效快速接入海量渠道。此外,Cocos 社區(qū)還有 Cocos Play 和 Cocos Runtime 來(lái)實(shí)現(xiàn)游戲的點(diǎn)擊即玩效果,提升游戲轉(zhuǎn)化率。2015 年 3D 和 3D 編輯器將是 Cocos2d-x 的發(fā)展重點(diǎn),秉承最高效,體積最小的優(yōu)勢(shì),提供更強(qiáng)大的 3D 功能,支持用戶使用 Cocos2d-x 的 3D 版本做出優(yōu)秀的 3D 游戲作品。

G:Cocos2d-x 應(yīng)該從誕生開始就是由公司在運(yùn)作的項(xiàng)目吧,最初公司為什么選擇做游戲引擎,又是如何決定把它開源的呢?

林順:Cocos2d-x 從最開始就是完全開源、免費(fèi),當(dāng)時(shí) Cocos2d-x 項(xiàng)目的目標(biāo)是為我和王哲所在的操作系統(tǒng)公司提供游戲內(nèi)容。一個(gè)新操作系統(tǒng),全新的生態(tài),沒(méi)有很好的游戲內(nèi)容,一點(diǎn)都不高大上,而是高處不勝寒,所以我們開發(fā) Cocos2d-x 這個(gè)跨平臺(tái)的開發(fā)工具,讓開發(fā)者可以快速的將游戲發(fā)布到 iOS 的同時(shí),能快速、低成本的發(fā)布到 Android,最后順手一編,將游戲內(nèi)容也導(dǎo)入我們的操作系統(tǒng),實(shí)現(xiàn)零落差同步導(dǎo)入最優(yōu)秀的游戲內(nèi)容。

G:目前在國(guó)外已經(jīng)有一套很成熟的公司參與開源甚至主導(dǎo)開源的模式,但是在國(guó)內(nèi)這還是一個(gè)比較新的概念。開源本身的不確定性和公司需要的可控性應(yīng)該是矛盾的,觸控科技是如何處理這個(gè)矛盾呢?

林順:開源引擎在不確定性和可控性上并沒(méi)有很大的矛盾,目標(biāo)都是提高效率,降低成本,更好的為商業(yè)游戲開發(fā)服務(wù)。

開源游戲引擎的好處是可以從社區(qū)獲得最直接的需求,接地氣,推動(dòng)產(chǎn)品往正確的方向快速發(fā)展;社區(qū)的代碼貢獻(xiàn)者也能共同分享他們的成果,從而加速產(chǎn)品升級(jí)。Cocos2d-x 的發(fā)展離不開觸控科技《捕魚達(dá)人》系列游戲的推動(dòng),《捕魚達(dá)人1》基于 Cocos2d-x v1.0,引擎所有技術(shù)上的坑是捕魚游戲最先趟平的,國(guó)內(nèi)各種奇葩機(jī)型的適配和性能優(yōu)化,也都是基于捕魚達(dá)人進(jìn)行驗(yàn)證。

G:Cocos2d-x 整條產(chǎn)品線發(fā)展到現(xiàn)在的規(guī)模和知名度,你覺(jué)得開源在其中起到了什么作用呢?

林順:開源在里面有決定性的作用,首先開源社區(qū)的需求驅(qū)動(dòng)模式,為我們提供了最好的需求參考,其次,來(lái)自全世界超過(guò) 300 位的優(yōu)秀工程師在為引擎貢獻(xiàn)代碼,這是一筆無(wú)法估算的財(cái)富,如果不是因?yàn)殚_源模式,我相信沒(méi)有哪家公司能讓這么多的優(yōu)秀工程師在為同一個(gè)項(xiàng)目貢獻(xiàn)代碼。最后,開源免費(fèi)的模式,讓更多人能從中受益,他們的口口相傳才造就了今天 Cocos2d-x 的口碑和用戶基礎(chǔ)。

G:什么事都是有利有弊,你覺(jué)得公司主導(dǎo)的開源項(xiàng)目相比個(gè)人或者社區(qū)主導(dǎo)的開源項(xiàng)目利在哪里,弊又在哪里呢?

林順:有公司或者資本提供支持的開源項(xiàng)目,相對(duì)于個(gè)人或者沒(méi)有資本支持的開源項(xiàng)目的優(yōu)勢(shì):有更多的資源投入,對(duì)開源項(xiàng)目的后期發(fā)展至關(guān)重要,允許有更多專職的研發(fā)人員,產(chǎn)品的迭代周期和質(zhì)量也能得到很好的控制,提供更加持續(xù)長(zhǎng)久的維護(hù),可以讓開源產(chǎn)品走的更高、更遠(yuǎn)。至于弊端,那就得看對(duì)開源項(xiàng)目的態(tài)度,如果本著服務(wù)行業(yè),推動(dòng)行業(yè)升級(jí),用開放的心態(tài)來(lái)做開源項(xiàng)目,并不會(huì)存在著什么弊端,全世界范圍內(nèi)也并不乏有各個(gè)公司支持的開源項(xiàng)目。當(dāng)時(shí)我們的操作系統(tǒng)公司做的不好了,引擎項(xiàng)目發(fā)展的卻是很好,愿意投資我們的有好幾家,但是最后還是覺(jué)得陳昊芝思路很開放,能堅(jiān)持不把一個(gè)開源的項(xiàng)目做成閉源商業(yè)項(xiàng)目,最終和他一起做,一路走來(lái),也發(fā)現(xiàn)我們當(dāng)初的選擇是最正確的。

G:如果其他公司也想走開源路線,有什么話想對(duì)他們說(shuō)嗎?

林順:非常歡迎一起加入開源路線,開源項(xiàng)目不論是對(duì)個(gè)人和對(duì)公司,能學(xué)習(xí)到很多寶貴的知識(shí),社區(qū)里匯集的智慧是巨大的寶貴的,國(guó)外資深程序員教你兩招,你就能發(fā)現(xiàn)原來(lái)代碼還能這么寫,框架還能這么設(shè)計(jì)優(yōu)雅。另外,和社區(qū)做好互動(dòng),有效采集用戶需求和反饋,是推動(dòng)開源項(xiàng)目往正確方向發(fā)展的關(guān)鍵,也是產(chǎn)品化和易用化的捷徑。

G:最后來(lái)聊聊開源吧,你覺(jué)得開源對(duì)大多數(shù)普通程序員來(lái)說(shuō)意義何在呢?程序員應(yīng)該如何充分利用 GitHub 呢?

林順:參與開源項(xiàng)目對(duì)于程序員來(lái)講是一種高效、快速學(xué)習(xí)成長(zhǎng)的方法,不僅如此,如果你是一個(gè)技術(shù)愛(ài)好者,參與開源項(xiàng)目你有可能找到自己的興趣,擅長(zhǎng)結(jié)合點(diǎn)。當(dāng)然,如果能找到和商業(yè)的結(jié)合點(diǎn),進(jìn)而從事自己喜歡的工作,那就更爽了,這點(diǎn)是很難得的。

一般有秩序的開源社區(qū)都提供很好的知識(shí)和經(jīng)驗(yàn)交流平臺(tái),深入?yún)⑴c到開源項(xiàng)目中,對(duì)個(gè)人的技術(shù)成長(zhǎng)和視野會(huì)有很大的幫助。

GitHub 在全球的火爆程度無(wú)需多表,提供非常高效的項(xiàng)目開發(fā)協(xié)作機(jī)制,是了解開源項(xiàng)目運(yùn)作機(jī)制的很好入口。在 GitHub 上,開發(fā)人員可以隨時(shí)與全世界的人共享代碼,也允許接受來(lái)自全球不同地方的人貢獻(xiàn)各種 idea,代碼片段,也是社區(qū)交流的基礎(chǔ),越來(lái)越多的開源項(xiàng)目遷移到 GitHub 上。最后,歡迎各位加入 Cocos2d-x 開源項(xiàng)目社區(qū),成為我們社區(qū)的一份子,實(shí)現(xiàn)自己的游戲夢(mèng)想。

Pen

G:請(qǐng)簡(jiǎn)單介紹一下你自己吧。

小魚:大家都叫我小魚,在大部分需要 ID 的網(wǎng)站叫一般用 sofish。法學(xué)院畢業(yè)后,就一直寫代碼。

G:你做過(guò)很多開源項(xiàng)目,我們就聊聊 Star 最多 Pen 吧。Markdown 相關(guān)的項(xiàng)目非常多,不過(guò) Pen 這樣的項(xiàng)目我確實(shí)是第一次見(jiàn)到。簡(jiǎn)單介紹一下 Pen 的用途吧。

小魚:Pen 是一個(gè)支持 Markdown 的可視化(實(shí)時(shí)編譯)編輯器。

寫 Pen 是因?yàn)楫?dāng)時(shí)覺(jué)得百姓網(wǎng)用戶發(fā)貼的體驗(yàn)應(yīng)該更好一點(diǎn),剛好 GitHub 當(dāng)時(shí)有一個(gè) ZenPen 的項(xiàng)目很火,準(zhǔn)備用。不過(guò)這貨代碼耦合度太高,CSS / JS 也分不開,還不能自定義功能。覺(jué)得非常雞肋,無(wú)奈就只能自己寫。目標(biāo)就是編輯的時(shí)候與發(fā)布結(jié)果一樣,真正的 WYSIWYG,并支持自定義功能,CSS / JS 也好分開。而剛好 Markdown 的一些語(yǔ)法比較簡(jiǎn)潔,就直接支持了。當(dāng)時(shí)上了 Trending,GitHub 的員工給提了一個(gè)非常給力的 PR,支持顯示 Markdown。

不過(guò)后來(lái)覺(jué)得太麻煩,沒(méi)集成在產(chǎn)品上,也就一直沒(méi)更新。直到 Teambition 在用,嚴(yán)清同學(xué)貢獻(xiàn)了很多代碼,也解決了很多隱藏的 Bug。

G:最初是如何想到要做 Pen 這么一個(gè)項(xiàng)目呢?做得過(guò)程中有什么有意思或者讓你印象深刻的事情呢?和我們分享一下吧。

小魚:像上面說(shuō)的,直接原因是工作需要。我的大部分開源項(xiàng)目,除了 Typo.css,直接原因都是想把工作中一些功能抽象成模塊,順路就開源了。像最早的 AliceUI 是已經(jīng)大面積用在了支付寶上,才開源的。要說(shuō)印象深刻,我覺(jué)得開源的項(xiàng)目一定要用在某個(gè)產(chǎn)品上,特別是商業(yè)項(xiàng)目,才能變的真正好用,因?yàn)闊o(wú)論是開源還是閉源都需要保證質(zhì)量的動(dòng)力,而工作就是動(dòng)力之一。任何沒(méi)真正用在商業(yè)產(chǎn)品上的開源項(xiàng)目,都是要慎用的,也稱不上好。

G:Pen 是如何獲得這么多的 Star 呢,你有做過(guò)什么相關(guān)的推廣嗎?

小魚:沒(méi)有,就是發(fā)了一下微博和 V2EX,然后就好多人關(guān)注了。

G:作為中國(guó)區(qū)排名前十的開發(fā)者,你平時(shí)的工作應(yīng)該也很忙吧,你是如何在這種情況下完成 Pen 這個(gè)項(xiàng)目的呢?

小魚:工作也忙的,不過(guò)不會(huì)完全沒(méi)有時(shí)間。我人生中最忙的階段似乎是在寫我這句話的前 6 個(gè)月內(nèi),因?yàn)樽霎a(chǎn)品的同時(shí)要帶人,常態(tài)是回到家都是 10 點(diǎn)以后,因此最近也沒(méi)什么產(chǎn)出,除了 m.ele.me 已經(jīng)上線,并沒(méi)有什么開源項(xiàng)目。相比構(gòu)思 Pen 應(yīng)該是什么樣的,體驗(yàn)要達(dá)到什么程度,寫 Pen 花的時(shí)間并不多,300 行代碼對(duì)我來(lái)說(shuō)難度并不大。順路說(shuō)下,ZenPen 當(dāng)時(shí)應(yīng)該是幾千行級(jí)別的,但功能沒(méi)有 Pen 好。

G:你覺(jué)得作為個(gè)人開發(fā)者來(lái)開發(fā)和維護(hù)一個(gè)開源項(xiàng)目難度大嗎?中間有沒(méi)有想要放棄的時(shí)候呢?

小魚:難度還是要看項(xiàng)目吧。不過(guò)我相信人多不一定能解決問(wèn)題,因?yàn)榧夹g(shù)問(wèn)題普遍都有天花板,對(duì)于核心思想和技術(shù),大多情況下應(yīng)該是由更少的人產(chǎn)出的。思想定了,核心技術(shù)定了,添加功能可能并沒(méi)有想象中那么難。而對(duì)于有沒(méi)有放棄,我通常是這樣想的,最差的可能就是放棄。堅(jiān)持會(huì)發(fā)生很多美好的事情,比如寫博客。如果有很多緊要的事,時(shí)間不多,有時(shí)候也只能放棄,只做覺(jué)得緊要的。

G:你覺(jué)得純個(gè)人開發(fā)開源項(xiàng)目和有公司背景的開源項(xiàng)目比起來(lái)有什么本質(zhì)的區(qū)別呢,作為一個(gè)開發(fā)者應(yīng)該如何選擇?

小魚:本質(zhì)上都是開源。個(gè)人并沒(méi)有統(tǒng)計(jì)過(guò)個(gè)人開源的東西更成功,還是公司開源的東西更成功。不過(guò)像 ElasticSearch 大多代碼都是一個(gè)人寫的,非常成功;Docker 是一個(gè)公司維護(hù)的,非常成功;Bootstrap 是 2 個(gè)人開發(fā)的,公司維護(hù)的,非常成功。本質(zhì)上我覺(jué)得是開源的產(chǎn)品真正有用,就會(huì)有人用;如果有公司給時(shí)間和金錢支持,那相當(dāng)好;而最好的是有一個(gè)社區(qū),大家一起維護(hù)。比如你可以在 Google 上找到關(guān)于 jQuery 的幾乎所有答案,這就是社區(qū)的力量。所以如果你有一個(gè)好的項(xiàng)目,那么嘗試培養(yǎng)一個(gè)社區(qū),比一個(gè)人寫,或者只有公司支持沒(méi)有人開發(fā)的僵尸項(xiàng)目好。

G:如果有人也想走純個(gè)人的開源路線,有什么話想對(duì)他們說(shuō)嗎?

小魚:做一個(gè)有用的產(chǎn)品比是否開源,是不是個(gè)人的都更有意思,如果可能,請(qǐng)只生產(chǎn)讓這個(gè)世界更美好的東西。

G:最后來(lái)聊聊開源吧,你覺(jué)得開源對(duì)大多數(shù)普通程序員來(lái)說(shuō)意義何在呢?程序員應(yīng)該如何充分利用 GitHub 呢?

小魚:開源是一種共享的精神。意義可能有很多種。讓別人受益,自己得到改進(jìn)反饋,讓更多人從代碼認(rèn)識(shí)你,諸如此類,于每個(gè)人不同。開源并沒(méi)有直接改變過(guò)我的生活,不過(guò)我喜歡寫寫代碼,還能幫到人,于我已經(jīng)是很大的樂(lè)趣,而有樂(lè)趣的生活就是我的意義。

對(duì)于 GitHub,他只是工作/協(xié)作平臺(tái),這樣的平臺(tái)還有更多選擇。不過(guò)我一直用它,是因?yàn)槠渌a(chǎn)品都做的太丑,無(wú)論是細(xì)節(jié)還是體驗(yàn),而我更愿意選擇好用的工具,即使付費(fèi)。

Vue.js

G:請(qǐng)簡(jiǎn)單介紹一下你自己吧。

尤雨溪:我叫尤雨溪,目前在一家創(chuàng)業(yè)公司 Meteor 任職,做全棧式 JavaScript 框架的開發(fā)。之前則是在 Google 紐約的 Creative Lab,主要負(fù)責(zé) HTML5 的界面原型開發(fā)。

G:MVVM 的框架現(xiàn)在也有不少,Vue 有什么獨(dú)特之處嗎?

尤雨溪:Vue 相對(duì)于其他 MVVM 框架,最主要有兩個(gè)特點(diǎn):1. 原生 JS 對(duì)象即模型;2. 面向組件的開發(fā)模式。其他嘛就是比較輕量,侵入性比較低,容易上手。

G:最初是如何想到要做 veu 這么一個(gè)項(xiàng)目呢?做得過(guò)程中有什么有意思或者讓你印象深刻的事情呢?和我們分享一下吧

尤雨溪:最初是因?yàn)樵谠烷_發(fā)的過(guò)程中,需要一個(gè)輕量、簡(jiǎn)單的框架來(lái)提高開發(fā)效率,但當(dāng)時(shí)并沒(méi)有符合我需求的框架。我當(dāng)時(shí)研究了 Knockout, Angular 和 Ractive,但他們各自有各自我不喜歡的地方:Knockout 不能用原生 JS 對(duì)象做 model,Angular 太龐大,有很多我不需要的東西,Ractive 的 API 最符合我審美,但它當(dāng)時(shí)沒(méi)有組件系統(tǒng)。另外一點(diǎn)就是我在看這些項(xiàng)目源碼的時(shí)候覺(jué)得數(shù)據(jù)綁定的實(shí)現(xiàn)很有意思,很想自己寫一個(gè)來(lái)加深理解。整個(gè)過(guò)程其實(shí)是比較隨意的,一開始并沒(méi)有什么計(jì)劃,就是一點(diǎn)一點(diǎn)嘗試去寫,內(nèi)部設(shè)計(jì)改過(guò)無(wú)數(shù)次,到 0.11 更是徹底重寫了一遍。

G:Vue 是如何獲得這么多的 Star 呢,你有做過(guò)什么相關(guān)的推廣嗎?

尤雨溪:一開始剛發(fā)布 Vue 的時(shí)候,主要是通過(guò)國(guó)外的一些軟件開發(fā)新聞聚合站點(diǎn),比如 HackerNews, Reddit,以及一些前端開發(fā)博客 / newsletter。實(shí)際上就是發(fā)個(gè)鏈接上去看運(yùn)氣,之后除了維護(hù)一個(gè)官方 twitter 賬號(hào)之外并沒(méi)有做什么刻意推廣。我覺(jué)得個(gè)人開源項(xiàng)目能否獲得長(zhǎng)期關(guān)注,很重要一開始發(fā)布的那一波是否能夠產(chǎn)生一個(gè)好勢(shì)頭,后面基本都是自然增長(zhǎng)。當(dāng)時(shí) Vue 發(fā)到 HackerNews 之后被頂?shù)搅耸醉?yè),這可能是最關(guān)鍵的一個(gè)契機(jī),因?yàn)?HN 帶來(lái)的流量和關(guān)注度實(shí)在太厲害了,而且受眾全都是開發(fā)者。另一方面就是我在 Vue 的文檔站點(diǎn)上也下了不少功夫,好的文檔表現(xiàn)的是開發(fā)者的誠(chéng)意,第一印象也很重要。

G:做一個(gè)框架應(yīng)該要投入不少時(shí)間精力吧,你是如何安排時(shí)間來(lái)實(shí)現(xiàn)它的呢?

尤雨溪:確實(shí)花了不少精力,有段時(shí)間我?guī)缀跛械臉I(yè)余時(shí)間都花在上面了。當(dāng)然因?yàn)?Vue 也用在工作上的一些項(xiàng)目里所以也有理由在工作時(shí)間里分配一些。我做 Vue 其實(shí)是有些周期性的,可能會(huì)有幾個(gè)月特別投入,實(shí)現(xiàn)一些比較大的改進(jìn),然后會(huì)有幾個(gè)月專注于別的事情,對(duì) Vue 只是改改 bug。

G:你覺(jué)得作為個(gè)人開發(fā)者來(lái)開發(fā)和維護(hù)一個(gè)開源項(xiàng)目難度大嗎?中間有沒(méi)有想要放棄的時(shí)候呢?

尤雨溪:這要看項(xiàng)目的規(guī)模了。一般來(lái)說(shuō)適合個(gè)人維護(hù)的項(xiàng)目,最好是專注于解決一個(gè)較小的專門問(wèn)題的庫(kù),否則可能會(huì)占用過(guò)多精力。項(xiàng)目的規(guī)模大到一定程度以后,最好是由社區(qū)或者團(tuán)隊(duì)來(lái)共同維護(hù)。說(shuō)實(shí)話 Vue 現(xiàn)在的 issue 增長(zhǎng)速度已經(jīng)挺累人的了,好在現(xiàn)在也有很多社區(qū)開發(fā)者會(huì)積極地幫忙回答問(wèn)題,讓我省了很多精力。

G:你覺(jué)得純個(gè)人開發(fā)開源項(xiàng)目和有公司背景的開源項(xiàng)目比起來(lái)有什么本質(zhì)的區(qū)別呢,作為一個(gè)開發(fā)者應(yīng)該如何選擇?

尤雨溪:有公司背景的開源,其背后肯定是有商業(yè)利益的推動(dòng),所以只要公司的商業(yè)利益和項(xiàng)目的發(fā)展?fàn)顩r是正相關(guān)的,這個(gè)項(xiàng)目就會(huì)有比較穩(wěn)定的財(cái)力和人力支持。但這類項(xiàng)目通常更受公司決策的影響,對(duì)社區(qū)的意見(jiàn)不如個(gè)人開發(fā)的項(xiàng)目來(lái)得敏感。個(gè)人覺(jué)得選擇一個(gè)項(xiàng)目的時(shí)候是個(gè)人還是公司開發(fā)并不是關(guān)鍵,關(guān)鍵是看背后的公司/個(gè)人是否靠譜。

G:如果有人也想走純個(gè)人的開源路線,有什么話想對(duì)他們說(shuō)嗎?

尤雨溪:我覺(jué)得做個(gè)人開源因?yàn)榫τ邢?,所以需要專注,更需要?duì)自己做的項(xiàng)目的定位有明確的理解,確保自己做的東西確實(shí)解決了一個(gè)痛點(diǎn),這樣花的精力才有意義。

G:最后來(lái)聊聊開源吧,你覺(jué)得開源對(duì)大多數(shù)普通程序員來(lái)說(shuō)意義何在呢?程序員應(yīng)該如何充分利用 GitHub 呢?

尤雨溪:我覺(jué)得開源的意義對(duì)于普通開發(fā)者來(lái)說(shuō),可以看別人的源碼學(xué)習(xí)自然是最主要的了。在 GitHub 上利用高級(jí)搜索去搜自己語(yǔ)言排在前列的項(xiàng)目和開發(fā)者,可以學(xué)到很多東西。另外每周看看 trending 的新項(xiàng)目也可以發(fā)現(xiàn)很多好東西。另一方面,盡可能多地開源自己的代碼也有好處,因?yàn)檫@可以迫使你對(duì)自己的代碼保持一個(gè)高水準(zhǔn)的要求,而不是得過(guò)且過(guò)。

參與人員

(按姓氏筆畫排名)

團(tuán)隊(duì)成員:

梁杰、欒俊清、夏天晗

顧問(wèn):

胡少陽(yáng)、李靖、李松峰、李濤、林峰、盧俊祥、阮一峰、唐巧、響馬、周裕波、justjavac (迷渡)、sofish

采訪嘉賓:

李成銀、林峰、林順、尤雨溪、sofish

本文出自:http://githuber.info/#/report

責(zé)任編輯:林師授 來(lái)源: githuber.info
相關(guān)推薦

2015-02-04 12:09:57

2021-01-06 09:36:01

GitHub代碼開發(fā)者

2021-11-17 16:24:11

GitHub代碼開發(fā)者

2017-10-13 19:20:26

PythonGitHub年度報(bào)告

2018-12-13 12:24:53

GitHub 語(yǔ)言開發(fā)者

2021-11-29 09:56:10

開發(fā)JavascriptGitHub

2015-02-13 10:49:56

jQuery

2010-10-26 15:57:08

UPS市場(chǎng)年度報(bào)告

2018-10-19 09:13:55

2015-03-17 10:18:21

iOS開發(fā)者收入

2015-03-17 10:09:15

iOS開發(fā)企業(yè)開發(fā)者收入

2020-12-03 14:42:28

GitHub編程開發(fā)者

2017-12-08 12:44:44

GithubiOS機(jī)器學(xué)習(xí)

2016-03-24 09:51:41

Stack Overf開發(fā)者報(bào)告

2017-03-24 10:02:35

StackOverfl開發(fā)者調(diào)查

2018-12-18 22:31:11

AI數(shù)據(jù)科技

2014-10-08 09:42:02

2011-12-08 14:50:47

Web App

2014-05-30 17:21:04

WWDC2014預(yù)測(cè)蘋果

2018-10-18 14:43:04

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)