微人事 star 数超 10k,如何打造一个 star 数超 10k 的开源项目
看了下,微人事(https://github.com/lenve/vhr)项目 star 数超 10k 啦,松哥第一个 star 数过万的开源项目就这样诞生了。
两年前差不多就是现在这个时候,松哥所在的公司业绩下滑严重,关门倒闭已成定局,很多同事在谋划的新的出路,松哥则被公司留下来善后,在一段并不太忙碌的日子里,做了两个 Spring Boot + Vue 的前后端分离开源项目,以期能给自己来年找工作增加一点筹码,没想到这两个项目后来受到很多关注,也帮助了很多人。有不少小伙伴在公司使用微人事项目做脚手架开发项目,也有国内 top20 的高校研究生借鉴微人事做毕设,我自己也因此收到一些大厂的橄榄枝,可以说还是收获满满。
关于这个项目诞生的故事,松哥之前写过一篇文章,感兴趣的小伙伴可以看看:
今天,我想和小伙伴们聊聊如何从零开始打造一个 star 数过万的开源项目。松哥把这些经验总结为三点:
- 文档详细
- 项目有料
- 适当宣传
这些经验不是什么惊世骇俗的大道理,都很普通,关键在于执行。
1. 文档详细
其实在做微人事和 V 部落之前,松哥在 GitHub 上已经做过多个开源项目了,比较有意思的一个是一个 Android 上的自定义控件,我做了一个歌词展示的控件,这个控件引入到自己的项目中以后,可以根据当前歌曲的播放进度动态滚动歌词,效果如如下:
还有一个比较好玩的就是 Android 上自动抢红包的 App。不过这些开源工具和项目最终都石沉大海了。
究其原因,我觉得是自己对待这些项目不够认真,项目开源之后基本上都没有再继续维护了,一个项目提交次数一般都是个位数,项目做完之后,写一篇博客介绍下就算完事了。一个自己都不怎么重视的项目,其实很难引起别人的重视。
所以在 V 部落和微人事中,我就吸取教训,尽量把项目的文档写的详细一些,让不懂前后端分离开发的小伙伴看到我写的开发文档后,就能够快速理清项目的思路。就这样,我每写一个功能点,就写一篇技术文档,微人事项目前前后后一共写了 30 多篇文档:
同时我考虑到很多小伙伴第一次接触到这个项目,一个庞然大物不好处理,因此我在每一次项目提交之前,都会对项目打一个 tag,这样大家通过 git clone
命令获取到项目之后,就可以通过 tag 非常方便的定位到项目的任意时刻,例如只想看登录设计的,可以根据文档介绍回到 v20180107 这个版本:
小伙伴也可以点击 GitHub 上的 release 下载不同时期的项目。我一开始担心有的小伙伴不熟悉 Git 上的 tag 操作,还针对此写了个教程,就是上面文档的第 17 篇。
可以说,这个项目我从头到尾考虑了很多小伙伴们可能遇到的问题,不是自嗨,确实是希望能够带着小伙伴们一起飞。
这么详细的文档当然也得到了小伙伴和一些平台的认可,项目刚刚发布的时候,也就是 2018 年年初的时候,慕课网在它的官方知乎账号、微博账号上都有推过我的介绍项目的文章,当时这个项目就受到了很多小伙伴的关注,收获了不少 star,小伙伴们的关注也鼓励我继续把这个项目向前推进。
这是我介绍的第一点经验,文档详细。
2. 项目有料
项目有料,也就是这个项目对大家而言是有价值的,能够真正帮到大家。
很多小伙伴看到微人事会觉得奇怪,这个项目还有一些功能没有实现,怎么就有这么多人关注呢?其实原因很简单,这个项目的价值不在于它的业务,而在于它解决了很多小伙伴在前后端分离开发中遇到的问题,这也是我做这个项目的初衷之一。
作为一个 Java 攻城狮,我非常明白很多小伙伴去接触 Vue、接触 Nodejs、接触 SPA 以及接触前端工程化这些概念时所面临的困惑,因为这些困惑我也曾经遇到过。
例如前后端分离后,开发环境下前后端如何进行数据交互、权限管理怎么做、文件上传怎么做、项目怎么部署等等,事无巨细,我觉得小伙伴们可能会困惑的地方,我在微人事中直接用代码做出样例,然后再辅以详细的文字解释,这样对于大部分小伙伴而言,都能够快速理解这个项目了。
这个项目建立之初,一开始就定位是一个学习项目,目的就是帮助大家建立前后端分离开发知识体系,搞定前后端分离开发中常见的坑,因此,一旦将项目的框架搭建成功,大家理解了前后端分离架构中的各个细节,剩下的业务不过是堆代码,技术上已经没有挑战了,这也是这个项目最近一段时间更新慢的原因。
这是我和大家分享的第二点经验,项目要有价值。
3. 适当宣传
微人事和 V 部落刚刚上线的时候,我的相关文章被慕课网猛推过几次,当时就让微人事受到了比较多的关注,印象中,大概不到一个月的时间,star 数就超过 1k 了。
由于文档比较详细,很多大佬在整理相关资料的时候都会加上微人事项目,很多小伙伴可能见过标题类似下面这样的文章:
- 13个优秀的 Spring Boot 学习项目
- 开源的13个Spring Boot 优秀学习项目!
- 六月份 GitHub 上最受欢迎的开源项目
- 七月份 GitHub 上最受欢迎的开源项目
....
这一类的文章大部分都会收录微人事项目,进而将微人事项目曝光给更多小伙伴去学习。
今年七月份,有感于 1 年前公司倒闭时的无助,松哥写了一篇文章介绍了微人事项目的诞生过程:
没想到这篇文章被很多大佬转发,单单在知乎上这篇文章的阅读量就超过 12w,那一段时间,微人事项目也被很多有需要的小伙伴关注到了。
宣传这一块,我的经验是如果项目确实帮助到了很多小伙伴,对很多人而言有价值,你会发现平台,一些有影响力的技术牛人会自然的帮你推。所以,我还是建议将重心放在项目上。所谓家有梧桐树,引得凤凰来。
这是我介绍的第三点经验,适当宣传。
好了,一点点不太成熟的经验分享给小伙伴们,希望能帮到大家。
微人事 star 数超 10k,如何打造一个 star 数超 10k 的开源项目的更多相关文章
- 异数OS 星星之火(三)--异数OS-织梦师云 微服务编写入门
. 异数OS 星星之火(三)–异数OS-织梦师云 微服务编写入门 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 6 ...
- 打造一个高逼格的android开源项目——小白全攻略 (转)
转自:打造一个高逼格的android开源项目 小引子 在平时的开发过程中,我们经常会查阅很多的资料,最常参考的是 github 的开源项目.通常在项目的主页面能看到项目的简介和基本使用,并且时不时能看 ...
- Java 前后端分离项目:微人事
本文适合刚学习完 Java 语言基础的人群,跟着本文可了解和运行项目,本示例是在 Windows 操作系统下演示. 本文作者:HelloGitHub-秦人 大家好!这里是 HelloGitHub 推出 ...
- 微人事项目-mybatis-持久层
摘要 最近将微人事这个开源项目进行了复现,这篇文章记录mybaits访问数据库这一块. 其中MyBatis是一个流行的持久层框架,支持自定义SQL.存储过程和高级映射.MyBatis消除了几乎所有的J ...
- RethinkDB创始人教你如何打造一个伟大的互联网产品
关于作者 我叫Slava Akhmechet,本人是 RethinkDB 的创始人之一,RethinkDB是开源,分布式数据库,旨在帮助开发人员与运营商在打造实时应用时处理无结构数据 如何打造一个伟大 ...
- 【前端vue进阶实战】:从零打造一个流程图、拓扑图项目【Nuxt.js + Element + Vuex】 (一)
本系列教程是用Vue.js + Nuxt.js + Element + Vuex + 开源js绘图库,打造一个属于自己的在线绘图软件,最终效果:topology.le5le.com .如果你觉得好,欢 ...
- Python分布式爬虫打造搜索引擎完整版-基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站
Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 https://github.com/mtianyan/Artic ...
- 硬核! Github上 ,star超高的Java 开源项目分享给你!
Awsome JavaGreat Java project on Github(Github 上非常棒的 Java 开源项目). English Version 大家都知道 Github 是一个程序员 ...
- 揭开周获 18k star 开源项目的神秘面纱「GitHub 热点速览 v.22.28」
本周 GitHub Trending 的项目重量十足,比如标题的一周获得 18k+ 的高性能 JS Runtime--bun,用性能来体现了它的"含金量".同样有重量的还有一行代码 ...
随机推荐
- Js、layui获取单选框radio的几种方法
首先,编写HTML如下: <form id="form1"> <table border="0"> ...
- c语言实现数组的排序
本文章只对选择排序和冒泡排序进行介绍 选择排序实际上是从0到length-1,选择某个元素与其他的元素进行大小比较,如果大于就交换,其他情况不做操作,如图: 冒泡排序实际上是先选择某个元素,然后从 ...
- 008 Python基本语法元素小结
目录 一.概要 二.保留字 三.温度转换 一.概要 缩进.注释.命名.变量.保留字 数据类型.字符串. 整数.浮点数.列表 赋值语句.分支语句.函数 input().print().eval(). p ...
- pip的使用
目录 一.配置pip环境变量 二.Cmd终端使用pip 三.Pycharm使用pip 四.Jupyter使用pip 如果把python假想成一部手机,那么pip就是这部手机上的应用管家/APP,他可以 ...
- 秒杀活动是否适合O2O生鲜行业的思考
一.命题提出背景 公司是O2O生鲜行业,公司的业务部门提出要做秒杀活动.产品负责人听到后说没意义,秒杀不适合O2O生鲜.(产品负责人据说是阿里出来的P8,后来去微信,去永辉带运营.研发,做大佬,再后来 ...
- Hbase 日常运维
日常维护的命令 1,major_compact 'testtable',通常生产环境会关闭自动major_compact(配置文件中hbase.hregion.majorcompaction设 为0) ...
- DNA sequence(映射+BFS)
Problem Description The twenty-first century is a biology-technology developing century. We know tha ...
- Spring Boot 入门之 Cache 篇(四)
博客地址:http://www.moonxy.com 一.前言 Spring Cache 对 Cahce 进行了抽象,提供了 @Cacheable.@CachePut.@CacheEvict 等注解. ...
- jmeter 命令压测生成报告
1.本地复制到远程 scp -r local_folder remote_username@remote_ip:remote_folder 或者 scp -r local_folder remote_ ...
- 11 (OC)* CoreImage
coreimage framework 组成 apple 已经帮我们把image的处理分类好,来看看它的结构: 主要分为三部分: 1)定义部分:CoreImage 何CoreImageDefines. ...