微人事 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,用性能来体现了它的"含金量".同样有重量的还有一行代码 ...
随机推荐
- HTML5基本介绍
HTML5简介 HTML是互联网上应用最广泛的标记语言.HTML文件就是普通文本+HTML标记,而不同的HTML标记能表示不同的效果.(简单的说HTML是超文本标记语言) HTML5草案的前身名为 W ...
- jupyter notebook快速入门教程
什么是jupyter notebook? 官网:https://jupyter.org/ 上面是官方网址,就简单的介绍下,就不多做解释了,juoyter notebook,就是一个web应用,比较强大 ...
- Intro to Machine Learning
本节主要用于机器学习入门,介绍两个简单的分类模型: 决策树和随机森林 不涉及内部原理,仅仅介绍基础的调用方法 1. How Models Work 以简单的决策树为例 This step of cap ...
- Go语言标准库之flag
Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单. os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数. ...
- 二进制协议gob及msgpack介绍
本文主要介绍二进制协议gob及msgpack的基本使用. 最近在写一个gin框架的session服务时遇到了一个问题,Go语言中的json包在序列化空接口存放的数字类型(整型.浮点型等)都序列化成fl ...
- springboot以jar运行时参数传递
springboot以jar运行时参数传递 spring boot项目我们都习惯以内嵌tomcat方式.直接打包成jar,运行时使用: java -jar XXX.jar --spring.prof ...
- 聊聊Spring Cloud Config
Spring Cloud Config 转自:https://blog.csdn.net/fjnpysh/article/details/71307311 现今这个时候,微服务大行其道,互联网应用遍地 ...
- 单点登录(两种单点登录类型:SSO/CAS、相同一级域名的SSO)
单点登录:SSO(Single Sign On) 什么是单点登录:大白话就是多个网站共享一个用户名和密码的技术,对于普通用户来说,只需要登录其中任意一个网站,登录其他网站的时候就能够自动登陆,不需要再 ...
- 干货| 外卖点餐系统(App及后台)
简单总结一下,这个系统是一个外卖点餐系统,也就是仿美团饿了么,也是当时我的毕业设计,花费了我很多精力,主要包括了移动端App.服务端(中台)和商家的后台管理.答辩完后我就将移动端源码放到了GitHub ...
- Spark学习之Scala的基础知识
Scala的变量声明 在Scala创建变量的时候,必须使用val或者var val,变量值不可修改,一旦分配不能重新指向别的值 var,分配后,可重新指向类型相同的值 举例 val lines = s ...