1. 背景介绍
大约在四个月前,我在 Github 上开源了一个 Go 框架、库和软件的中文收录大全 awesome-go-cn。
该项目是在社区知名项目 awesome-go 的基础上,持续做了很多优化和改进。其出发点是为了能帮助开发者的在庞大的列表中快速寻找到符合自己需求的库、软件。
经历了差不多四个月的持续维护和更新,于 2019.10.23
日 ,终于突破了 1000 star 关卡,完成了人生一个小心愿。在这段期间,心生诸多感慨,借由此文与大家分享。
2. 项目由来
因业务所需开始学习 Golang,当时想要通过阅读 Golang 的 Web 框架源码来熟悉掌握 Golang 整体工程的结构。
为了能找到 Golang 中比较常用的 Web 框架,于是我用社区内比较著名的 awesome-go 列表进行寻找。虽然原版收录的内容确实很丰富,但是实际体验上却是非常糟糕,主要痛点大体如下 :
- 缺少仓库基本信息。缺少了很多仓库基础信息,譬如缺失了 star,不利于筛选和过滤。
- 阅读体验不是很友好。原版英文文档对于阅读体验不太友好,部分陌生专业术语让人摸不着头脑。
原版 WebFramework 索引
对于一个刚刚接触 Golang 生态的同学来讲,这份庞大的列表势必会让人抓狂,加之每个项目良莠不齐,如果要寻找到一份符合要求且质量较高的工程,则需要逐个项目点击,整体筛选效率低下且最终未必能达到目的。
当时就产生了一个想法,要是有一个 awesome-go 中文项目,而且在列表页就能展示出一些仓库的基础属性(如star数量,最近更新时间),岂不是方便许多?
有了 idea,再立马初步评估了一下技术实现,觉得不难,可行
。于是接下来就是撸起袖子,一把梭就开始干了!
3. 项目经历
项目发布主要经历了以下主要阶段 :
- 产品设计 : 从问题中提炼需求,此阶段主要涉及到了社区调研、原型设计。
- 技术实现 : 技术选型、技术方案设计、以及编码工作。
- 社区推广 : 通过相关论坛、技术圈等做项目宣传,扩大使用人群。
- 持续迭代 : 对社区反馈回来的问题进行改进,逐渐完善项目功能,提高项目质量。
3.1 产品设计
这个阶段持续时间其实较短,从想法产生 -> 与朋友'友好讨论' -> 社区调研 -> 产品原型完成
,基本上只花了半天时间。
这个是当时第一版的产品功能脑图,虽然当时想了很多功能,但是第一版其实只完成了大概 30%
,结果也是相对来说比较粗糙,充其量也只能算的上是一个半成品。
awesome-go 产品功能脑图
这里提一下 社区调研,因为个人认为闭门造车不可取,故在开始此项目之前,我就调查了一下有没有类似的项目。
后来查了一下,确实有人已经做过 jobbole/awesome-go-cn,但是可惜的是这个项目已经停止了维护,而且这个项目只是做了单纯的翻译,仍然没有解决筛选困难的问题。 So, Do it yourself~
3.2 技术实现
此项目本身技术实现相对来说比较简单,第一版的开发周期也只耗费了 1 天时间,其核心功能主要有两点 :
- 同时支持 混合云翻译 和 人工翻译
- 在列表中显示每个仓库的基础信息,如 star,最近commit时间 等等
最终实现 :
3.3 社区推广
如果一个人在开源世界里,做了很多事情,连一个 star 都没有。那么,他/她可能就会离开开源世界。当这种事情发生多了,那么开源世界的人就变少了。任何做开源工作的人,都是值得鼓励的,不论他们是出于什么目的。 --- 摘自知乎上用户 phodal
一个优秀的项目,除了要求要项目质量过硬,还也要配以适当的宣传,否则项目将会默默无闻,最终得不到用户关注和反馈,从在某种程度上也会打击开发者的后续的创造和维护积极性。
这里结合我个人经验,向大家推荐几个常用的宣传途径(赚star) :
- 身边
酒肉朋友
的友情赞助。纯友情赞助啦,只为增加初期信心~ - 加入有关的技术圈子。例如加入有关技术圈的gitter、slack、QQ群等做垂直宣传。
- 向技术论坛(如掘金,CSDN)撰写有关你的项目的文章。个人认为这种途径通常效益最高,正向反馈也比较明显。
不过本人平时也比较闷骚,对于品牌公关这事目前也只是摸着石头过河,如果有哪位同学对于宣传这事有比较好的经验,欢迎在评论区里留言分享~
3.4 持续迭代
当时在各大技术网站相继进行推广之后,项目一时间也得到了不少的关注,随之而来也收到了很多建议和意见。
这个是当时在发布后不久收到的第一条 Issue。
因翻译部分直接套用机翻而引起的错误
因当时翻译量较大,也没有足够人力进行翻译,上线心切的我就暂时用了机翻内容作为翻译内容。
当时第一反应是 : 完了,丢脸丢大了。得赶紧该改啊。 于是连忙制定相关优化方案。
解决方案 :
问题一
Q : 翻译量太大,一个人忙不过咋办?
A : 召集亲朋好友,以有偿形式委托他们一起帮忙翻译
复制代码
问题二
Q : 人多了之后,项目管理咋办?
A : 对翻译任务进行拆解并分发到个人,最后统一进行合并。
复制代码
方案落地 :
整个翻译任务拆解为以个人为维度的 task list
4. 写在最后
很久之前,就一直想要拥有一个 github 百星工程,那个时候觉得拥有一个百星工程是一件很酷的事情,并为此奋斗了小半年,陆陆续续开源了很多工程,但是都没有一个能突破 100。
后来发布 awesome-go-cn 仅仅一天,star 便突破了100,这给了我一个信心去冲击更高的目标,就是千星工程。后来的四个月,我花了很多时间和精力去做迭代升级,努力提升项目质量。
期间过程真的是非常非常非常枯燥,也养成了一个不太好的的习惯,那就是每隔半小时会打开 github 去瞧一瞧,有时候看着 star 卡在某个数值许久未动或者突然间少了一颗,心情会莫名的有点失落和惆怅。
但是也因为这段时间开源经历,也收获良多,除了开拓了一下自己的技能树以外,顺便也解锁人生的一项小成就 ^_^
。
最近四个月的 commit 记录
总之:
一时开源一时爽,一直开源一直爽