本文寫在 markvis 發佈後的一週,總結了在推廣我的項目方面的一些經驗。閱讀時長 10 分鐘。javascript
每一個程序員都幻想過本身的代碼運行在千家萬戶的電腦上,但如何讓你的項目得到更多的關注卻少有人去思考。咱們把注意力放在對代碼的鑽研、對技術的提高,卻少有人關注如何吸引別人參與你的項目。一我的的力量老是有限的,尤爲是在開源社區,越多的人蔘與就意味着你的項目有越多的可能性。html
個人業餘小項目 markvis(markvis.js.org) 發佈一天以後,在 GitHub 收穫了 200 stars,爬上了 Trending 榜前十,如今一週過去已經近 1000 stars。雖然這不算什麼大的成就,但讓我不得不從新思考推廣的意義。前端
通常人對推廣都有或多或少的偏見,從個人我的經驗來講大概來自兩個方面:java
一是受「酒香不怕巷子深」的影響,總認爲只要是金子就會發光的。其實否則,道理很簡單,你以爲你代碼水平不錯,但跟你同水平的程序員確定不止你一個,如何讓別人更加青睞於你,你須要的是曝光率,你須要把你本身的真實水平展示出來,你須要告訴別人你的實力,而不是等別人去挖掘。這個社會競爭太激烈了,尤爲是在咱們可愛的程序員界。程序員
二是總把推廣和低級的營銷混爲一談,甚至把推廣當成一個貶義詞。我以前對推廣的偏見主要來自於此,我總以爲推廣和那些無腦發小廣告的沒什麼兩樣。然而,真正的推廣應該是在散播價值,讓別人知道這個東西的存在,給別人提供瞭解的渠道。固然這得站在你項目是有價值的基礎上,而不是空中樓閣就處處招搖撞騙。學習
一個吸引眼球的開源項目,我認爲須要具有如下幾個要素:測試
前兩點通常都會被人忽略,但其實很是重要。第一點很好理解,畢竟是看臉的時代。第二點,爲何不少企業花很大代價去設計朗朗上口的標語?由於但願在最短的時間內給別人留下最深的印象。第三點正所謂百聞不如一見,向別人傳遞本身的想法老是困難的,不如讓他們本身使用一下,用過才能理解你到底作了什麼偉大的事情。若是你的項目沒辦法在線試用,最好有一個 gif 或短視頻來演示一遍。若是說前三點是包裝,那最後一點則是必須作到的重中之重,接下來咱們重點說一說。網站
README 毋庸置疑是你項目最重要的頁面,如何讓別人迅速瞭解你的項目,你須要用最簡短的話說清楚三件事:.net
尤爲是爲何,必定要說清楚。它解決了什麼問題,使用它的必要性是什麼,它作出了什麼貢獻等等。設計
咱們能夠從使用者的角度去想問題:每當咱們考慮是否要用這個庫的時候,都是先去看他的 README,瞭解清楚它到底作了什麼,以及它的優點。接着再看看它有沒有測試,issues 多很少,解決 issues 和代碼更新的頻率是多少,大概有多少人使用等等。這就引出了另外一些決定你項目成敗的小細節。
這些事情說大不大,說小也不小。我在發佈 markvis 以前把這些都檢查了幾遍。在 README 裏能夠用 coverall 的 badge 來展現測試覆蓋率,用 fossa 來檢測你的協議是否規範。
不是任何項目通過推廣都能成功,推廣的重要性可能只要 10%,剩下的 90% 都取決於項目自己。一個有價值的項目我認爲要知足下面幾個要求:
首先你要有明確的目的,你要解決的是一個什麼問題。這個問題一般不是空想出來的,而是有真正須要的,大多數狀況來自於咱們本身的需求。我在作 markvis 以前,已經在思考如何讓寫做時的可視化更簡單。正好當時讀了一篇論文《Vega-Lite: A Grammar of Interactive Graphics》,我發現只要用簡單的 JSON 就能夠生成一個交互豐富的圖表,這給我作 markvis 提供了極大的靈感。儘管接下來在項目開發的時候遇到一些空難不得不暫時放棄用 vega-lite 的方案,但閱讀相關論文讓我有了作 markvis 的底氣。
其次你須要完成你的項目。開坑不填坑是咱們技術人的常態,每每是腦子一熱開始寫一個項目,寫了不到一半遇到點困難或中間停頓了幾天,就放棄了。開發 markvis 的時候我也是這樣,看 commits 記錄就知道我其實不到一年前就開始開發了,可是強大的拖延症生生的把我拖到如今。沒有完成,功能殘缺,bug 一堆,誰還敢用。
開源項目最難的是維護。知名項目 issues 多的處理不過來,不知名項目徹底無人問津。最痛苦的是那種用的人很少,還又沒人蔘與的項目,這就徹底靠本身了。你要面對的多是無理的需求或質疑,但收到感謝信的時候仍是很是開心的。
萬事俱備只欠東風,發佈也是關鍵。咱們不必開個發佈會,但至少要抱着搞個大新聞的心態。通常狀況下,若是你不想讓人提早知道你在作的東西,你最好不要在完成以前 push 到 GitHub 上,你能夠悄悄的在本地緊鑼密鼓的開發。直到完成的那一天,你須要準備下面兩樣東西:
咱們不要作標題黨,可是也要在帖子標題上稍微下點功夫,最好能說清楚你要幹嗎還又能讓別人有點擊的慾望。帖子的內容很重要,能夠把你 README 上的話再精簡一點,口語化一點。而後開始有策略的向各大網站發帖:
當時我對 markvis 沒抱太大指望,也沒有考慮國外的做息時間,一大早起來就只在前兩個網站上提交了本身的帖子。Hacker News 的流量太大,帖子直接秒沉了,reddit 上遲遲不見反饋。當時可能美國的程序員兄弟剛下班,都去浪了,因此一直沒啥動靜,star 好像只有十幾個。雖然我有點失望,可是沒有放棄,由於周圍的小夥伴說我作的東西還不錯。因而我在午餐以前又去 ProductHunt 上厚顏無恥地提交了本身的項目。沒想到當天就上榜了。因而 star 數開始不停的長,次日上了 GitHub Trending 以後就漲得更快了,徹底超出了預期。
除了上面的這些網站,若是你英語不錯的話,能夠直接向 DailyJS 提交本身的文章,也可讓 JavaScript Weekly 推薦,總之渠道多多,就看你的項目如何了。下面是我發佈一週後的主頁 Google Analytics,能夠看出上週一共有 4.5k 的人來訪,週四即我發佈的次日是人來的最多的一天,並且程序員果真都喜歡凌晨學習,哈哈。
有一些事咱們不去作是由於咱們對它有偏見,好比推廣。有一些事咱們作很差是由於咱們沒有認真思考該怎麼作,好比推廣。禁錮咱們的不是技術手段,而是思惟。這是我此次發佈 markvis 獲得的一些人生經驗,共勉。歡迎新朋友來和我交流,個人博客是 geekplux.com ,會一點前端,懂一點數據可視化。