[心得分享] 我在 GitHub 上学习开源

先祝给位圣诞节快乐!前端

文章拖了将近一年的时间,我想是时候能够把两年多在 GitHub 开源的经验分享给你们,虽然不及神人级的开发者,但我始终相信,分享、自由、开放、讨论和开发者是开源的核心精神。git

若是你不知道什么是 GitHub,但多少应该也知道 Bitbucket, CodePlex, Google Code, GitCafe 等等,就先假设你们都知道吧~express

先说声抱歉,也许用词上你们可能不太习惯,再请你们提出修正并给予建议。segmentfault

文长,对着电脑的各位,进入正题前,泡一泡咖啡提提神!架构

[ 接触 GitHub ]

N 年前听教授介绍开源有多厉害,国外高手都是怎么玩开源项目的,就从那个时候开始,接触了 GitHub。除了 GitHub 你还能够选择国产 GitCafe,用过 GitHub 都应该能够感觉到,大众仍是较为喜欢 GitHub,不管是 UI/UX、效率仍是社群,GitHub 仍是拥有极大的优点。svn

开始的时候玩一玩就立立刻手,根本就是快快乐乐学 Git/GitHub,透过 GitHub 才慢慢了解 Git。一开始使用 GitHub 提供的 GitHub Desktop 来 commit push,但后来好像 bug 不少,这时就开始接触 command line (cmd),就一直用到如今,如今已经回不去 GUI 了。工具

有付费买过 GitHub 私人空间的人和公司其实很多,但费用也不便宜。还记得以前在公司直接用 GitHub Importer 把整个公司项目复制一份到 GitHub 上,不费吹灰之力就完成了,若是你的项目是 svn,转换过去 git 也是没有问题的!oop

[ 前辈 ]

两年前本身很嫩(如今仍是很嫩),前辈开始教我多学习别人的开源项目、学习模仿等等的,到如今我仍是恨感激这位前辈,没有他推我一把,我可能就没继续开源下去了。看了几个星期后,前辈让我开一个项目,恰好公司网站是使用 AngularJS 当前端架构开发,那就写一个前端验证工具吧。定义需求、规则、功能,再来定义最重要的 SPEC,接着开始写主要模组,其中固然少不了被前辈叮说这怎么这样写等等之类的。学习

我还记得很清楚,前辈说:那开始写测试吧,写测试的时间是写模组的两倍时间哦!问题是,我怎么知道该如何写测试,并且是该死的 AngularJS,哪懂什么 protractor,由一堆什么 BDD/TDD, JUnit, QUnit, Jasmine, Mocha 的。就直接模仿了前辈的程式,也终于把完整的测试给写出来了。从开始到结束大约花了3个月的时间,前辈也已经离职了。大体初步功能也完成了,DEMO 页面也写好了,就立马开源,这里简称 A-V!测试

不要怀疑,前辈是个牛人,因此我很是的辛运!

[ N4J ]

其实在 A-V 出来以前,我只会 jQuery,正在学习 jQuery 写第三方套件的时候开发了 N4J 的前端工具,N4J 是纯粹学习用的,学习如何使用 GitHub、结构以及书写文件。还记得本身写得很开心,多年回去看还记得那时候的兴奋,后来毕业后也用 N4J 顺利拿到了聘书,毕业后就立刻就业。

[ A-V ]

先说说 A-V 目前的情况,有 2xx commits、1x releases、2x contributors,比起大型项目这个数字没什么,但对我来讲,这些数字都是一个确定,一个成就,我想这是开源带给个人好处之一,也是让我持续投入时间的缘由。

完成第一个版本后就立刻上线了,写过程式的人都知道,这时候就会出现上线臭虫,版本 1.0.5, 1.0.6, 1.1.0 后,才开始慢慢稳定下来。

很快的,我试着在各论坛发表本身的做品,也包括中国的一些社群,分享本身这几个月下来的成果,但很惋惜回应个人人没有不少,也许是做品没有爆炸性,毕竟只是个前端验证工具。其实难免有点小小的失望,没有人讨论,没有任何回馈。但有一点值得注意的是,AngularJS 在这方面尚未太多相关的套件和讨论,因此我算是进入了对的时间点。

几个月下来,我持续开发、增长功能、把程式写得更好,来了第一个 issue,后来也陆续来了几个,应该是我以前在某个论坛发文,有人看到进来给我意见。固然我就当即回覆谢谢他们的提议,立刻修改或者问说有什么建议等等之类的。由于有人看到,star 了事后就会更多人看到,甚至有人开始丢 PR 给我,在这里我学到,有人丢 PR 给你,你必定要接受,除非他的程式充满问题,但也不能立刻拒绝,要提出本身的理由决定是否要对方修改仍是继续讨论下去。其实我在别人的开源项目也是如此,丢了一个 PR,几天内没有人回覆会以为很伤心,但一旦被接受或者回覆,心理会很开心,太棒了,被接受了!这是一种被确定,支持的动做。因此只要有人丢 PR 我大部分都会接受。

接下来的几个月,更多的 issue 更多的 PR,一我的没法承担全部的问题,因此不少我回覆后就没有继续了,一旦有时间多是一个月后,才有时间回来看到底发生什么问题,就这样慢慢把 bug 修复。还记得有一次,有个 issue 几个月下来都解不了,某天晚上到了咖啡厅坐下,瞬间就解掉了,这必定要上一个新标签说 “fix feature or major improvement”,其实这是开发开源的小确幸,只有你知道发生了什么事,即便你公告了你修复这个功能,会理你的人没有多少。

中间固然有停下的时候,彻底没有任何声音本身也没动力继续开发解 bug,但忽然有人丢了一个 bug 或者 PR 事后,又会瞬间热血起来,不修掉不行的那种感受,修掉后会很开心,而后又会安静一阵子。大概就是这样来来回回的情况。

固然若是你的项目是那种爆炸性的,好比说 pageres、express、awesome,不会是以上的故事

前几个月,由于自觉 A-V 掉入了谷底,好久没有更新也没有人问说进度,开了一个 issue “Looking for Collaborators”,自觉得会有人挺身而出的说:“我来”,结果一个都没有。在这里我学习到的是,开源项目,就是要让他慢慢的酝酿,果真某一天有人丢了个PR 几乎大改了我整个架构,改着改着他的兴趣就来了,我就问他说要不要当 Collaborator,他也就立刻说好。后来咱们也开了个Slack 群组,讨论著 A-V 的开发。也许有人以为这没什么,可是这种与网友一块儿奋斗,讨论著彼此的专业,这份经历是工做永远没法取代的。

以上故事就是不停的 loop,持续了两年,直到如今不是一我的在开发修 bug,而是有同伴一块儿讨论,彼此给意见,这就是开源的魅力所在。

A-V 事后,陆陆续续展开对开源的兴趣,看了不少知识产权的选择(仍是以为迷迷糊糊的),期间也开了很多的项目,像是 IG、GE、SSS、JSD 等等的,虽然没有像 A-V 那么精彩,但不免仍是有issue 有 PR(真的很珍贵)。

[ A-J ]

A-J 虽然不是我开始的,是我主动寄信给做者要求成为 Collaborator。A-J 属于爆炸性的项目,如今已经有四位数的星星,一般这类型的项目 issue 和 pr 会多到你接到手软会想吐,大概会忽略他一阵子,而后一段时间后再来慢慢处理。可是既然是本身主动要求帮忙的,就有责任继续维护它,开源要学习的其中一点就是-主动,包括提出问题、意见、结果、拒绝,你的任何一个动做都在帮助一个开源项目的进步,这里就真的是责任制了。每一个项目都有本身的步调,你也能够不要主动,让原开发者自行决定项目方向。

[ Gitter ]

其实我以为 GitHub 提供的 Issue 已经很好用了,整个项目的讨论都能在 Issue Comment 完成,有必要还能互相关联,甚至下标签来整理 Issue 分类。但有时候不是全部人都喜欢在 Issue 问问题,也有可能担忧问到重复的问题。

若是你的项目很大,你能够建议你们到 stackoverflow/segmentfault/irc 寻找问题,但对于比较小的项目,可使用Gitter。 Gitter 是一个聊天室,会自动整合 GitHub,任何的动向都会纪录在 Gitter 内,让全部人进入一个独立的空间讨论问题。多一个管道让你们凝聚,其实多少也能帮助到你,由于一个聊天室里面,你们都能发言,你不回答其余人会帮你回答的。

[ 已死? ]

经常逛 GitHub,你会发现有不少有趣的项目,但看到最新的更新时间,什么!是一年前。这时候就会开始脑补,是否是项目已经没有在开发了,做者彷佛也消失了,有好多 issue 好多 PR 都没有被接受。本身也尝试丢了 issue 询问项目开发进度,固然也没获得任何回应。偶尔仍是会以为很惋惜,这么棒的一个项目是否是被抛弃了。

可是不要气馁,就由于这是開源,这是一个开放的社群,任何人都有权利查看修改更新(有的是不容许的),先查查看 fork 分支,有时候分支的星星数还会比本来的还要多,再看看 issue 里面有没有人在讨论替代方案。最后一招就是本身 fork 本身改,固然你也能够开一个全新的项目来作同样的事情。

[ END ]

以上是我在 GitHub 上学习開源的经验分享。对我来讲,滑 GitHub 已經成為我生活中的一部分。打开 GitHub 点击 Explore 经常会有意想不到的新项目,也是吸取新知识、新趋势的好地方。

有人说,维护开源项目,就像是开一间公司,你要不停的对他持续开发,对的时机对的功能,持续研究并找寻突破点,公司才能活得久。

原谅我把开源项目的名字都缩写了,由于这不能是个广告文,但
不瞒各位,我就是来骗赞的啦,骗星星为其次,再来骗 followers,但我必定會持续开源,增长本身的能力。

不知道你们的开源经验是什么呢?

相关文章
相关标签/搜索