我和HelloGitHub
我?
我是⼀个本科学历、⽆⼤⼚经历,普通的 Python 程序员。
虽然是计算机专业,但是⼤学玩了四年(Dota)后,发现⾃⼰⽆⼀技能傍⾝,要饿死啦!偶然间接触了 Python 这门编程语⾔,发现编程还能这么简单!⾃学了⼏个⽉,然后就
光荣的成为了⼀名 Pythoner,终于能开始⾃⼰养活⾃⼰,那么下⼀步就希望⽤双⼿实现⾃⼰天马星空的想法。
当时我的编程能⼒,不制造 Bug 坑害别⼈就是万幸了。谈何实现⾃⼰的宏图伟业,索性就开始蒙头‘打钱’、‘升级’。打’⼩boss‘卡住的时候,在⽹上求助,然后就发现很多⼤⽜都
在⼀个叫做 GitHub 的地⽅‘布道传技’,本着看看不要钱的⼼态,我注册了账号。
第⼀次见它的时候,丝毫没有体会到它的魅⼒:‘语⾔不通’、‘⾼冷’、拒⼈千⾥之外。打了⼏次照⾯之后,我开始慢慢地知道这个⽹站是⼲什么的,是⼀个开源项⽬分享(托管)
的平台,就是别⼈上传⾃⼰的代码给别⼈⽤,使⽤者也可以提交代码帮这些项⽬修复 bug。最开始的时候我只是在上⾯游荡、瞎看,虽然很多东西我看不懂,但是我知道⼈以类
聚、物以分的道理。⼤⽜混的平台,沾沾光也是极好的。
就像看游戏视频,看久了就会⼿痒,就想打两把,然后我就照猫画虎地学会了 Git。编程的东西就这点好,原理啥都不明⽩也能⾏,跟着教程⼀个字母⼀个字母的输⼊完成,只要
没有抄错,就能运⾏成功,达到你预想的结果。
当我能打开这个‘游戏’,不玩出个样⼦,都对不起我之前学 Git 所花费的时间。然后我就开始往 GitHub 上传⾃⼰写的东西,都是简单琐碎的东西,⽐如:当时我在学 Python 我就
把⾃⼰的 demo 代码上传上去,就算没⼈看最起码还能让我熟悉 Git 的命令。然后每天都会花⼀些时间去浏览别⼈的项⽬,发现好的项⽬我就会收集起来。当时每天都处于两眼
冒光的状态:这个教程写的真好、这个⼯具真炫、这个功能他怎么实现的、这个...这个...这个⼤⽜的头像真丑。
你好,GitHub
HelloGitHub
此时的 GitHub 对我来说就是⼀个看着很好吃,但⼜是不知道从何处下⼝的蛋糕 ,徒咽⼝⽔。
我在上⾯闲逛的过程中不知不觉,收集了 10 ⼏个⾃⼰觉得很好玩的项⽬。我就想会不会有⼈还不知道这些项⽬、会不会有⼈还没发现这个让⼈每天眼前⼀亮的平台?再加上我
记性不好,我得个地⽅记下来,如果有幸我收集的项⽬帮助了和我⼀样的⼩⽩,那真是 give me five  。
本着上⾯的想法,2016 年 5 ⽉,我在 GitHub 上⾯创建了开源项⽬。它就是⼀个分享 GitHub 上⼊门、有趣的开源项⽬,没有⼀⾏代码。名字的含义就是:学习编程语⾔的输出
的第⼀句话⼀般都是 ‘Hello World’,Hello GitHub 就是希望新⼿可以从这⾥开始你的开源之旅,传达开源对新⼿友好的信息。
然后我提交了第⼀个 commit,发布了第⼀期⽉刊。
开始的时候 GitHub 上根本就没⼈给我留⾔、star、更不知道有多少看了我的项⽬。⼀个⽉后我意外的收获了差不多 20 个 star,我特别开⼼:“嗯,太好了。我写的项⽬有⼈看和
关注,搞起来。“
然后我每天就固定花 1 个⼩时逛 GitHub,晚上总结⼀些学习⼼得,然后发到我的博客(博客园)上。我特别感谢在我第⼀期⽉刊下⾯给我留⾔的⼩伙伴,他们对新⼿真的⼗分友
好,都是⿎励和点赞的。当然也有冲着我的美⼥头像来的 ,下⾯这个头像是朴信惠,不是我!
就是这些⿎励评论和 star,后来决定每个⽉ 28 号发⼀期,因为不管是平年还是闰年,每个⽉都有 28 号,不给⾃⼰不发⽉刊借⼝。下⾯这个截图是博客园上⾯的⼀位读者
——,他从第⼀期开始⼏乎每期都会来评论和⽀持 HelloGitHub ⽉刊,让我⼀度以为他是机器⼈
第⼀⾏代码
写完第 01 期,我觉得我应该写⼀个模版,开头啊、结尾啊。好⽍我也是个程序员,重复性的⼯作就应该会⽤编程来解决。然后我就写了个⽣成⽉刊内容的脚本,其实就是开篇
和结尾是固定的,每期的内容我按照固定的格式编写好,运⾏脚本⽣成最终的⽉刊。下⾯就是我的模版:
兴趣是最好的⽼师,⽽《HelloGitHub》就是帮你到兴趣!
xxxx
简介
最开始只是我⾃⼰浏览github过程中收集的⼀些有中⽂介绍,通俗易懂,简单容易上⼿的项⽬。后来⼀想,如果每个github都有个简单的效果图,或者⼀些通俗易懂(中⽂的介绍)。这样应该更容易让我这样的新⼿接受。
所以,我就想做⼀个⽉刊的形式,⾯向新⼿的github⽉刊,⽉刊的内容主要包括:中⽂项⽬、少许英⽂项⽬、翻译的书籍以及教程。项⽬越容易上⼿越好,看起来越cool越好!主要是能动⼿⽤起来,我觉得这样会有助于编程能⼒的提⾼。《HelloGithu 内容:
bala 吧啦啦啦啦啦啦
声明
xxx
然后第 02 期开始就是⽤脚本⽣成的,当时我就觉得⾃⼰把⾃⼰给坑了。那个脚本太难⽤了,修改、调试脚本的时间⽐写⽉刊的内容还长 !但是⾃⼰的写的程序,含着眼泪也要
⽤。
⾃动收集项⽬脚本
就这样坚持每个⽉更新,第 03 期更新了下⽉刊的模版,差不多也就是这个时候 star 数破百啦!
慢慢的我发现⾃⼰看能懂的项⽬越来越多了,所以推荐的项⽬数量能维持在 10 个左右。后来有⼈也在⽂章下⾯留⾔给我推荐项⽬,但是处理起来不是很⽅便。
我就想通过 issues 来接受其他⼩伙伴发现的有趣的项⽬。我就增加了可以通过 issues 给我推荐项⽬,其实这个功能应该是提 Bug ⽤的  。这是第⼀个通过 issues 给我推荐项⽬
的⼈——:
但是推荐项⽬的还是很少,因为每期要推荐 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 时上线了—— 。我还和⾃⼰的⽹站拍了个合影纪念(我露脸了,就不放合影了),下⾯是我的⽹站第⼀版样⼦:
上线后访问寥寥⽆⼏,可能部署在我的国外服务器上,访问速度太慢了。我就迁移到了国内,⼜花了⼀笔银⼦ 。然后我就继续出⽉刊,并在⽉刊中推⼴我的⽹站。
⼩伙伴
再后来我就把⽹站的源码开源到了 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 开源组织合作开发了推荐项⽬的,相互取长补短,共同进步。每期同步推荐到阮⼀峰⽼师的,但是收录不收录要看⽼师的⼼情 。
基于上述的努⼒和合作组织的推荐 HelloGitHub 项⽬也迎来了⾼光时刻和断崖式成长,这⼀年增了 8k star,成为了 10000 星项⽬:
我在创建这个项⽬的时候根本没想过它会有今天的成就,这只是个推荐 GitHub 上⼊门、有趣的开源项⽬的开源项⽬,我最初为了⽅便⾃⼰收集有趣、看的懂的项⽬的想法,做到现在的样⼦。于此同时 HelloGitHub 也时刻在督促我不断的成长、⽤程序解决效率问题。
在这个过程中,我更加深刻的体会到编程是⽤来解决实际问题的解决⽅式,它会让⼯作流程更加顺畅和便捷。
对,是我创建了这个万星的项⽬ HelloGitHub,但我就是个只会 Python、本科学历、⽆⼤⼚经验的普通
程序员。做开源项⽬不难,我这种普通的程序员都可以,你当然也能⾏!我们 HelloGitHub 还在路上,或者开启⾃⼰的项⽬。
种⼀棵树最好的时间是⼗年前,其次就是现在。
未来
我们希望 HelloGitHub 项⽬未来能够成为开源项⽬发起者和使⽤者的沟通的桥梁,后续会增加⽉刊读者的沟通和互动。同时让更多⼈知道 HelloGitHub 项⽬,让开源的信息更⽅便的传递到程序员的⼿中。
让⾛在开源路上的开发者不再孤单,让想进⼊开源世界的⼈不再畏惧。
这是我们 HelloGitHub-Team 的愿景和努⼒的⽅向,只要前进就会攀登到更⾼的⾼峰,看到更美的景⾊。中途会遇到种种困难和⾛错的弯路,但畏惧不能让⼈成长。加⼊开源的世界,你⼀定会变强,⽽且每天都会有发现新⼤陆的感觉。
路漫漫其修远兮,吾等将上下⽽求索。
最后
这就是我和 HelloGitHub 的故事,未完待续。。。(下次不知道⼏年后才会更新,所以需要扫描下⾯的⼆维码关注 HelloGitHub 的最新动态和⽂章,扫描它和我们并肩前⾏ )
每⼀个关注、留⾔、转载、点赞都是对我们最⼤的⿎励和肯定!
鸣谢
感谢 GitHub 上⾯的贡献者和项⽬发起者们,你们让世界更美好。
感谢给 HG 推荐项⽬的⼩伙伴,,你们让优秀的项⽬被更多⼈所发现。
感谢每期⽉刊下⾯的评论、点赞、star、转发的⼩伙伴,你们是 HelloGitHub 维护下去的动⼒。
最后,下⾯的平台记录了 HelloGitHub 成长的每⼀个阶段。特别感谢 GitHub、博客园、掘⾦、即刻、V2EX 这些平台,提供了优秀的程序员社区和交流平台,让 HG 能够在平台的基础上得到了更多的曝光,帮助了更多的⼈。