我和 HelloGitHub

4,364 阅读16分钟

我?

我是一个本科学历、无大厂经历,普通的 Python 程序员。

虽然是计算机专业,但是大学玩了四年(Dota)后,发现自己无一技能傍身,要饿死啦!偶然间接触了 Python 这门编程语言,发现编程还能这么简单!自学了几个月,然后就光荣的成为了一名 Pythoner,终于能开始自己养活自己,那么下一步就希望用双手实现自己天马星空的想法

当时我的编程能力,不制造 Bug 坑害别人就是万幸了。谈何实现自己的宏图伟业,索性就开始蒙头‘打钱’、‘升级’。打’小boss‘卡住的时候,在网上求助,然后就发现很多大牛都在一个叫做 GitHub 的地方‘布道传技’,本着看看不要钱的心态,我注册了账号。

第一次见它的时候,丝毫没有体会到它的魅力:‘语言不通’、‘高冷’、拒人千里之外。打了几次照面之后,我开始慢慢地知道这个网站是干什么的,是一个开源项目分享(托管)的平台,就是别人上传自己的代码给别人用,使用者也可以提交代码帮这些项目修复 bug。最开始的时候我只是在上面游荡、瞎看,虽然很多东西我看不懂,但是我知道人以类聚、物以群分的道理。大牛混的平台,沾沾光也是极好的。

就像看游戏视频,看久了就会手痒,就想打两把,然后我就照猫画虎地学会了 Git。编程的东西就这点好,原理啥都不明白也能行,跟着教程一个字母一个字母的输入完成,只要没有抄错,就能运行成功,达到你预想的结果。

当我能打开这个‘游戏’,不玩出个样子,都对不起我之前学 Git 所花费的时间。然后我就开始往 GitHub 上传自己写的东西,都是简单琐碎的东西,比如:当时我在学 Python 我就把自己的 demo 代码上传上去,就算没人看最起码还能让我熟悉 Git 的命令。然后每天都会花一些时间去浏览别人的项目,发现好的项目我就会收集起来。当时每天都处于两眼冒光的状态:这个教程写的真好、这个工具真炫、这个功能他怎么实现的、这个...这个...这个大牛的头像真丑。 

👶🏻 你好,GitHub

HelloGitHub

此时的 GitHub 对我来说就是一个看着很好吃,但又是不知道从何处下口的蛋糕🍰,徒咽口水。

我在上面闲逛的过程中不知不觉,收集了 10 几个自己觉得很好玩的项目。我就想会不会有人还不知道这些项目、会不会有人还没发现这个让人每天眼前一亮的平台?再加上我记性不好,我得找个地方记下来,如果有幸我收集的项目帮助了和我一样的小白,那真是 give me five ✋。

本着上面的想法,2016 年 5 月,我在 GitHub 上面创建了 HelloGitHub 开源项目。它就是一个分享 GitHub 上入门、有趣的开源项目,没有一行代码。名字的含义就是:学习编程语言的输出的第一句话一般都是 ‘Hello World’,Hello GitHub 就是希望新手可以从这里开始你的开源之旅,传达开源对新手友好的信息。

然后我提交了第一个 commit,发布了第一期月刊。

开始的时候 GitHub 上根本就没人给我留言、star、更不知道有多少看了我的项目。一个月后我意外的收获了差不多 20 个 star,我特别开心:“嗯,太好了。我写的项目有人看和关注,搞起来。“

然后我每天就固定花 1 个小时逛 GitHub,晚上总结一些学习心得,然后发到我的博客(博客园)上。我特别感谢在我第一期月刊下面给我留言的小伙伴,他们对新手真的十分友好,都是鼓励和点赞的。当然也有冲着我的美女头像来的🙈,下面这个头像是朴信惠,不是我!

就是这些鼓励评论和 star,后来决定每个月 28 号发一期,因为不管是平年还是闰年,每个月都有 28 号,不给自己不发月刊找借口。下面这个截图是博客园上面的一位读者——马三小伙儿,他从第一期开始几乎每期都会来评论和支持 HelloGitHub 月刊,让我一度以为他是机器人🤪

第一行代码

写完第 01 期,我觉得我应该写一个模版,开头啊、结尾啊。好歹我也是个程序员,重复性的工作就应该会用编程来解决。然后我就写了个生成月刊内容的脚本,其实就是开篇和结尾是固定的,每期的内容我按照固定的格式编写好,运行脚本生成最终的月刊。下面就是我的模版:

兴趣是最好的老师,而《HelloGitHub》 就是帮你找到兴趣!
xxxx

简介
最开始只是我自己浏览github过程中收集的一些有中文介绍,通俗易懂,简单容易上手的项目。后来一想,如果每个github都有个简单的效果图,或者一些通俗易懂(中文的介绍)。这样应该更容易让我这样的新手接受。

所以,我就想做一个月刊的形式,面向新手的github月刊,月刊的内容主要包括:中文项目、少许英文项目、翻译的书籍以及教程。项目越容易上手越好,看起来越cool越好!主要是能动手用起来,我觉得这样会有助于编程能力的提高。《HelloGithub月刊》这个项目就诞生了!😄

内容:
bala 吧啦啦啦啦啦啦

声明
xxx

然后第 02 期开始就是用脚本生成的,当时我就觉得自己把自己给坑了。那个脚本太难用了,修改、调试脚本的时间比写月刊的内容还长😢!但是自己的写的程序,含着眼泪也要用。

自动收集项目脚本

就这样坚持每个月更新,第 03 期更新了下月刊的模版,差不多也就是这个时候 star 数破百啦!🤩

慢慢的我发现自己看能懂的项目越来越多了,所以推荐的项目数量能维持在 10 个左右。后来有人也在文章下面留言给我推荐项目,但是处理起来不是很方便。

我就想通过 issues 来接受其他小伙伴发现的有趣的项目。我就增加了可以通过 issues 给我推荐项目,其实这个功能应该是提 Bug 用的 😂。这是第一个通过 issues 给我推荐项目的人——zhbzz2007

但是推荐项目的还是很少,因为每期要推荐 10 个以上的项目。我每天都要花一部分时间去收集、整理项目,我想能不能每天汇总项目然后给我发邮件。这样就不需要轮询的去看 GitHub 首页了(一方面也是工作上任务多了)。然后我就写了一个每天汇总,我关注的大牛 star 的项目,然后发一封邮件给我。这样我就又回复自由身了,可以摸鱼了(低调、低调)

第 05 期的时候,朋友帮我制作了第一个版的月刊封面:

第一年,我自己说的算的网站

不知不觉,维护 HelloGitHub 这个项目已经到了第一个年头,月刊也来到了第 12 期。项目的 star 数竟然破千了,我当时以为这个项目需要 2 年才能有 1k 个star,激动之余我开始头疼以后项目该如何维护和编辑项目

因为当时数据的还是通过文档维护,我有时都不知道自己新收集的项目,是不是之前推荐过。就在这时候,我程序猿的 Web 开发技能点亮了!当时我都是在别人搭建好的项目下,进行模块开发。我工作中使用的 tornado,但是我没有用它写,我选用了我之前没用的 Flask 框架。因为它够小,那就说明我需要从头开发一个 Web 项目,ORM 的选择、中间件的选择、项目的结构等。

这个项目一方面为了我编辑项目方便,另一方面是为了让我练习从头开发一个 Web 网站。网站分前台展示月刊,后台编辑管理项目。我不知道打鸡血是什么状态和感觉,我就记得当时白天上班,晚上下班写自己的网站,有的时候写着写着听见早晨的鸟叫了、有的时候一抬头发现天亮了、还有的时候想功能和实现方法想的太兴奋,导致睡不着觉,睡不着就爬起来写代码。

我发现自己真的热爱写代码,写自己的代码。

我用了两个星期左右,开发完了网站的功能。后端是 Flask + peewee,前端使用 jQuery + Flask 的 template(Jinja),CSS 写的我快疯了我是真的不会写前端。

期间买了域名、服务器,当时是我去办理备案的手续,备份是要拍照的。拍照的时候我尽力憋着不让自己笑出来,我以为拍完网站就能上线了。但是后来发现手续办理速度还真没有我发开的速度快。然后大约一个月的时间等待域名备案完成、部署服务器,我的网站于 2017 年 6 月 15 日 18:44 时上线了—— hellogithub.com。我还和自己的网站拍了个合影纪念(我露脸了,就不放合影了),下面是我的网站第一版样子:

上线后访问寥寥无几,可能部署在我的国外服务器上,访问速度太慢了。我就迁移到了国内,又花了一笔银子💰。然后我就继续出月刊,并在月刊中推广我的网站。

小伙伴

再后来我就把网站的源码开源到了 GitHub 上面,虽然代码写的很不好,但是也有一些人的鼓励性质的 star,让我备受鼓舞。访问量稳健的上上升,从最开始只有我自己发刊用和 Debug,基本没什么访问量。到后来一个月能有近 1 万的访问量,让然有一大部分还是机器人😄,但我也是很开心的,最起码有人访问了。

因为我实在是不会写前端,正好有人联系我要一起做 HelloGitHub 这个网站。我们就一起开发了网站上的收藏功能,便于用户的收集和查看。后来我忘了什么原因,他就退出不一起做了。

之后的一段时间项目每次发布,没什么特别多的关注度,处于平稳上升的阶段。这个时候我也一度想放弃,觉得有些无趣。其实对于开源项目的维护者来说,使用者、关注的反馈真的是特别重要的,这些反馈能证明他的努力没有白费。

当时我就给自己猛灌鸡汤:现在已经开发了自己的网站,我不想自己写的东西没人用。而且已经一部分人关注了我的项目比如:马三同学,我不能就这样‘太监了’,我得坚持做下去,能做一期是一期吧。而且我研究下当下很流行的开源项目,大多数都是一点一滴做起来的,有做 5 年、10 年的才可能被大家认可、熟知和使用。他们最初都是默默无闻的在做,就像维护自己的小菜园。终有开花结果的时候,就算是结出的果实很小,没有‘买’来的品相好、个头大,但是这种味道是‘买’不来的。

可能做开源最难的是坚持吧!

寻求改变,才能激发斗志。我之前一直是被动招募专栏负责人,后来一个偶然的机会我看到这个货 的博客。我觉得他一定是个前端大牛,我要把他拉来拯救我,让我不再写前端。后来他就成为了 HG 的第一位专栏负责人,负责 JS 专栏 —— 小猴,我们一起出刊、想各种方法提高我们的项目知名度、头脑风暴。

每当我和朋友聊起 HelloGitHub 这个项目,我都会告诉别人小猴是一个对我、对这个项目很重要的人,我们荣辱与共。当然还有雷神这个老发“给大佬端茶”表情的大佬负责 Go 专栏,他就跟他的微信头像一样‘猥琐’。

当然还有我们的的设计师远哥,他设计了 HelloGitHub 的 logo,专业的就是不一样:

我们一起让 HelloGitHub 重新恢复了活力和继续前进的力量。

人一生都在路上,有的人走着走着就走散了。有的人走着走着就并肩作战了。

第二年,信心满满

真是应证了那句:“人多力量大” 的口号,基于我们一直坚持不断的出刊、并在保证质量的情况下更多的推荐项目、各位专栏负责人的加入使得项目内容更加丰富。

从而 HelloGitHub 迎来了第一个迅猛的增长和大量的关注。截止 2018 年 3 月 HelloGitHub 两周年的时候,项目的 star 数增长了 3k。连续 3 天 GitHub 趋势首页、Python 分类名列前茅;一天飙升 300 stars,我的整个首页都被 star 信息填满,往下滑了好几页;HelloGitHub 项目共有 4k 的 stars、《HelloGitHub》月刊系列博文共 4万 阅读量;

在 17 年底的时候,这段时间我工作上遇到了很多的挑战。我们需要重构一个很老的项目,老的项目代码真的很烂、没有文档、近 6 万行。我负责的那部分,还有 Java 的项目重构为 Python 项目,当时我连 Java 的基本语法都记不全,但是最终我们(最后就两个人了)把这个项目啃完了。

当时我才真正的意识到,在做 HelloGitHub 项目时,我的那些能力得到了提升:在筛选项目的时候,我阅读代码的能力得到了很大程度地提高、对项目的结构和理解能力提升特别多、编码和动手能力、学习新技术的能力、让我对源码没有了恐惧,我还能通过阅读源码找出使用的第三方库导致的问题和解决办法。这些都是我在收集项目和开发网站中一点一滴积累起来的,然后在工作中受益匪浅,能够委以重任。

不积跬步,无以至千里。

第三年,新的高度,重新起航

这一年加入了很多新的小伙伴:喜斌、小飞、小季、小猪蹄、阿龙,负责相应专栏的项目筛选和 issues 管理。制定了推荐项目的审核标准、专栏合刊的整个流程。开了知乎专栏,历史内容迁移到了专栏,新内容也会同步上去。

随着用户的增多,我也希望能够给用户更好的阅读体验。然后网站的功能增加了:搜索、公告栏、RSS、语言排行榜、数据库排行榜、服务器排行榜、API 接口服务,现在每个月能有近 10 万的 PV。

与 D2 开源组织合作开发了推荐项目的 chrome 插件,相互取长补短,共同进步。每期同步推荐到阮一峰老师的周刊,但是收录不收录要看老师的心情😅。

基于上述的努力和合作组织的推荐 HelloGitHub 项目也迎来了高光时刻和断崖式成长,这一年增了 8k star,成为了 10000 星项目:

我在创建这个项目的时候根本没想过它会有今天的成就,这只是个推荐 GitHub 上入门、有趣的开源项目的开源项目,我最初为了方便自己收集有趣、看的懂的项目的想法,做到现在的样子。于此同时 HelloGitHub 也时刻在督促我不断的成长、用程序解决效率问题。

在这个过程中,我更加深刻的体会到编程是用来解决实际问题的解决方式,它会让工作流程更加顺畅和便捷。

对,是我创建了这个万星的项目 HelloGitHub,但我就是个只会 Python、本科学历、无大厂经验的普通程序员。做开源项目不难,我这种普通的程序员都可以,你当然也能行!我们 HelloGitHub 还在路上,加入我们或者开启自己的项目。

种一棵树最好的时间是十年前,其次就是现在。

未来

我们希望 HelloGitHub 项目未来能够成为开源项目发起者和使用者的沟通的桥梁,后续会增加月刊读者的沟通和互动。同时让更多人知道 HelloGitHub 项目,让开源的信息更方便的传递到程序员的手中。

让走在开源路上的开发者不再孤单,让想进入开源世界的人不再畏惧。

这是我们 HelloGitHub-Team 的愿景和努力的方向,只要前进就会攀登到更高的高峰,看到更美的景色。中途会遇到种种困难和走错的弯路,但畏惧不能让人成长。加入开源的世界,你一定会变强,而且每天都会有发现新大陆的感觉。

路漫漫其修远兮,吾等将上下而求索。

最后

这就是我和 HelloGitHub 的故事,未完待续。。。(下次不知道几年后才会更新,所以需要扫描下面的二维码关注 HelloGitHub 的最新动态和文章,扫描它和我们并肩前行😁)

每一个关注、留言、转载、点赞都是对我们最大的鼓励和肯定!

鸣谢

感谢 GitHub 上面的贡献者和项目发起者们,你们让世界更美好。

感谢给 HG 推荐项目的小伙伴,贡献者列表,你们让优秀的项目被更多人所发现。

感谢每期月刊下面的评论、点赞、star、转发的小伙伴,你们是 HelloGitHub 维护下去的动力。

最后,下面的平台记录了 HelloGitHub 成长的每一个阶段。特别感谢 GitHub、博客园、掘金、即刻、V2EX 这些平台,提供了优秀的程序员社区和交流平台,让 HG 能够在平台的基础上得到了更多的曝光,帮助了更多的人。