怎样做好一个开源项目
沟通创造价值,分享带来快乐。这里是程序员阅读时间,每天和你分享读书心得,欢迎您每天和我一起精进。
作者:十三
解读:张飞洪
现在的很多程序员基本上可以说是面向GitHub编程,遇到新项目要启动就会到GitHub上一顿猛烈搜索,然后采用拿来主义,这对那些想要做开源项目,甚至通过开源来收割韭菜的人来说,开源就是一个非常好的机会。
十三从2017年二月份开始开源之旅,差不多和他的博客之路同时开启。根据他个人的体会,开源的辛酸和挫败从一开始就伴随着他,中间有好多次想打退堂鼓。原因很简单,不要以为自己开源了,就会有人看,你要坚信就算你真的是拿出你的家底出来,可能还是有99.99%的人听都没听过,更别提去关注和了解你。
三个阶段
十三提到他做开源的三个心理阶段:
第一阶段:要不要做?
总是在犹豫到底要不要做开源,我为什么要做开源,能和自己的预期一样吗?
第二阶段:能坚持吗?
不知道要做什么,坚持不了怎么办?没有人关注怎么办?最后十三是这么想的:“我不怕千万人阻挡,只怕自己投降”。
第三阶段:如何做好?
既然下定了决心,那么就要开始思考怎么做了,这个也是本篇要谈的重点。
如何做好开源?
- 前期规划
既然开源是一份需要持续投入的工作,那么开头的规划就非常重要了。十三帮我们罗列了他的做法,比如说:
- 要做什么项目?
- 要选什么题材?
- 什么类型?
- 一年内大概有几个版本?
- 最终的形态是什么样的?
- 这个项目是为了解决什么而出现的?
这些一定要想清楚,好的开源项目有以下几个标准:
- 访问量
- star数量
- folk数量
- clone数量
- issue数量
明确以上的指标,你的开源之旅就可以开启了。
- 迈出第一步
第一个项目主要使用spring和spring mvc加mybatis框架整合实践项目ssm-demo,这些框架都是大部分公司的常用框架,稍微修改以下就提交到开源仓库了,所以开源好像也不难。这里开源的并不是底层框架性的基础架构,而是基于知名科技进行业务整合。这种方式确实对一般3-5年的程序员都不是问题。
- 升级迭代
接下来就和我们平时开发一样,按照最小功能清单进行版本迭代。如此这般,坚持了三年,中间因为spring boot的出现,进行了底层框架的替换。包括常用的后台攻略心跳,资讯发布系统,博客系统,商城系统,以及由此衍生出的各种项目。
每次升级都会在博客里面进行宣讲,让你的关注者有所期待,能了解你的动态和决心,这是和读者互动的重要窗口。
- 双赢心态
从整合自己手头的项目开始,通过文档编写既能梳理自己的知识,加深理解,也能帮助那些需要的朋友,这里难能可贵的是利他心里,只有利他才能得到他人的帮助,开源的本质其实就是分享。
设身处地去想一下,你去开源项目网站上搜索项目时,是不是为了解决自己目前所面对的问题呢?如果你搜到了一个开源项目,但是代码不全,文档不完整,下载之后根本用不了,那么这种项目你还会使用或者分享给其他人吗?所以我们如果做开源项目,那么这个项目一定要能用,要帮助别人解决当下的问题。我认为这是衡量一个开源项目最基本的标准,也是非常现实的一个标准。
十三基于spring boot技术栈为主的新风商城项目,因为代码和相关的文档非常齐全,帮助了很多的开发者快速掌握spring boot,并使用spring boot技术栈去开发一个大型的商城项目。而且项目帮助了很多在校大学生完成毕业设计这个难题,也帮助了很多的Java求职者找到了工作。
- 文档+示例
好的开源如果缺失文档,对读者是很不友好的,所以成功的开源都是以程序员为中心,想对方之所想,反过来思考,我们阅读开源项目的时候,也会希望对方如果有配套的文档就更好了。
有了文档再加持示例和Demo,整个体验就会是立体的,你要尽可能把开源当作产品来打磨,否则很难获得成长,所以开源真的不容易,需要持续投入时间和精力。
失败的示范:
- 当你进入他的仓库时一时想不通这个项目是干嘛的,或者他能够帮助你干什么。
- 项目文档虽然有,但是就几句话,或者只有初始化项目时的默认文档,还没什么排版。
- 写好代码并且开源出去就会有人来关注,来看你。
良好的示范:
生活中我们都知道第一印象的作用,我们自己做的开源项目也是这样,当别人打开我们的仓库,那一瞬间就可以看到详细的文档和恰到好处的图片,他可能才会进一步的去了解和研究这个项目,而不是直接点击关闭按钮与我们擦肩而过。
所以总结来说,就是要明白项目基础信息展示的影响力。
具体操作十三介绍了以下几种方式,概况来讲就是:
- 一句话介绍我们的项目
- 项目的特性和优点
- 项目所使用的技术栈以及合适的图片
- 降低预期
认清自己,并且降低自己的心理预期,这也是一个很真诚的建议。我们并不是开源世界的大佬,也不是流量很大的牛人,在开源项目发布出去的一段时间,不要急功近利,不要给自己设立一些难以实现的目标,这样只会给自己压力,而且徒增烦恼。
开源是为了分享和交流,分享者一定要放宽心,如果没有很好的成绩,我们就继续努力,我能做的就是不断的进化,不断地进步。
我很相信那句话,酒香不怕巷子深。
可能你会觉得我这个人有点傻乎乎的,傻是傻了点啊,但是不痛苦,也没压力,轻装上阵,跑得快。
关键点总结
以上就是十三通过个人经历的分享,另外他也给我们分享了开源项目给他带来的收获:
- 摆脱由学生身份转变后的一个纠结状态;
- 认识了很多志趣相投的朋友;
- 经常受到各种公司的面试邀约,人也自信了一点;
- 接收信息的渠道增加了,接收到的信息更多了,对自身的进步有很大的积极作用;
- 在机缘巧合之下,也开启了副业,写起了专栏,写起了书;
- 最重要的是我发现了一个更大的世界,活得不再闭塞。
十三的GitHub:https://github.com/zhenfeng13