本文写在 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 ,会一点前端,懂一点数据可视化。