3

如何在 GitHub 上获得数百 stars

 2 years ago
source link: https://geekplux.com/posts/how-to-get-hundreds-stars-on-github
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
如何在 GitHub 上获得数百 stars

如何在 GitHub 上获得数百 stars

本文首发于「掘金专栏」,地址:https://juejin.im/post/59701b61518825412f27a0b1 。 本文写在 markvis 发布后的一周,总结了在推广个人项目方面的一些经验。阅读时长 10 分钟。原文地址:https://geekplux.com/2017/07/20/how-to-get-hundreds-stars-on-github

每个程序员都幻想过自己的代码运行在千家万户的电脑上,但如何让你的项目获得更多的关注却少有人去思考。我们把注意力放在对代码的钻研、对技术的提升,却少有人关注如何吸引别人参与你的项目。一个人的力量总是有限的,尤其是在开源社区,越多的人参与就意味着你的项目有越多的可能性。

我的业余小项目 markvis(https://markvis.js.org ) 发布一天之后,在 GitHub 收获了 200 stars,爬上了 Trending 榜前十,现在一周过去已经近 1000 stars。虽然这不算什么大的成就,但让我不得不重新思考推广的意义。

Trending TOP 10

对推广的偏见#

一般人对推广都有或多或少的偏见,从我的个人经验来说大概来自两个方面:

一是受「酒香不怕巷子深」的影响,总认为只要是金子就会发光的。其实不然,道理很简单,你觉得你代码水平不错,但跟你同水平的程序员肯定不止你一个,如何让别人更加青睐于你,你需要的是曝光率,你需要把你自己的真实水平展现出来,你需要告诉别人你的实力,而不是等别人去挖掘。这个社会竞争太激烈了,尤其是在我们可爱的程序员界。

二是总把推广和低级的营销混为一谈,甚至把推广当成一个贬义词。我之前对推广的偏见主要来自于此,我总觉得推广和那些无脑发小广告的没什么两样。然而,真正的推广应该是在散播价值,让别人知道这个东西的存在,给别人提供了解的渠道。当然这得站在你项目是有价值的基础上,而不是空中楼阁就到处招摇撞骗。

如何推广#

一个吸引眼球的开源项目,我认为需要具备以下几个要素:

  • 一个还不错的 Logo 或优雅的主页
  • 简短有力的 slogan
  • 能在线试用
  • 完善的文档

前两点一般都会被人忽略,但其实非常重要。第一点很好理解,毕竟是看脸的时代。第二点,为什么很多企业花很大代价去设计朗朗上口的标语?因为希望在最短的时间内给别人留下最深的印象。第三点正所谓百闻不如一见,向别人传递自己的想法总是困难的,不如让他们自己使用一下,用过才能理解你到底做了什么伟大的事情。如果你的项目没办法在线试用,最好有一个 gif 或短视频来演示一遍。如果说前三点是包装,那最后一点则是必须做到的重中之重,接下来我们重点说一说。

README 毋庸置疑是你项目最重要的页面,如何让别人迅速了解你的项目,你需要用最简短的话说清楚三件事:

  • 你的项目是什么
  • 为什么要创造它
  • 如何使用它

尤其是为什么,一定要说清楚。它解决了什么问题,使用它的必要性是什么,它做出了什么贡献等等。

我们可以从使用者的角度去想问题:每当我们考虑是否要用这个库的时候,都是先去看他的 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 上的话再精简一点,口语化一点。然后开始有策略的向各大网站发帖:

  • Hacker News
  • reddit/r/javascript
  • ProductHunt

当时我对 markvis 没抱太大期望,也没有考虑国外的作息时间,一大早起来就只在前两个网站上提交了自己的帖子。Hacker News 的流量太大,帖子直接秒沉了,reddit 上迟迟不见反馈。当时可能美国的程序员兄弟刚下班,都去浪了,所以一直没啥动静,star 好像只有十几个。虽然我有点失望,但是没有放弃,因为周围的小伙伴说我做的东西还不错。于是我在午饭之前又去 ProductHunt 上厚颜无耻地提交了自己的项目。没想到当天就上榜了。于是 star 数开始不停的长,第二天上了 GitHub Trending 之后就涨得更快了,完全超出了预期。

除了上面的这些网站,如果你英语不错的话,可以直接向 DailyJS 提交自己的文章,也可以让 JavaScript Weekly 推荐,总之渠道多多,就看你的项目如何了。下面是我发布一周后的主页 Google Analytics,可以看出上周一共有 4.5k 的人来访,周四即我发布的第二天是人来的最多的一天,而且程序员果然都喜欢凌晨学习,哈哈。

59701a4966871.png59701a497b025.png

写在最后#

有一些事我们不去做是因为我们对它有偏见,比如推广。有一些事我们做不好是因为我们没有认真思考该怎么做,比如推广。禁锢我们的不是技术手段,而是思维。这是我这次发布 markvis 得到的一些人生经验,共勉。欢迎新朋友来和我交流,我的博客是 http://geekplux.com ,会一点前端,懂一点数据可视化。

CC BY-NC 4.0 2022 © GeekPluxRSS

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK