摘要:從開始到結(jié)束大約花了個(gè)月的時(shí)間,前輩也已經(jīng)離職了。是一個(gè)聊天室,會(huì)自動(dòng)整合,任何的動(dòng)向都會(huì)紀(jì)錄在內(nèi),讓所有人進(jìn)入一個(gè)獨(dú)立的空間討論問(wèn)題。自己也嘗試丟了詢問(wèn)項(xiàng)目開發(fā)進(jìn)度,當(dāng)然也沒(méi)得到任何回應(yīng)。以上是我在上學(xué)習(xí)開源的經(jīng)驗(yàn)分享。
先祝給位圣誕節(jié)快樂(lè)!
文章拖了將近一年的時(shí)間,我想是時(shí)候可以把兩年多在 GitHub 開源的經(jīng)驗(yàn)分享給大家,雖然不及神人級(jí)的開發(fā)者,但我始終相信,分享、自由、開放、討論和開發(fā)者是開源的核心精神。
如果你不知道什么是 GitHub,但多少應(yīng)該也知道 Bitbucket, CodePlex, Google Code, GitCafe 等等,就先假設(shè)大家都知道吧~
先說(shuō)聲抱歉,也許用詞上大家可能不太習(xí)慣,再請(qǐng)大家提出修正并給予建議。
文長(zhǎng),對(duì)著電腦的各位,進(jìn)入正題前,泡一泡咖啡提提神!
[ 接觸 GitHub ]N 年前聽(tīng)教授介紹開源有多厲害,國(guó)外高手都是怎么玩開源項(xiàng)目的,就從那個(gè)時(shí)候開始,接觸了 GitHub。除了 GitHub 你還可以選擇國(guó)產(chǎn) GitCafe,用過(guò) GitHub 都應(yīng)該可以感受到,大眾還是較為喜歡 GitHub,不論是 UI/UX、效率還是社群,GitHub 還是擁有極大的優(yōu)勢(shì)。
開始的時(shí)候玩一玩就立馬上手,根本就是快快樂(lè)樂(lè)學(xué) Git/GitHub,透過(guò) GitHub 才慢慢了解 Git。一開始使用 GitHub 提供的 GitHub Desktop 來(lái) commit push,但后來(lái)好像 bug 很多,這時(shí)就開始接觸 command line (cmd),就一直用到現(xiàn)在,現(xiàn)在已經(jīng)回不去 GUI 了。
有付費(fèi)買過(guò) GitHub 私人空間的人和公司其實(shí)不少,但費(fèi)用也不便宜。還記得之前在公司直接用 GitHub Importer 把整個(gè)公司項(xiàng)目復(fù)制一份到 GitHub 上,不費(fèi)吹灰之力就完成了,如果你的項(xiàng)目是 svn,轉(zhuǎn)換過(guò)去 git 也是沒(méi)有問(wèn)題的!
[ 前輩 ]兩年前自己很嫩(現(xiàn)在還是很嫩),前輩開始教我多學(xué)習(xí)別人的開源項(xiàng)目、學(xué)習(xí)模仿等等的,到現(xiàn)在我還是恨感激這位前輩,沒(méi)有他推我一把,我可能就沒(méi)繼續(xù)開源下去了。看了幾個(gè)星期后,前輩讓我開一個(gè)項(xiàng)目,剛好公司網(wǎng)站是使用 AngularJS 當(dāng)前端架構(gòu)開發(fā),那就寫一個(gè)前端驗(yàn)證工具吧。定義需求、規(guī)則、功能,再來(lái)定義最重要的 SPEC,接著開始寫主要模組,其中當(dāng)然少不了被前輩叮說(shuō)這怎么這樣寫等等之類的。
我還記得很清楚,前輩說(shuō):那開始寫測(cè)試吧,寫測(cè)試的時(shí)間是寫模組的兩倍時(shí)間哦!問(wèn)題是,我怎么知道該如何寫測(cè)試,而且是該死的 AngularJS,哪懂什么 protractor,由一堆什么 BDD/TDD, JUnit, QUnit, Jasmine, Mocha 的。就直接模仿了前輩的程式,也終于把完整的測(cè)試給寫出來(lái)了。從開始到結(jié)束大約花了3個(gè)月的時(shí)間,前輩也已經(jīng)離職了。大致初步功能也完成了,DEMO 頁(yè)面也寫好了,就立馬開源,這里簡(jiǎn)稱 A-V!
不要懷疑,前輩是個(gè)牛人,所以我非常的辛運(yùn)!
[ N4J ]其實(shí)在 A-V 出來(lái)之前,我只會(huì) jQuery,正在學(xué)習(xí) jQuery 寫第三方套件的時(shí)候開發(fā)了 N4J 的前端工具,N4J 是純粹學(xué)習(xí)用的,學(xué)習(xí)如何使用 GitHub、結(jié)構(gòu)以及書寫文件。還記得自己寫得很開心,多年回去看還記得那時(shí)候的興奮,后來(lái)畢業(yè)后也用 N4J 順利拿到了聘書,畢業(yè)后就馬上就業(yè)。
[ A-V ]先說(shuō)說(shuō) A-V 目前的狀況,有 2xx commits、1x releases、2x contributors,比起大型項(xiàng)目這個(gè)數(shù)字沒(méi)什么,但對(duì)我來(lái)說(shuō),這些數(shù)字都是一個(gè)肯定,一個(gè)成就,我想這是開源帶給我的好處之一,也是讓我持續(xù)投入時(shí)間的原因。
完成第一個(gè)版本后就馬上上線了,寫過(guò)程式的人都知道,這時(shí)候就會(huì)出現(xiàn)上線臭蟲,版本 1.0.5, 1.0.6, 1.1.0 后,才開始慢慢穩(wěn)定下來(lái)。
很快的,我試著在各論壇發(fā)表自己的作品,也包括中國(guó)的一些社群,分享自己這幾個(gè)月下來(lái)的成果,但很可惜回應(yīng)我的人沒(méi)有很多,也許是作品沒(méi)有爆炸性,畢竟只是個(gè)前端驗(yàn)證工具。其實(shí)不免有點(diǎn)小小的失望,沒(méi)有人討論,沒(méi)有任何回饋。但有一點(diǎn)值得注意的是,AngularJS 在這方面還沒(méi)有太多相關(guān)的套件和討論,所以我算是進(jìn)入了對(duì)的時(shí)間點(diǎn)。
幾個(gè)月下來(lái),我持續(xù)開發(fā)、增加功能、把程式寫得更好,來(lái)了第一個(gè) issue,后來(lái)也陸續(xù)來(lái)了幾個(gè),應(yīng)該是我之前在某個(gè)論壇發(fā)文,有人看到進(jìn)來(lái)給我意見(jiàn)。當(dāng)然我就立即回覆謝謝他們的提議,馬上修改或者問(wèn)說(shuō)有什么建議等等之類的。因?yàn)橛腥丝吹?,star 了過(guò)后就會(huì)更多人看到,甚至有人開始丟 PR 給我,在這里我學(xué)到,有人丟 PR 給你,你一定要接受,除非他的程式充滿問(wèn)題,但也不能馬上拒絕,要提出自己的理由決定是否要對(duì)方修改還是繼續(xù)討論下去。其實(shí)我在別人的開源項(xiàng)目也是如此,丟了一個(gè) PR,幾天內(nèi)沒(méi)有人回覆會(huì)覺(jué)得很傷心,但一旦被接受或者回覆,心理會(huì)很開心,太棒了,被接受了!這是一種被肯定,支持的動(dòng)作。所以只要有人丟 PR 我大部分都會(huì)接受。
接下來(lái)的幾個(gè)月,更多的 issue 更多的 PR,一個(gè)人無(wú)法承擔(dān)所有的問(wèn)題,所以很多我回覆后就沒(méi)有繼續(xù)了,一旦有時(shí)間可能是一個(gè)月后,才有時(shí)間回來(lái)看到底發(fā)生什么問(wèn)題,就這樣慢慢把 bug 修復(fù)。還記得有一次,有個(gè) issue 幾個(gè)月下來(lái)都解不了,某天晚上到了咖啡廳坐下,瞬間就解掉了,這一定要上一個(gè)新標(biāo)簽說(shuō) “fix feature or major improvement”,其實(shí)這是開發(fā)開源的小確幸,只有你知道發(fā)生了什么事,即使你公告了你修復(fù)這個(gè)功能,會(huì)理你的人沒(méi)有多少。
中間當(dāng)然有停下的時(shí)候,完全沒(méi)有任何聲音自己也沒(méi)動(dòng)力繼續(xù)開發(fā)解 bug,但突然有人丟了一個(gè) bug 或者 PR 過(guò)后,又會(huì)瞬間熱血起來(lái),不修掉不行的那種感覺(jué),修掉后會(huì)很開心,然后又會(huì)安靜一陣子。大概就是這樣來(lái)來(lái)回回的狀況。
當(dāng)然如果你的項(xiàng)目是那種爆炸性的,比如說(shuō) pageres、express、awesome,不會(huì)是以上的故事
前幾個(gè)月,因?yàn)樽杂X(jué) A-V 掉入了谷底,很久沒(méi)有更新也沒(méi)有人問(wèn)說(shuō)進(jìn)度,開了一個(gè) issue “Looking for Collaborators”,自以為會(huì)有人自告奮勇的說(shuō):“我來(lái)”,結(jié)果一個(gè)都沒(méi)有。在這里我學(xué)習(xí)到的是,開源項(xiàng)目,就是要讓他慢慢的醞釀,果然某一天有人丟了個(gè)PR 幾乎大改了我整個(gè)架構(gòu),改著改著他的興趣就來(lái)了,我就問(wèn)他說(shuō)要不要當(dāng) Collaborator,他也就馬上說(shuō)好。后來(lái)我們也開了個(gè)Slack 群組,討論著 A-V 的開發(fā)。也許有人覺(jué)得這沒(méi)什么,但是這種與網(wǎng)友一起奮斗,討論著彼此的專業(yè),這份經(jīng)歷是工作永遠(yuǎn)無(wú)法取代的。
以上故事就是不停的 loop,持續(xù)了兩年,直到現(xiàn)在不是一個(gè)人在開發(fā)修 bug,而是有同伴一起討論,彼此給意見(jiàn),這就是開源的魅力所在。
A-V 過(guò)后,陸陸續(xù)續(xù)展開對(duì)開源的興趣,看了很多知識(shí)產(chǎn)權(quán)的選擇(還是覺(jué)得迷迷糊糊的),期間也開了不少的項(xiàng)目,像是 IG、GE、SSS、JSD 等等的,雖然沒(méi)有像 A-V 那么精彩,但難免還是有issue 有 PR(真的很珍貴)。
[ A-J ]A-J 雖然不是我開始的,是我主動(dòng)寄信給作者要求成為 Collaborator。A-J 屬于爆炸性的項(xiàng)目,現(xiàn)在已經(jīng)有四位數(shù)的星星,通常這類型的項(xiàng)目 issue 和 pr 會(huì)多到你接到手軟會(huì)想吐,大概會(huì)忽略他一陣子,然后一段時(shí)間后再來(lái)慢慢處理。但是既然是自己主動(dòng)要求幫忙的,就有責(zé)任繼續(xù)維護(hù)它,開源要學(xué)習(xí)的其中一點(diǎn)就是-主動(dòng),包括提出問(wèn)題、意見(jiàn)、結(jié)果、拒絕,你的任何一個(gè)動(dòng)作都在幫助一個(gè)開源項(xiàng)目的進(jìn)步,這里就真的是責(zé)任制了。每個(gè)項(xiàng)目都有自己的步調(diào),你也可以不要主動(dòng),讓原開發(fā)者自行決定項(xiàng)目方向。
[ Gitter ]其實(shí)我覺(jué)得 GitHub 提供的 Issue 已經(jīng)很好用了,整個(gè)項(xiàng)目的討論都能在 Issue Comment 完成,有必要還能互相關(guān)聯(lián),甚至下標(biāo)簽來(lái)整理 Issue 分類。但有時(shí)候不是所有人都喜歡在 Issue 問(wèn)問(wèn)題,也有可能擔(dān)心問(wèn)到重復(fù)的問(wèn)題。
如果你的項(xiàng)目很大,你可以建議大家到 stackoverflow/segmentfault/irc 尋找問(wèn)題,但對(duì)于比較小的項(xiàng)目,可以使用Gitter。 Gitter 是一個(gè)聊天室,會(huì)自動(dòng)整合 GitHub,任何的動(dòng)向都會(huì)紀(jì)錄在 Gitter 內(nèi),讓所有人進(jìn)入一個(gè)獨(dú)立的空間討論問(wèn)題。多一個(gè)管道讓大家凝聚,其實(shí)多少也能幫助到你,因?yàn)橐粋€(gè)聊天室里面,大家都能發(fā)言,你不回答其他人會(huì)幫你回答的。
[ 已死? ]常常逛 GitHub,你會(huì)發(fā)現(xiàn)有很多有趣的項(xiàng)目,但看到最新的更新時(shí)間,什么!是一年前。這時(shí)候就會(huì)開始腦補(bǔ),是不是項(xiàng)目已經(jīng)沒(méi)有在開發(fā)了,作者似乎也消失了,有好多 issue 好多 PR 都沒(méi)有被接受。自己也嘗試丟了 issue 詢問(wèn)項(xiàng)目開發(fā)進(jìn)度,當(dāng)然也沒(méi)得到任何回應(yīng)。偶爾還是會(huì)覺(jué)得很可惜,這么棒的一個(gè)項(xiàng)目是不是被拋棄了。
但是不要?dú)怵H,就因?yàn)檫@是開源,這是一個(gè)開放的社群,任何人都有權(quán)利查看修改更新(有的是不允許的),先查查看 fork 分支,有時(shí)候分支的星星數(shù)還會(huì)比原本的還要多,再看看 issue 里面有沒(méi)有人在討論替代方案。最后一招就是自己 fork 自己改,當(dāng)然你也可以開一個(gè)全新的項(xiàng)目來(lái)做一樣的事情。
[ END ]以上是我在 GitHub 上學(xué)習(xí)開源的經(jīng)驗(yàn)分享。對(duì)我來(lái)說(shuō),滑 GitHub 已經(jīng)成為我生活中的一部分。打開 GitHub 點(diǎn)擊 Explore 常常會(huì)有意想不到的新項(xiàng)目,也是吸收新知識(shí)、新趨勢(shì)的好地方。
有人說(shuō),維護(hù)開源項(xiàng)目,就像是開一間公司,你要不停的對(duì)他持續(xù)開發(fā),對(duì)的時(shí)機(jī)對(duì)的功能,持續(xù)研究并找尋突破點(diǎn),公司才能活得久。
原諒我把開源項(xiàng)目的名字都縮寫了,因?yàn)檫@不能是個(gè)廣告文,但
不瞞各位,我就是來(lái)騙贊的啦,騙星星為其次,再來(lái)騙 followers,但我一定會(huì)持續(xù)開源,增加自己的能力。
不知道大家的開源經(jīng)驗(yàn)是什么呢?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91580.html
摘要:喜歡學(xué)習(xí)新的技術(shù)和實(shí)現(xiàn)方案,挑戰(zhàn)難點(diǎn)。第三層直接符合的。遇到的問(wèn)題,也盡可能的去一起解決,減輕學(xué)習(xí)上的痛苦。學(xué)習(xí)完了,就得實(shí)戰(zhàn)。當(dāng)然也有我很多沒(méi)有考慮到的,還需繼續(xù)學(xué)習(xí)。在此期間,也可能會(huì)有更好,更有趣的想法在其中產(chǎn)生。 showImg(https://segmentfault.com/img/remote/1460000019521851); 有人說(shuō),Spring Boot的出現(xiàn),讓...
摘要:遵守原則對(duì)了,在提交表單前會(huì)有幾項(xiàng)拷問(wèn)靈魂的宣言需要勾選。期限提交表單過(guò)后就是坐等收郵件了。郵件里說(shuō)許可證的有效期是一年,到期前會(huì)發(fā)一個(gè)提醒郵件,如果項(xiàng)目還符合要求可以繼續(xù)申請(qǐng)使用。 閑聊 步入前端切圖仔行列的我曾多次糾結(jié)過(guò)「到底使用哪種編輯器寫前端好用?」這樣的問(wèn)題,前前后后嘗試過(guò) Dreamweaver 、HBuilder 、Sublime Text 、Atom 和現(xiàn)在主要使用的...
摘要:受上海杰克大大委托,于今晚分享一下本人的自學(xué)歷程主題機(jī)械轉(zhuǎn)行前端,半年零基礎(chǔ)自學(xué)的心路歷程。所以我就這半年個(gè)人自學(xué)修行以來(lái)的一些感觸和心得方面進(jìn)行分享。背景介紹內(nèi)容前工作狀況機(jī)械離職經(jīng)歷心態(tài)轉(zhuǎn)變目標(biāo)確定大家好,我是,一枚前端萌新。 機(jī)械轉(zhuǎn)行前端,半年零基礎(chǔ)自學(xué)的心路歷程 標(biāo)簽: 轉(zhuǎn)行 自學(xué) 原創(chuàng):Michael.Lu 277133779@qq .com 轉(zhuǎn)載注明出處 這是初級(jí)群(西安...
摘要:受上海杰克大大委托,于今晚分享一下本人的自學(xué)歷程主題機(jī)械轉(zhuǎn)行前端,半年零基礎(chǔ)自學(xué)的心路歷程。所以我就這半年個(gè)人自學(xué)修行以來(lái)的一些感觸和心得方面進(jìn)行分享。背景介紹內(nèi)容前工作狀況機(jī)械離職經(jīng)歷心態(tài)轉(zhuǎn)變目標(biāo)確定大家好,我是,一枚前端萌新。 機(jī)械轉(zhuǎn)行前端,半年零基礎(chǔ)自學(xué)的心路歷程 標(biāo)簽: 轉(zhuǎn)行 自學(xué) 原創(chuàng):Michael.Lu 277133779@qq .com 轉(zhuǎn)載注明出處 這是初級(jí)群(西安...
閱讀 3882·2023-04-26 00:36
閱讀 2681·2021-11-16 11:44
閱讀 1105·2021-11-15 17:58
閱讀 1680·2021-09-30 09:47
閱讀 1221·2019-08-30 13:05
閱讀 1553·2019-08-30 12:55
閱讀 2420·2019-08-30 11:02
閱讀 2748·2019-08-29 17:01