DevStream 社区贡献者英雄榜上线啦!

DevStream 开源社区——相识、相知、相爱 今天,我是来讲故事的,讲我和开源社区、和 DevStream 的故事。 阅读详情

何谓"英雄榜"?

废话不多说,不扯那些所谓的"提高贡献者荣誉感"、“让贡献被所有人看到”,直接上图!
DevStream英雄榜一览

这就是"排场",这就是"面子",这就是"英雄榜"!

  • 感谢我们的设计,设计出如此有质感的页面,漂亮!
  • 感谢我们的前端,完美实现了页面设计,而且支持动态添加徽章类型,优雅!

本文导读

概要

主要分为两大部分,第一部分是 DevStream 英雄榜的简单介绍,第二部分是对 DevStream 的贡献者、证书管理体系及自动化的介绍。

适合的阅读群体

  • 开源社区运营者:文中详细地介绍了 DevStream 对贡献者信息管理、证书发放等内容的探索心路,以及是如何实现近乎全自动化的。希望能给开源社区的运营工作者们带来些启发,尽量减少无意义的重复性工作。
  • 编程爱好者们:自动化流程的实现思路(飞书多维表格、GitHub Actions、脚本等),以及实现技术细节的思考,或许你会感兴趣。附有 GitHub 仓库链接。
  • DevStream 的社区伙伴们:这里是我们的主场——英雄榜!

英雄榜介绍

谁能上榜?

所有获得过证书的 DevStream 的贡献者们。

DevStream 目前共有开源贡献者、布道师、演说家、TopN几大类证书(徽章),每种证书的每个细分类型都使用一个单独的页面来展示贡献者们。

英雄榜的组成

英雄榜主要由证书的图标、介绍、贡献者阵列组成。

实时展示每个"英雄"的 GitHub 头像,点击可以跳转到 Credly 证书页面以校验。

DevStream 英雄榜介绍

DevStream 的贡献者、证书管理体系介绍

视频版

建议先看视频一睹为快,再看文章了解整个自动化体系的发展历程、设计思路、技术细节。

点击图片观看演示与讲解视频:

演示视频

缘起

DevStream 的贡献者证书管理体系来源于一个很不起眼的需求。

五月份左右的时候,DevStream 处于新贡献者的爆发期,几乎天天有新贡献者加入。我们准备了很多 “good first issue”, 往往一出现就被一抢而空。

随着贡献者越来越多,我们需要判断某 GitHub 用户是否已经成为了贡献者,以防止 “good first issue” 的重复申领。

这时候只需要一个简单的表格就能实现。

新证书体系

随着 DevStream 推出新的证书体系,我们有了十多种细分证书,而且一位贡献者可以被授予多个证书。

每个证书都有其编号、颁发日期、礼物发放细节,传统的单表格模式已无法满足新的需求。

贡献者与证书管理表格设计

我们基于飞书多维表格来完成了复杂的需求实现,将个人信息与证书颁布信息拆分成两个表格,二者采用多对多的关联形式。

个人信息表格

证书颁布表格

使用方式:

  1. 填写新贡献者基本信息:在个人信息表登记名字、微信、GitHub等信息方便联系;
  2. 颁发证书:在证书表里把这个人关联进来,并补充颁发日期等信息即可。

以下为操作演示,假设我们要给"张三"颁布"Talented-Speaker Professional"证书,可在10秒内完成:

证书颁布动图演示

快捷视图

在观看演示的时候,你可能会发现,屏幕左侧有非常多的"表"。

其实那些都只是"视图",即设定不同的统计策略、筛选规则、排序方式,自动渲染,以不同的数据维度展示出来。

下面列举一些常用的视图:

  1. 每月新增贡献者。自动统计每月新增的贡献者。获得过一次证书即视为贡献者,若多次获得证书,自动识别第一次获得证书时间。

视图-每月新增贡献者

  1. 每月新增证书。证书维度的每月新增统计。

视图-每月新增证书

  1. 统计面板。以饼图、条形图等方式展现统计数据。

统计面板

  1. 是否是贡献者。自动检索登记的所有人员信息,获得过一次证书即视为贡献者。用来防止 “good first issue” 的重复申领。

视图-是否是Contributor

  1. 证书分组。按类型分组展示所有证书。

视图-证书分组

  1. 单证书视图。只展示某特定类型的证书,如这里只展示 “Contributor - Professional” 类型的证书的颁发情况。

视图-单证书

  1. 礼物未寄送。筛选出颁布了证书但未寄送礼物,每个人的每种证书,礼物发放记录是相互独立的。

视图-礼物未寄送

自动化信息收集

传统运营模式下,贡献者信息表格只能由内部人员编辑,需要使用社交媒体收集了贡献者的信息后,再将信息复制到表格中。沟通过程是"同步"的,成本很高。

DevStream 利用了多维表格的"表单视图",根据表格的字段自动生成表单。将表单发送给"准贡献者",填写完毕后信息自动保存到表格中。

表单

同时,我们还通过飞书的"自动化"功能,配置了消息提醒。每当有贡献者提交了表单,飞书会自动提醒运营人员,不需要再反复询问或确认是否完成了表单的填写,采用异步沟通的形式提高了效率。

消息提醒

接下来就是颁发 Credly 证书,这部分参照 Credly 官网教程即可。

以上的多维表格,已经整理成了模板,可以一键使用:开源社区贡献者与证书管理-模板。

信息同步与自动化

信息同步

原先我们只有内部的贡献者信息和证书信息管理表格,后面又有了 Credly 证书,现在又有了那么酷炫的英雄榜,以及需要能从英雄榜跳转到特定的 Credly 证书验证页。

加上之前的证书发布状态管理、礼物寄送状态管理,需要一个自动化且可信的数据处理、同步机制。

DevStream 借用了 Single Source of Truth 的理念,将证书表格作为唯一的、标准的信息来源。各种信息的管理和记录都在表格上进行,Credly 颁发完成后证书链接也先填回表格,再导出到官网英雄榜。

自动化

多维表格是"表格“形式,可以导出成 csv 格式; 而DevStream官网仓库渲染英雄榜贡献者使用的格式是 json。

还有很多细节,如:

  1. 表格收集的是中文姓名,官网英雄榜展示的是英文名。
  2. 部分贡献者希望用自己的英文名而不是中文拼音来展示。
  3. 英雄榜会展示头像,表格里没有相应字段(可以使用 GitHub ID 获取 GitHub 头像)。
  4. Credly 管理页面复制得到的证书链接需要登录才能查看,需要进行格式转换。

DevStream 做了个数据格式转换仓库, 读入 csv 数据,转换成英雄榜需要的 json 数据,并处理中文转拼音等细节。

于是,我们的操作流程就变成了这样:

  1. 更新完贡献者与证书表格,把飞书表格以 csv 格式下载至本地,并将其移动到数据转化代码的相应目录中;
  2. 运行程序,自动执行数据格式转换,得到官网英雄榜需要 json 格式;
  3. 使用得到的 json 文件覆盖官网仓库的对应文件;
  4. git add && git commit && git push;
  5. 提 pr 至官网仓库;
  6. review && merge pr。

能不能再简化一些呢?尤其是每次手动提要点开 GitHub 网页提交 pr 好麻烦!

当然可以!—— 我认为绝大多数重复的、可被精确定义或描述的操作,都可以使用代码自动化。

我们可以使用 GitHub Actions 来完成部分自动化,每次提交最新的含有贡献者和证书信息的 csv 文件,由 Actions 完成"程序运行(数据处理)、复制 json 至官网仓库、提 pr 到官网仓库"的操作。

然后流程就变成了:

  1. 更新表格,下载成 csv ,移动到相应目录;
  2. git add && git commit && git push (之后由 GitHub Actions 自动执行程序,复制 json、提 pr 到官网仓库);
  3. review && merge pr。

还能再简单点吗?我只想点点鼠标!

当然!可以!

第二步已经把执行的命令都写出来了,为什么不直接放到 shell 脚本里?

第一步呢?"下载表格成 csv"本就是个鼠标操作,“移动到代码目录” 不就是个 mv 吗?

(具体的 GitHub Actions 工作流定义和 shell 脚本,前面的数据格式转换仓库中均已给出)。

最终流程

当贡献者或证书信息更新后:

  1. 鼠标点一下飞书多维表格页的 “下载为 csv”
  2. 鼠标点一下桌面的脚本

泡杯茶,等半分钟,通知 website 仓库管理员 review pr 并 merge。

一些自动化的探讨

自动化环节,很多地方可以做得更好,以及很多地方是多次权衡过的结果,简单分享一下:

Q1. 为什么最后还要人工 review?

其实理论上能做到直接合并不需要 review,但最后人工校验一下更安全。

Q2. 为什么最后要依靠脚本来在本地操作 Git,而不是建个 web 服务器?

虽然这样看起来很美好,而且所有人都能很简单地操作且没有任何环境依赖。

同时飞书的多维表格的自动化是支持在表格变动了之后发送 http 请求的,理论上完全可以做到在表格变动之后,通知后端服务,主动拉取表格数据、渲染、pr 。

但这样有以下几个问题:

  1. 需要一个服务器,消耗资源,以及自己建的 web 服务器的稳定性大概率不如 GitHub Actions 稳定。
  2. 没有必要去为了这一个小功能去申请一个飞书机器人,然后设置复杂的登录逻辑。得不偿失。

其实建不建 web 服务器,很大程度取决于如何从飞书端获取导出的数据。DevStream 采用了"推"的方式主动将数据发送给程序,而不是使用"拉"的方式由程序来请求飞书,虽然后者理论上更安全可靠等,但是实际操作起来会更麻烦。

目前这套流程最终也只需要点两次鼠标就能完成,操作上已经几乎达到最简。

Q3. 文件的安全性如何保证?

目前贡献者敏感信息主要是手机号、微信、收货地址等。

我采取的方式是建个新视图 ——“下载专用(脱敏)”,屏蔽所有敏感信息,只展示渲染英雄榜需要的关键信息。之后下载 csv 都从这个视图里下。
(这就是写博客输出的好处了,建立新视图来屏蔽敏感信息的方式是输出的过程中想到的)。

也可以采取以下方式,更保险:

  • 仓库私有
  • 将下载下来的带有敏感信息的 csv 文件上传到可信的或自建的文件存储服务器,然后在 GitHub Actions 里面下载,同时将网络文件存储服务的密码存至仓库的 Secret 中。
  • 修改部分逻辑,在本地执行 csv 到 json 的转换,GitHub Action 只完成 pr 操作。

一些运营上的想法

写着写着,想到了博客以外的一些内容,想分享一下。

为什么会有这篇博客,或者说,为什么会有这个自动化系统?

前段时间 DevStream 的全职运营离职,所以我们进行了一个非常大胆的创新:每个开发都分担一部分运营的任务。

原以为这会成为开发的一个负担,但运作到现在,事情变得有意思了起来:

搞技术的人天生受不了重复性的操作,如果让搞技术的来做运营,那么我们会想方设法地去简化整个流程,提高整体的效率。

所以,对于一个无技术背景的运营来说,管理这样一个复杂的贡献者信息——礼物发放——证书发放——英雄榜更新体系是一件非常耗时的工作:

需要一个个地去沟通、收集、复制、编辑、再复制… 每有一个新的贡献者起码耗时20分钟,是非常折磨人的。

但这个运营工作落到了技术人员身上,流程就变成了:

  1. 和贡献者互相吹吹牛,然后甩过去一个表单
  2. 贡献者填完表单,飞书收到通知
  3. 点两下鼠标,颁发一下证书
  4. 再点两下鼠标,用脚本更新一下官网

愈发觉得 DevStream 这个模式是成功且高效、有一定推广意义的,无论是技术人员辅助做些运营工作并提高整个团队的工作效率,还是运营人员自身去学些技术或者利用工具提高效率。

如果开源社区的运营者们不用每天身陷于重复性的无聊的工作,而是能有更多的时间去做些创造性的工作、有趣的工作,那一定非常酷!

链接集合

贡献者,是衡量开源项目的金指标 贡献者,是衡量开源项目的金指标 根据 GitHub 2020 年的统计显示,这一年新增了 6000 万个代码仓库,超过 5600 万的开发者参与到开源项目中。预计到 2025 年,在 GitHub 参与开源项目的开发者人数将会超过 1 亿。 在这些快速增长的数字背后,隐藏的是开源项目为了赢得开发者而做出的各种宣传:硬核技术文章、社交活动、新媒体、周边礼物等,可以说是乱花渐欲迷人眼。那么对于开发者来说,如何能够在百花齐放的项目中,找出最适合自己公司的那一个呢? 这就会涉及到开源项目的各种指标: Star.. 阅读详情

相关推荐

github-avatar-downloader:下载指定github存储库的所有贡献者的头像

GitHub头像下载器 给定GitHub存储库名称和所有者后,GitHub Avatar Downloader将下载其所有贡献者的头像并将其保存到子目录./avatars 警告 该存储库已被取代 用法 该程序应以以下方式从命令行执行: node download_avatars.js kaichesterni github-avatar-downloader kaichesterni是存储库的所有者,而github-avatar-downloader是存储库的名称 授权 Dotenv已集成到Github Avatar Downloader中,以授权对参与者列表的请求。 用户应创建一个名为.env的文件, .env包含: GITHUB_AUTH_CODE=abcdefg 其中abcdefg是用户可以在生成的授权代码 依存关系 Node.js- //nodejs.org 请求-ht

sarashina2.2-tts震撼发布:革命性日语TTS系统如何实现零样本语音克隆?

日本语音合成技术迎来重大突破!🎉 sarashina2.2-tts作为一款革命性的日语文本转语音系统,由SB Intuitions开发,基于大型语言模型架构,实现了令人惊叹的零样本语音克隆能力。这款日语TTS系统不仅支持日语和英语双语合成,还能从短短几秒的参考音频中完美复刻说话者的声音特征、语调和风格,为语音合成领域带来了全新的可能性。 ## 🔥 为什么sarashina2.2-tts如此特

gitblog_00315的博客 878

Jetson AGX Orin 部署 JetPack:从依赖缺失到系统升级的完整排障指南

本文详细介绍了在Jetson AGX Orin开发板上部署JetPack SDK的完整排障指南,包括解决依赖缺失、系统升级和常见错误处理。通过确认硬件版本、配置正确的软件源、执行系统升级和安装核心组件等步骤,帮助开发者顺利完成JetPack的安装与配置,确保AI开发环境的稳定运行。

weixin_29172963的博客 160

OpenMLDB开源社区贡献者体系今日发布

关于OpenMLDBOpenMLDB 是一个开源机器学习数据库,提供企业级 FeatureOps 全栈解决方案。OpenMLDB 致力于闭环解决 AI 工程化落地的数据治理难题,并且已经在上百个企业级人工智能场景中得到落地。OpenMLDB 优先开源了特征数据治理能力,依托 SQL 的开发能力,为企业提供全栈功能的、低门槛特征数据计算和管理平台。自开源以来,OpenMLDB受到了社区开发者的关注和喜爱。俗话说,“众人拾柴火焰高”,承蒙各位开发者的支持和贡献,OpenMLDB社区愈发充满活力。为了激励更多志同

cmdos的专栏 330

UE5.5 PCGFrameWork程序化内容生成实战指南

本文是UE5.5 PCGFrameWork程序化内容生成的实战指南。详细介绍了从点云采样、DynamicMesh几何生成到子图与蓝图扩展的核心工作流。通过实战案例演示如何利用该框架高效构建丰富的程序化场景,为技术美术、独立开发者及爱好者提供从入门到进阶的系统性指引。

tea88的博客 921

阿里云百炼平台创建智能体-上传文档

阿里云百炼智能体-上传文档文件

weixin_43930851的博客 1358

StarRocks社区成员角色体系详解

StarRocks社区成员角色体系详解 【免费下载链接】starrocks StarRocks是一个开源的分布式数据分析引擎,用于处理大规模数据查询和分析。 - 功能:分布式数据分析;大规模数据查询;数据分析;数据仓库。 - 特点:高性能;可扩展;易于使用;支持多种数据源。 ...

gitblog_00826的博客 483

Windows下用RKDevTool解包update.img的完整流程(含常见错误排查)

本文详细介绍了在Windows系统下使用RKDevTool工具解包update.img固件的完整流程。从工具准备、环境搭建到逐步解包操作,重点解析了输出文件结构,并提供了修改分区后重新打包的实战方法。文章还针对解包失败、打包错误等常见问题提供了详细的排查与解决方案,旨在帮助嵌入式开发者和爱好者高效完成固件分析与定制工作。

aa123的博客 718

零起点的开源社区贡献指南

【开源社区贡献者】听起来是个专属于顶级开发者的头衔,但它真的有这么遥不可及吗?下面的分享旨在揭开它的神秘面纱,帮助感兴趣的同学更轻松地参与到社区项目中来。 首先需要澄清的是,本文作者自己并不是社区高大上项目的原创作者,只是在一个 5k+ Star,100+ 贡献者的项目中贡献排名前十而已(作为参考,Vue 的贡献者不到 150 人),和《维护一个大型开源项目是怎样的体验》这个问题里闪耀的群星相比,...

weixin_34349320的博客 239

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1618

【AUTOSAR-COM】-2.3_通过PduGroup批量控制CAN Frame/Pdu的接收

-->如果实现类似UDS诊断 $28服务,控制所有APP CAN Rx Frame/Pdu/报文接收; -->自定义过滤CAN信号的接收。

「汽车电子助手」的博客 1991

开源社区活跃度分析——评价体系设计

从四个方面对开源社区活跃度进行考察,按照评分制度打出四个小分,最后综合这四个评分合为一个总分。分数采用分级制度,共分S、A、B、C这四个等级。在此之前,已经收集了评价所必需的数据,数据每月进行更新,统计也是以月为单位进行。四个考察项涵盖了初步制定评价指标时的所有评价指标小项。共分为四个方面。

weixin_51903460的博客 1652

(SEED-Lab)Buffer Overflow Vulnerability Lab缓冲区溢出实验

(SEED-Lab)Buffer Overflow Vulnerability Lab 欢迎大家访问我的GitHub博客 https://lunan0320.cn 文章目录一、实验目的二、实验步骤与结果2.1 环境初始化2.2 Task1 运行shellcode2.3漏洞程序2.4 Task 22.5 Task 3: ASLR2.6 Task 4: Stack Guard2.7 Task 5:不可执行栈三、参考文献 一、实验目的 理解缓冲区溢出攻击的原理以及如何实施攻击 理解针对缓冲区溢出的防御措施

lunan的博客 8981

2024 开源社年度评选

开源社(英文名称为“KAIYUANSHE”)成立于2014年,是由志愿贡献于开源事业的个人志愿者,依 “贡献、共识、共治” 原则所组成的开源社区。开源社始终维持 “厂商中立、公益、非营利” 的理念,以 “立足中国、贡献全球,推动开源成为新时代的生活方式” 为愿景,以 “开源治理、国际接轨、社区发展、项目孵化” 为使命,旨在共创健康可持续发展的开源生态体系。本次年度评选共评选出2个奖项,分别为“开源...

开源社KAIYUANSHE的博客 1616

V-Mamba:2D 选择性扫描状态空间模型图像分类

V-Mamba CIFAR-10 分类链路:32² RGB → Stem Conv (3→64ch, stride2→16²) → VMambaBlock ×4 (SS2D 四方向 → Mamba S6 扫描 → MLP) → GAP → Linear → 10 类。核心贡献:SS2D 四方向扫描将 2D 空间建模转为 4 个 1D 序列, 计算复杂度从 O(N²) 降至 O(N)。建议先从 CIFAR-10 dim=64 depth=4 验证 SSM 收敛性;

FJN110的博客 70

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

参与开源社区还有证书拿?

拿证书! 拿证书! 拿证书! 拿证书!

farmer_hutao的博客 3371

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

教你如何成为开源项目SeaTunnel的贡献者

经过阅读源码,发现源码中有 Bug,修改后将代码提交给社区。或者,框架有一个新 的特性亟待开发,你为新功能的实现提供了解决方案,这属于代码贡献,也是一种重要的 参与开源贡献的方式。.........

Maynor的博客 1868

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【社区分享】玩转社区开源贡献,看这篇就够了!

本文来自社区投稿与征集。作者唐源,现任蚂蚁集团技术专家,目前专注于建立 AI 基础架构和自动机器学习平台。 本文转自:https://zhuanlan.zhihu.com/p/165098355 作为最早一批非谷歌的 TensorFlow 社区贡献者,同时也是 TensorFlow committer 和 SIG IO maintainer,我将在这篇文章里分享一下自己贡献 TensorFlow 的经历以及一些收获,希望能对大家有启发,鼓励大家一起参与进来。大家如果感兴趣可以去我的GitHub[..

tensorflowforum的博客 1742

开源项目贡献者_如何认识您的开源项目贡献者并发展您的社区

开源项目贡献者by David Herron 大卫·赫伦(David Herron) 如何认识您的开源项目贡献者并发展您的社区 (How to recognize your open source project contributors and grow your community) There’s a truism — if a community is not growing, it ...

cumi7754的博客 971

如何在WordPress贡献者页面中显示带有化身的作者列表

While working on a client’s website, we realized that the built-in function for listing authors was not enough. We showed you how to display all authors from your site, but that method was only good i...

cumohuo9136的博客 413

飞书API获取HTTP请求

飞书API使用教程

lck_csdn的博客 3425

2027校招准备:AI能生成SQL,数据分析该学到什么程度?

面试准备重点是业务理解、分析逻辑、工具熟练度和沟通协作,不必为某个冷门函数推迟申请。每周复盘投递与面试进展,只补最影响下一轮表现的短板。AI降低了操作门槛,也让口径、判断和表达更值得被证明。

weixin_63920922的博客 241

Github Copilot 新手极速上手指南

走到这里,一套从零到可用的 AI 编程助手工作流已经完整跑通。环境先行:确认 IDE 版本为近期稳定版,从官方渠道安装插件,安装后务必重载窗口,让核心服务进程在新实例中启动;内网用户可用.vsix离线部署。登录与配置:用长期账号完成授权,状态栏图标由灰转彩即表示连接建立;随后把触发延迟调到 300ms-500ms、按需勾选语言范围、关闭匿名遥测,再用一次简单输入验证服务就绪。补全实战:AI 补全不只是猜词,它能读懂上下文甚至跨文件匹配签名;用Tab接受整行、逐词接受微调,保持人机协作而非全盘照收。

weixin_45764029的博客 381

GitHub 支持 ACCESSIBILITY.md 无障碍声明

GitHub 开始识别并展示仓库中的 ACCESSIBILITY.md 文件,为开源项目的无障碍目标、已知障碍和反馈流程提供固定位置。

老孙正经胡说 227

inMusic 开设 GitHub 仓库,公开 MPC 开源组件

inMusic 在 GitHub 开设官方仓库,按许可证要求公开 Akai MPC 各代设备及 MPC Sample 使用的开源组件,但并未开源 MPC 操作系统本身。

老孙正经胡说 200

GitHub 开源趋势日报 | 2026-11-08

每日精选 GitHub Trending 热门项目,聚焦 AI 与大模型、Agent 智能体领域,带你用一篇文章看懂开源风向。

weixin_45631123的博客 381
上一篇: 直播预告 | Homebrew 作者 Max Howell:如何打造杰出的开发者工具
下一篇: 10 Best DevOps Tools for Start-ups
DevStream
博客等级 码龄5年 1粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值