菜单

开源与社区

相关源文件

本文档解释了 developer-roadmap 项目如何作为一个开源项目运作,包括其社区结构、贡献流程以及在网站上显示社区统计数据的技术组件。有关添加新路线图的信息,请参阅添加新路线图

1. 项目概览与社区重要性

developer-roadmap 仓库是 GitHub 上最受欢迎的项目之一,目前在该平台上排名为收藏量第 7 的项目。它作为一个由社区维护的资源,帮助开发者学习和探索各种技术路径。

该项目获得了显著的社区关注,具体表现为:

  • 超过 224,000 个 GitHub 星标
  • 超过 150 万注册用户
  • 不断壮大的 Discord 社区

来源:src/components/OpenSourceBanner.astro7-11 src/lib/github.ts5-6

2. 社区统计系统

roadmap.sh 平台显著展示社区统计数据,以展示项目的覆盖范围和影响力。这些统计数据通过专门的组件动态获取和显示。

社区统计架构

该系统从外部 API(GitHub、Discord)和内部数据库获取统计数据,以显示用户指标,这些指标使用 OpenSourceBanner 和 OpenSourceStat 组件进行渲染。

来源:src/components/OpenSourceBanner.astro1-38 src/components/OpenSourceStat.astro1-106 src/lib/github.ts1-77

GitHub 统计数据实现

该平台通过以下实用函数获取 GitHub 统计数据:

  1. 统计星标数量并格式化以供显示
  2. 确定仓库在 GitHub 顶级项目中的排名
  3. 根据这些指标显示相应的视觉元素

默认星标数量设置为 224,000,并带有缓存机制以减少 API 调用。

来源:src/lib/github.ts1-61

3. 贡献流程

该项目拥有明确定义的贡献流程,以维护质量和一致性。所有贡献都通过 GitHub 的问题(Issue)和拉取请求(Pull Request)系统进行管理。

贡献类型和工作流程

贡献指南根据贡献类型指定了不同的工作流程:

  1. 新路线图:通过问题(Issue)提交文本路线图或使用路线图编辑器创建
  2. 现有路线图:直接通过拉取请求(PR)修复错别字,通过问题(Issue)建议添加/删除节点
  3. 添加项目:提出问题(Issue),其中包含项目详情、要求以及涵盖的技能
  4. 添加内容:将内容提交到相应的路线图目录,并遵循样式指南

来源:contributing.md1-147

内容贡献指南

该平台对内容有具体的指南以维护质量:

  • 内容必须是英文
  • 每个主题最多 8 个链接
  • 主题应在一个段落内简洁地解释
  • 外部资源必须按类型(官方、文章、课程等)标记
# Topic Title

(Content)

Visit the following resources to learn more:

- <FileRef file-url="https://github.com/kamranahmedse/developer-roadmap/blob/5ec61cc3/@type@Title/Description of Link" undefined  file-path="@type@Title/Description of Link">Hii</FileRef>

来源:contributing.md50-83

4. 自动化工作流

该项目使用多个 GitHub Actions 工作流来自动化维护任务。

问题(Issue)和拉取请求(Pull Request)自动化

主要自动化工作流包括:

  1. 标签问题(Label Issue):自动标记和分类新问题,特别是主题变更请求
  2. 刷新路线图内容 JSON(Refresh Roadmap Content JSON):每日任务,用于更新路线图内容 JSON 文件
  3. 升级依赖项(Upgrade Dependencies):每周任务,用于将依赖项更新到最新版本

这些工作流有助于维护代码库并简化贡献流程。

来源:.github/workflows/label-issue.yml1-40 .github/workflows/refresh-roadmap-content-json.yml1-52 .github/workflows/upgrade-dependencies.yml1-51

5. 问题(Issue)模板

该项目提供了结构化的问题(Issue)模板,以标准化错误报告和功能请求的格式。这确保了贡献者提供所有必要的信息。

主题变更请求模板

建议主题变更的模板要求:

  • 要更改的路线图的 URL
  • 详细的变更建议

这种结构化的输入有助于维护者更有效地评估和实施变更。

来源:.github/ISSUE_TEMPLATE/01-suggest-changes.yml1-25 .github/ISSUE_TEMPLATE/02-bug-report.yml1-43

6. OpenGraph 图像生成

该项目为路线图、指南和最佳实践生成自定义的 Open Graph 图像,以改善社交媒体分享效果。该系统使用服务器端渲染来创建动态图像。

该系统为以下内容动态生成 Open Graph 图像:

  • 路线图
  • 最佳实践
  • 指南
  • 用户资料

这些图像增强了在社交媒体和消息平台上共享链接的视觉效果。

来源:src/pages/og/roadmap/[slug].ts:1-36src/pages/og/best-practice/[slug].ts:1-35src/pages/og/guide/[slug].ts:1-35src/pages/og/user/[username].ts:1-36src/lib/open-graph.ts1-27

7. 许可

该项目采用自定义许可协议,旨在平衡开源原则与防止滥用

  1. 内容使用:内容受版权保护,但可供个人使用
  2. 再分发限制:限制再分发,以防止第三方通过内容获利
  3. 贡献豁免:为贡献目的创建的 GitHub fork 不受这些限制

维护者(Kamran Ahmed)对特定使用请求持开放态度,但已实施许可协议以防止滥用。

来源:license1-20

8. 行为准则

该项目遵循改编自《贡献者盟约》的行为准则,以确保为所有贡献者提供一个友好的环境。主要方面包括:

  • 致力于为所有人提供无骚扰的体验
  • 可接受行为标准
  • 报告不可接受行为的流程
  • 执行程序

本行为准则适用于所有项目空间以及在公共场合代表项目时。

来源:code_of_conduct.md1-77

9. 组件实现细节

OpenSourceBanner 组件

OpenSourceBanner 组件负责显示社区统计数据和项目重要性。此 Astro 组件:

  1. 获取关于 GitHub 星标、仓库排名和 Discord 成员的数据
  2. 以用户友好的横幅形式呈现这些信息
  3. 提供 GitHub、注册和 Discord 的行动号召按钮
<div class='border-b border-t bg-white py-6 text-left sm:py-16 sm:text-center'>
  <div class='container max-w-[650px]!'>
    <p class='text-2xl font-bold sm:text-5xl'>Join the Community</p>
    <p class='my-2.5 text-sm leading-relaxed text-gray-600 sm:my-5 sm:text-lg'>
      roadmap.sh is the {repoRank} most starred project on GitHub and is visited by hundreds of thousands of developers every month.
    </p>
    <div class='mt-5 grid grid-cols-1 justify-between gap-2 divide-x-0 sm:my-11 sm:grid-cols-3 sm:gap-0 sm:divide-x mb-4 sm:mb-0'>
      <OpenSourceStat text='GitHub Stars' value={starCount} secondaryValue={repoRank} />
      <OpenSourceStat text='Registered Users' value={'+1.5M'} secondaryValue="+90k" />
      <OpenSourceStat text='Discord Members' value={discordInfo.totalFormatted} secondaryValue="+2k" />
    </div>
  </div>
</div>

来源:src/components/OpenSourceBanner.astro1-38

OpenSourceStat 组件

OpenSourceStat 组件以适当的样式和行动号召按钮渲染单个统计数据。它根据统计数据的类型(GitHub 星标、注册用户或 Discord 成员)调整其显示。

来源:src/components/OpenSourceStat.astro1-106

10. GitHub 重定向

该项目实现了从 /github 到 GitHub 仓库的简单重定向,方便用户访问源代码。

来源:src/pages/github.astro1-7

11. 资金支持

该项目通过 GitHub 赞助接受资金支持,维护者 (kamranahmedse) 被列为收款人。

来源:.github/FUNDING.yml1-3