如何规划创建并长期维护一个Github开源项目?

2021年, 国内各路论坛已经铺满屠龙宝刀点击就送的广告, 知乎这种传统的知识社区也完全沦陷, 无论是内容质量还是产品设计都大不如前

目前知名度高, 影响力大且干净的网站只有Github了, Github是全球开发者最聚集的社区, 里面有很多项目, 无论是996.icu, 还是Chrome插件英雄榜, 或者是表情包都能成为受欢迎的项目, 并吸引各种志同道合的人前来研究...

如果想在Github立足, 并玩出花, 最快捷的方式是创建自己的开源项目, 长期维护, 聚集人气, 收获志同道合的伙伴.

本文作者为zhaoolee, 交友主页github.com/zhaoolee 目前做了几个比较受欢迎的项目, 收获3w老哥的star, 并维护至今; 也挖了很多坑, 最终不了了之, zhaoolee想通过本文, 为想要做开源项目的小伙伴提供一些经验~

写一份优秀的README.md很重要

Github每个开源项目都有README.md文档, 这个相当于项目的首页, 一定要写好.

人类喜欢看图, 为项目配一个漂亮的Logo或宣传图, 能体现开发者认真的态度, 也能吸引老哥们多看几眼, 有时候虽然你的项目很平凡, 但Logo很传神, 也能让大家为你鼓掌👏, 顺便点个Star

在READMD.md中, 配gif图是很有性价比的操作, gif图可以默认播放, 吸引浏览者的注意力, 并增加浏览者的驻留时间, 如果你PS/AE技术还不错, 甚至魔改几张表情包, 作为项目宣传图, 为项目增光添彩

最重要的内容放到README.md最前面, 无论通过图片还是文字, 都要让人瞬间了解, 这是个什么类型的项目~

README.md没有限制内容的高度, 如果项目是Awesome类(收集集合类), 最好把主要内容的目录列到README.md中, 让浏览者一触即达.

善用程序, 不要让维护项目成为一件痛苦的事

我做过一个表情包项目 ChineseBQB, README.md写的很骚, 还是中英双语, 如果手工收集分类表情包并同步到主页, 是一件非常痛苦的事.

于是我写一个程序, 自动读取特定目录下的文件夹和文件名, 并自动生成网页,并将网页的索引自动更新到README.md, 还加了表情数量统计每次更新表情包只需往特定文件夹放图即可, 放完图后, 运行脚本即可完成更新.

当看到自己编写的脚本, 生成索引, 并全自动完成索引替换, 表情包数量统计任务时, 成就感满满, 维护项目也成为了一件很爽的事...

建一个爱好者群, 可以提升维护项目的热情

人的本质是非常懒的, 维护个人开源项目, 需要耗费时间精力, 如果到了项目到了不温不火的阶段, 就会没有动力更新.

此刻, 不妨建一个QQ群, 有人催更, 你自然也就有了更新的动力, ChineseBQB建了奥特曼保表情包QQ群 700477996 , 当群友们使用你开发的工具时, 你自然有了更新的热情和动力!

比如奥特曼表情包https://www.v2fy.com/asset/0i/ChineseBQB/?key_val=%E5%A5%A5%E7%89%B9%E6%9B%BC

冰冰表情包 https://www.v2fy.com/asset/0i/ChineseBQB/?key_val=%E7%8E%8B%E5%86%B0%E5%86%B0

Github Pages和Github Actions都是好东西, 不嫖就亏了

Github Pages本质是一个免费无限流量的web托管服务, 用户可以往Github Pages托管静态网页, 流量无限, 空间无限, 且支持自定义域名.

Github Actions本质是一个构建服务, 说穿了就是能在云端免费为你运行任意程序, 每个月2000分钟, Github Actions使用非常灵活, 可以用于自动构建项目, 比如给表情包生成网页, 定时自动爬取优质博主的RSS源, 生成个人简报, 定时自动爬取天气, 规划个人行程, Github Actions可以选择运行在Windows, Linux, macOS系统, 如果玩的再骚一点, 可以用来定时签到领京豆, 领Epic游戏, 甚至挖矿(不推荐).

个人适合做什么类型的开源项目?

  • Awesome(收集类) 这种最受欢迎, 但竞争也最为激烈(太卷了), 比如Windows软件, 在线工具, Chrome插件, 表情包均可收集~

  • 日常工具 工具要足够实用, 比如百度文库爬虫, 下载B站视频, 批量下载特订论坛的小姐姐图片, 批量下载Bing壁纸~

  • 编程工具库 比如jQuery, Nodemail, PM2, http-server ...

  • 编程框架 比如 Egg, Koa, Django...

如何推广自己的开源项目?

Github的用户主要是程序员, 推广Github开源项目可以到程序员社区.

v2ex.com

juejin.cn

csdn.net

或者阮一峰大佬的科技爱好者周刊投稿 github.com/ruanyf/weekly/issues

小结

Github的项目内容在搜索引擎中有良好的SEO, 如果你是一名创作者, 白嫖Github Pages服务构建自己的静态网站, 会给你带来持续的自然搜索流量, 如果你愿意挂Google Adsense广告服务, 还能空手套白狼, 赚一笔广告费(美刀), 只要你的内容好, 搜索引擎算法和Github老哥们也会给你相应的鼓励和回报~

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2021-04-27-17-11-56-program/

使用Github Actions 动态更新Github主页

我在Github的用户名为zhaoolee,如果我在Github中建立一个名为zhaoolee的仓库,那zhaoolee仓库中READNE.md的内容,便会展现到github主页顶部。更有趣的是,如果给仓库编写一个脚本,就可以利用Github Actions自动更新主页的内容。

我有两个网站V2方圆方圆小站,我通过Github Actions设置了一个每隔15分钟自动运行的任务,任务内的程序会自动爬取V2方圆方圆小站的前三篇内容,并将链接更新到我的Github主页。当用免费的Github Actions为自己的博客引流时,我体会到了白嫖的快乐,获得了Github长期的优质流量。

image

Python脚本如下

import feedparser
import time
import os
import re
import pytz
from datetime import datetime

def get_link_info(feed_url, num):
    result = ""
    feed = feedparser.parse(feed_url)
    feed_entries = feed["entries"]
    feed_entries_length = len(feed_entries)
    all_number = 0;
    if(num > feed_entries_length):
        all_number = feed_entries_length
    else:
        all_number = num

    for entrie in feed_entries[0: all_number]:
        title = entrie["title"]
        link = entrie["link"]
        result = result + "\n" + "[" + title + "](" + link + ")" + "\n"
    return result

def main():
    v2fy_info =  get_link_info("https://v2fy.com/feed/", 3)
    fangyuanxiaozhan_info =  get_link_info("https://fangyuanxiaozhan.com/feed/", 3)
    insert_info = v2fy_info + fangyuanxiaozhan_info
    # 替换 ---start--- 到 ---end--- 之间的内容
    # pytz.timezone('Asia/Shanghai')).strftime('%Y年%m月%d日%H时M分')
    fmt = '%Y-%m-%d %H:%M:%S %Z%z'
    insert_info = "---start---\n\n## 最近更新文章(" + "更新时间:"+  datetime.fromtimestamp(int(time.time()),pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S') + " | 通过Github Actions自动更新)" +"\n" + insert_info + "\n---end---"
    # 获取README.md内容
    with open (os.path.join(os.getcwd(), "README.md"), 'r', encoding='utf-8') as f:
        readme_md_content = f.read()
    new_readme_md_content = re.sub(r'---start---(.|\n)*---end---', insert_info, readme_md_content)
    with open (os.path.join(os.getcwd(), "README.md"), 'w', encoding='utf-8') as f:
        f.write(new_readme_md_content)
main()

以上代码以及Github Action配置文件永久开源地址

https://github.com/zhaoolee/zhaoolee

Github Actions脚本位置:

https://github.com/zhaoolee/zhaoolee/edit/main/.github/workflows/main.yml

如果大家都善用Github自定义主页,互联网会更开放

长期来看,Github在搜索引擎中的权重很高,以上方法直接为搜索引擎提供最新的内容资源,如果推广开来,会让互联网更开放,而不是内容平台各自跑马圈地,割裂互联网。虽然真正开放的互联网很难达成,但我还是想,留给后来者一个尽可能开放的,资源知识一触及达的互联网。

Github Actions玩法是丰富多彩的,道路也是曲折渐进的,关于定时任务,阮一峰大佬,搞了一个定时往自己邮箱发天气预报的功能; 以前有一个表特日报的服务,订阅后,每日都能收到ptt网站最新的好看妹子图片, 我们也可以把发天气预报搞成公共服务,需要的人只需在仓库issues下留下自己的邮箱,程序会定时获取issues内的邮箱,然后群发,这样大家都能享受天气预报的邮件服务。

Gihub Actions的不足

Github Actions 也还有一些小bug,如果你设置每隔15分钟运行一次,可能会偶尔漏掉几次任务,目前比较好的解决方案是,把频次改成每2小时发一次,基本可以避免漏发(Github Actions应该是资源不足造成的,微软有的是银子,多氪金就能修复)

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2020-01-23-15-github-actions-blog/