新聞中心
當(dāng)我剛開始做Rails開發(fā)者時(shí),我認(rèn)為所有的Rails gems都是魔法。一些聰明人正在制作這些牛逼的類庫讓我使用!我不知道這些類庫有多少可以使用,我認(rèn)為它們是好的。它們運(yùn)行著,并做了我需要它們做的工作。它們好像如此深?yuàn)W、被想出來,以致于我甚至不知道該如何為它們貢獻(xiàn)力量,即使我想!

在黟縣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需制作網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,全網(wǎng)整合營(yíng)銷推廣,外貿(mào)營(yíng)銷網(wǎng)站建設(shè),黟縣網(wǎng)站建設(shè)費(fèi)用合理。
時(shí)至今日,我仍然沒有給Rails社區(qū)貢獻(xiàn)任何開源代碼。那是因?yàn)镽ails社區(qū)在開源方面非常活躍,因此找到你要貢獻(xiàn)的東西實(shí)際上是比較困難的!當(dāng)然你能夠翻閱問題并試著解決,但是,老實(shí)講,它們通常太復(fù)雜了、令人望而生畏。有這些聰明人討論問題,你能足夠優(yōu)秀地解決問題是難以想象的!
快進(jìn)到Mobile Makers,那時(shí)候我剛接觸iOS,我***次給開源代碼做了貢獻(xiàn)!從那以后,我做了更多,我不再害怕向甚至更多的項(xiàng)目貢獻(xiàn)代碼!下面是我如何邁出這一步以及在這個(gè)過程中我學(xué)到了什么:
它不是魔法
走出Rails社區(qū),我很快知道了,大家對(duì)開源類庫事實(shí)上有某種不信任感。當(dāng)我想一直使用所有的CocoaPods時(shí)(就像Rails!),團(tuán)隊(duì)的高級(jí)iOS工程師總是質(zhì)疑外部類庫的使用,如果可能,寧愿建立我們自己的類庫。
在iOS項(xiàng)目,有很少的iOS類庫可以一直使用的,大多數(shù)項(xiàng)目?jī)H僅在開始的時(shí)候使用一些類庫!由于CocoaPods的出現(xiàn)以及刪除或升級(jí)依賴項(xiàng)是如何容易,情況正在發(fā)生著變化,但是它還達(dá)不到Rails的級(jí)別,你的大部分項(xiàng)目仍然由即插即用類庫構(gòu)成。
意識(shí)到這些外部類庫不是魔法,我的心態(tài)改變了,也讓我較以前產(chǎn)生了巨大的改變。懂得了編寫類庫的那個(gè)人是一個(gè)真實(shí)的人,他會(huì)犯錯(cuò),或許不會(huì)寫出***的代碼,他也不能一直考慮到所有的邊界情況,這讓我能夠輕松發(fā)現(xiàn)我能夠做貢獻(xiàn)的小的(或大的)地方。
關(guān)注就是共享
有一些人鼓勵(lì)積極尋找開源項(xiàng)目去貢獻(xiàn)力量,而我發(fā)現(xiàn)我貢獻(xiàn)的所有項(xiàng)目都是實(shí)際在我自己的代碼中用到的。
真相是,我沒有時(shí)間為了貢獻(xiàn)而去主動(dòng)搜尋github上的問題/類庫。但是,當(dāng)我在自己的項(xiàng)目中用到一個(gè)類庫時(shí),我希望它具備X功能或那個(gè)bug Y被解決了,搞定并反饋回去是明擺的事!事實(shí)上,自從我喜歡向開源貢獻(xiàn)力量以后,當(dāng)我發(fā)現(xiàn)這些機(jī)會(huì)時(shí),我是超級(jí)激動(dòng)的!
這把我?guī)У搅讼乱粋€(gè)論點(diǎn)……
它是這樣一種美好的感覺……
向開源貢獻(xiàn)力量真的容易上癮!先前知道了如何編碼,讓計(jì)算機(jī)實(shí)現(xiàn)你的愿望是不可思議的,這讓你覺得你像個(gè)魔法師。但是,當(dāng)你能夠把其他人的“有魔力的”代碼變得更好、且他們認(rèn)同你能夠使代碼變得更好(通過merge)時(shí),這種感覺是無法用言語表達(dá)的。它就像你剛剛變成了10級(jí)的魔法師而不是1級(jí)。
小的開始
此外,我把開源貢獻(xiàn)者看做是用魔棒來作徹底改變、改進(jìn)一切的魔法師,但實(shí)際情況是大多數(shù)變化都很微小。他們只是根據(jù)每個(gè)人的基本方式累計(jì)增加,并最終改變和完善了整個(gè)類庫。因此不要低估小改動(dòng)的力量!
下面是個(gè)例子,我最近貢獻(xiàn)力量的過程:
修改一個(gè)README
我可能想把Toast類庫增加到我的iOS項(xiàng)目,但是他們?cè)赗EADME沒有提到有可用的CocoaPod。既然我只是想測(cè)試我項(xiàng)目中的類庫,我想讓它較為容易地移除掉。因此即使我以前使用過這個(gè)特定類庫,也知道它好用,我開始為了另一個(gè)Toast類庫而搜索CocoaPod。
找了一些類庫,我發(fā)現(xiàn)這個(gè)特定的Toast類庫事實(shí)上就是CocoaPod!為了確保其他iOS開發(fā)者知道有可用的CocoaPod,我就CocoaPod安裝說明提交了一個(gè)pull request到類庫的README。小改動(dòng),但是希望對(duì)其他開發(fā)者有幫助!
增加額外相同的功能
在為CodePath最終項(xiàng)目構(gòu)建Android app時(shí),我的團(tuán)隊(duì)想嘗試當(dāng)前官方Android字體—Roboto。事實(shí)表明它在并入外部字體到Android時(shí)非常繁瑣,因此,我們使用名叫RobotoViews的類庫來解決?;旧希總€(gè)view不得不經(jīng)過配置才能得到Roboto的typeface。
然而,有一個(gè)我們需要的類庫而RobotoViews沒有包括進(jìn)來—較新的Switch view。添加Switch view只需按照其它views的方式大量地拷貝/粘貼,因此它的添加不是太難,但是另一個(gè)view可以作為RobotoViews使用!
換句話說,RobotoViews的作者已經(jīng)做了所有艱難的工作使得只需要修改一些地方就可以添加一個(gè)新的view。
類似的,我通過給流行的iOS Foursquare client library添加原來沒有的一個(gè)額外功能來貢獻(xiàn)力量,只是因?yàn)橛辛俗髡叱橄筮@個(gè)過程的工作,這非常容易添加。
重構(gòu)
當(dāng)我注意到帶有少量變化的三個(gè)函數(shù)有著相同的代碼時(shí),我給ECSlidingViewController添加了一個(gè)非常小的修改,來確保在滑動(dòng)菜單滑出去時(shí)鍵盤隱藏掉。因此我重構(gòu)了代碼,產(chǎn)生一個(gè)函數(shù),讓三個(gè)函數(shù)僅僅通過傳入一個(gè)不同的參數(shù)來調(diào)用它,因此將來需要改動(dòng)這個(gè)函數(shù)的人只需要修改一次。
正如你看到的,我的所有開源貢獻(xiàn)都是非常微小、容易做的!當(dāng)你堅(jiān)持使用外部類庫時(shí),你會(huì)看到相似的機(jī)會(huì)。因此向前走,并作出小的改動(dòng)——它們是有價(jià)值的!
怎么做
看看這個(gè)偉大的《RailsCast:一步一步教你如何為開源貢獻(xiàn)力量》(它和非rails項(xiàng)目非常類似)。但是基本上,都有下面的幾步:
Fork
在Github上找到你想貢獻(xiàn)的類庫,只需點(diǎn)擊Fork按鈕!
Clone
下一步,克隆你想fork的類庫——它現(xiàn)在應(yīng)該在你的名字下(比如:NatashaTheRobot/ECSlidingViewController),而不是原作者!
Branch, Change, Push
一旦你克隆了代碼庫,改變?yōu)榇a庫文件夾。接下來,用能夠反映你將要做的修改的、有意義名字來checkout一份新的分支。作出修改,push這個(gè)分支到github。
當(dāng)你去你的Github profile主頁,你會(huì)看到一個(gè)大大的綠色“Compare and Pull Request”按鈕??匆幌履愕奈募_認(rèn)一切ok。然后確信你給原始分支發(fā)送一個(gè)pull request(不是你fork的那個(gè)分支)。當(dāng)你做完pull request之后,應(yīng)該看看是不是這樣!再一次,確認(rèn)你剛剛給原始作者的master分支的master做了一個(gè)pull!
Tweet
這一步當(dāng)然是可選的,但是我喜歡給作者發(fā)送tweet,告知他們變化。他們可能沒有打開github的通知功能,尤其是那些最近很少改動(dòng)的、比較老的代碼庫,因此讓他們知道并展開一次溝通是比較好的。
他們或許太忙而沒有merge,因此當(dāng)他們回復(fù),并告知你,在他們有空的時(shí)候再去看。你知道你的pull request不會(huì)永遠(yuǎn)懸而不決了!
Enjoy!
真的,為開源貢獻(xiàn)力量真的有意思,也是跟***的人學(xué)習(xí)以及提高你自己技能的有效方法。希望這個(gè)向?qū)軌驕p輕你對(duì)開源的懼怕?。。?/p>
如果你已經(jīng)貢獻(xiàn)了,請(qǐng)?jiān)谠u(píng)論里分享你的故事!
英文原文:http://natashatherobot.com/beginners-contributing-to-open-source/
譯文鏈接:http://www.labazhou.net/2014/03/beginners-contributing-to-open-source/
本文名稱:初學(xué)者指南:為開源做貢獻(xiàn)
轉(zhuǎn)載源于:http://fisionsoft.com.cn/article/ccescde.html


咨詢
建站咨詢
