1. 程式人生 > >微人事 star 數超 10k,如何打造一個 star 數超 10k 的開源專案

微人事 star 數超 10k,如何打造一個 star 數超 10k 的開源專案

看了下,微人事(https://github.com/lenve/vhr)專案 star 數超 10k 啦,鬆哥第一個 star 數過萬的開源專案就這樣誕生了。

兩年前差不多就是現在這個時候,鬆哥所在的公司業績下滑嚴重,關門倒閉已成定局,很多同事在謀劃的新的出路,鬆哥則被公司留下來善後,在一段並不太忙碌的日子裡,做了兩個 Spring Boot + Vue 的前後端分離開源專案,以期能給自己來年找工作增加一點籌碼,沒想到這兩個專案後來受到很多關注,也幫助了很多人。有不少小夥伴在公司使用微人事專案做腳手架開發專案,也有國內 top20 的高校研究生借鑑微人事做畢設,我自己也因此收到一些大廠的橄欖枝,可以說還是收穫滿滿。

關於這個專案誕生的故事,鬆哥之前寫過一篇文章,感興趣的小夥伴可以看看:

  • 公司倒閉 1 年了,而我當年的專案上了 GitHub 熱榜

今天,我想和小夥伴們聊聊如何從零開始打造一個 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 年前公司倒閉時的無助,鬆哥寫了一篇文章介紹了微人事專案的誕生過程:

  • 公司倒閉 1 年了,而我當年的專案上了 GitHub 熱榜

沒想到這篇文章被很多大佬轉發,單單在知乎上這篇文章的閱讀量就超過 12w,那一段時間,微人事專案也被很多有需要的小夥伴關注到了。

宣傳這一塊,我的經驗是如果專案確實幫助到了很多小夥伴,對很多人而言有價值,你會發現平臺,一些有影響力的技術牛人會自然的幫你推。所以,我還是建議將重心放在專案上。所謂家有梧桐樹,引得鳳凰來。

這是我介紹的第三點經驗,適當宣傳。

好了,一點點不太成熟的經驗分享給小夥伴們,希望能幫到大家。
關注公眾號【江南一點雨】,專注於 Spring Boot+微服務以及前後端分離等全棧技術,定期視訊教程分享,關注後回覆 Java ,領取鬆哥為你精心準備的 Java 乾貨!

相關推薦

已知一個字符串S 以及長度為n的字符組a編寫一個統計a中每個字符在字符串中的出現次數

lin sta imp scanner col div created rip void import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 21:

人事 star 10k如何打造一個 star 10k開源專案

看了下,微人事(https://github.com/lenve/vhr)專案 star 數超 10k 啦,鬆哥第一個 star 數過萬的開源專案就這樣誕生了。 兩年前差不多就是現在這個時候,鬆哥所在的公司業績下滑嚴重,關門倒閉已成定局,很多同事在謀劃的新的出路,鬆哥則被公司留下來善後,在一段並不太忙碌的

屬性只能在構造函中定義在其他函中不能定義只能引用

int 構造 init ini elf div 局部變量 log 定義 1 class aa(): 2 3 def __init__(self): 4 self.cc = 6 5 def do(self): 6

給定單向鏈表的頭指針和一個結點指針定義一個在O(1)時間刪除該結點。

刪除 oid ext void print eno 只有一個 尾結點 tdi 鏈表結構如下: typedef struct Node{ int num; struct Node *next; }NodeHead,*Nodes; 刪除函數如下: void

在linux程序裏面知道一個地址改函是屬於某個動態庫的怎麽樣得到這個動態庫的全【轉】

main 動態庫 360doc 復制 address 函數 地址 ati content 轉自:http://www.360doc.com/content/17/1012/11/48326749_694292472.shtml 另外dl_iterate_phdr可以查到當

據模板需要重新指定據上下文

class temp method ring name trigger blog att cell <DataGridTemplateColumn Header="位置信息" Width="*"> <DataGridTemplateColumn.C

與字典可選參和while語句結合的簡單應用

函數python函數可以與各種語句相結合,以達到提高效率簡化流程的目的: 通過函數創建字典eg. 將歌手與專輯對應,並儲存在字典當中 def make_ablum(name, album): """返回整潔的字典格式""" album_details = {‘singer‘: name,

薪酬據分析第二式:據透視表

.com src OS body png 來源 技術分享 圖片 技術 五個要素: 數據來源 行字段 列字段 值字段(統計和匯總功能) 篩選器 薪酬數據分析,第二式:數據透視表

述函的作用瀏覽器執行函的過程

函數代碼 編程 tex defined ext 初始化 pos 才有 一個 作用:在對象裏是個方法,計算,把方法封裝起來,使編程更簡便。 一個函數的執行過程分為兩個階段:(1)建立執行環境;(2)執行函數代碼。 在建立執行環境(execution context)的階段,函

android 方法超過65k解決dex方法超過65536

65k android應用程序方法超限 解決android dex文件方法數過 最近有朋友在問我,為什麽我就加了一個類/一個庫突然跑不起來了。 排查方式: 1、確認你的代碼/引用沒有問題 2、檢查是否是65k問題 今天主要是解決 排查方式2的步驟,這個原因主要是因為你的apk包方法數過大。 現在

組filter()參詳解巧用filter()組去重

查找 這樣的 一次循環 lte console 得出 func AS body 數組方法挺多,但是用來用去可能也就foreach,splice以及slice接觸較多,filter()說實話之前也沒過多了解。其實filter()為數組提供過濾功能,它會遍歷數組所

vue中循環一個數組不顯示的問題一個它反而會循環出來?why?

UC ans res ram 最好的 his get 一個 () 核心:就時this指向的問題,這種情況下最好打印出this看一下 可以在頁面渲染出那個數組 <div>{{listData}}</div>就會看見神奇的事情,竟然時空的解決方案: ge

java-利用多線程Runnable公用一個問題

案例 runnable syn run 循環 ace 思路 println 窗口 案例: 售貨員賣票問題,一個旅遊景點有40張票,開啟了兩個買票的窗口,請用線程的方式,進行模擬售貨員賣票過程,並進行分析。 思路:景點的40張票是一個共享票池,當進行售票時,進行票數確認售票和

[轉載]Tensorflow 的reduce_sum()函的axiskeep_dim這些參到底是什麽意思?

https 二維 應該 知乎 數量 轉載 sum 元素 歸約 轉載鏈接:https://www.zhihu.com/question/51325408/answer/125426642來源:知乎 這個問題無外乎有三個難點: 什麽是sum 什麽是reduce

為反反爬蟲打造一個自己的IP池?Python獲取西刺代理IP並驗證!

  胡蘿蔔醬最近在爬取知乎使用者資料,然而爬取不了一會,IP就被封了,所以去爬取了西刺代理IP來使用。     這裡爬取的是西刺國內高匿IP。我們需要的就是這一串數字。       分

SpringBoot整合WebSocket打造一個聊天室

本文,我們來講下SpringBoot整合WebSocket,打造一個聊天室。   WebSocket 是什麼?   WebSocket 是一種網路通訊協議,RFC6455 定義了它的通訊標準。 瞭解計算機網路協議的人應該都知道,HTTP 協議是一種無狀態

在node中介軟體(服務)架構中一個node去部署多個專案比較好還是一個專案對應一個node比較好?

第一種: 一個專案對應一個node服務; 優點:前端跟node也是可以獨立開發,降低耦合,也可單獨部署; 缺點:一個專案對應一個node,專案多的話,維護不方便; 第二種:一個node下,部署多個專案,可以以這個node作為底盤,在點選進入專案時,讓其載入該專案

某公司的僱員分為以下若干類。寫一個程式把若干各種型別的員工放在一個Employee 組裡一個函式打印出某月每個員工的工資數額

某公司的僱員分為以下若干類:Employee:這是所有員工總的父類,屬性:員工的生日月份。方法:getSalary(int month) 根據引數月份來確定工資,如果該月員工過生日,則公司會額外獎勵100 元。SalariedEmployee:Employee 的子類,拿固定工資的員工。屬性:月薪Hourly

python遞歸練習:生成一個n級深度的字典例如:[1,2,3,4,5,6] 可以生成{1: {2: {3: {4: {6: 5}}}}}一個定義n級

生成 結果 dict 深度 遞歸 ict nco strong ron 結果#encoding = utf-8#題目:#生成一個n級深度的字典,例如:[1,2,3,4,5,6] 可以生成{1: {2: {3: {4: {6: 5}}}}},寫一個函數定義n級a=[1,2,3

輸入一個十進位制整數設計遞迴函式將該整數轉化為一個二進位制。 思考: 如何將一個十進位制轉化成一個8進位制和16進位制

1,輸入一個十進位制整數,設計遞迴函式,將該整數轉化為一個二進位制數。思考: 如何將一個十進位制數轉化成一個8進位制和16進位制數。 #include<stdio.h> #define  N  20 int main() { int a,n,c,k,i; cha