From b585a3ffe604c9bfe201508e7a9f20bd232ac588 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Mon, 2 Feb 2026 03:19:45 +0800 Subject: [PATCH 1/7] add project and team docs - https://github.com/mcpp-community/OpenOrg/issues/1 Signed-off-by: sunrisepeak --- homepage/.vitepress/config.mts | 13 ++- .../theme/components/ProjectCard.vue | 4 +- .../theme/components/ProjectsPage.vue | 12 +-- .../theme/components/ProjectsShowcase.vue | 4 +- homepage/docs/base/quick-start.md | 49 ++++++++++ homepage/docs/teams/coreteam.md | 46 +++++++++ homepage/docs/teams/intro.md | 50 ++++++++++ homepage/docs/teams/pre-join.md | 32 +++++++ homepage/docs/teams/privileges.md | 36 +++++++ homepage/docs/teams/vteam.md | 25 +++++ homepage/index.md | 90 ++++++++++++------ homepage/pages/about/history.md | 18 +++- homepage/pages/projects.md | 27 ++++++ homepage/public/team-arch.png | Bin 0 -> 38012 bytes 14 files changed, 366 insertions(+), 40 deletions(-) create mode 100644 homepage/docs/teams/coreteam.md create mode 100644 homepage/docs/teams/intro.md create mode 100644 homepage/docs/teams/pre-join.md create mode 100644 homepage/docs/teams/privileges.md create mode 100644 homepage/docs/teams/vteam.md create mode 100644 homepage/public/team-arch.png diff --git a/homepage/.vitepress/config.mts b/homepage/.vitepress/config.mts index 05bb26e..a809da7 100644 --- a/homepage/.vitepress/config.mts +++ b/homepage/.vitepress/config.mts @@ -50,7 +50,7 @@ export default defineConfig({ { text: '❤️ 赞助', link: '/pages/sponsor.md' }, ], sidebar: { - '/docs/' : [ + '/docs' : [ { text: '了解社区', collapsed: false, @@ -62,6 +62,17 @@ export default defineConfig({ { text: '常见问题', link: '/docs/base/qa.md' }, ] }, + { + text: '社区团队', + collapsed: false, + items: [ + { text: '简介', link: '/docs/teams/intro.md' }, + { text: '志愿者团队', link: '/docs/teams/vteam.md' }, + { text: '核心团队', link: '/docs/teams/coreteam.md' }, + { text: '预加入机制', link: '/docs/teams/pre-join.md' }, + { text: '团队成员权限', link: '/docs/teams/privileges.md' }, + ] + }, ], }, socialLinks: [ diff --git a/homepage/.vitepress/theme/components/ProjectCard.vue b/homepage/.vitepress/theme/components/ProjectCard.vue index bbda375..190f305 100644 --- a/homepage/.vitepress/theme/components/ProjectCard.vue +++ b/homepage/.vitepress/theme/components/ProjectCard.vue @@ -77,8 +77,8 @@ const { title, description, url, tags, status, highlight, typeClass, fullLink, c const statusText = (s?: 'active' | 'incubating' | 'wip') => { if (s === 'active') return '活跃' - if (s === 'incubating') return '孵化中' - if (s === 'wip') return '进行中' + if (s === 'incubating') return '孵化' + if (s === 'wip') return '进行' return '' } diff --git a/homepage/.vitepress/theme/components/ProjectsPage.vue b/homepage/.vitepress/theme/components/ProjectsPage.vue index 38aa17e..fd42179 100644 --- a/homepage/.vitepress/theme/components/ProjectsPage.vue +++ b/homepage/.vitepress/theme/components/ProjectsPage.vue @@ -11,11 +11,11 @@ @@ -121,8 +121,8 @@ const selectedCategories = ref([]) const statusText = { active: '活跃', - wip: '进行中', - incubating: '孵化中' + wip: '进行', + incubating: '孵化' } const projectType = (tags?: string[]) => { @@ -136,10 +136,10 @@ const filteredProjects = computed(() => { return props.projects.filter(project => { // 状态过滤 const statusMatch = selectedStatuses.value.length === 0 || (project.status ? selectedStatuses.value.includes(project.status) : true) - + // 类型过滤 const categoryMatch = selectedCategories.value.length === 0 || (project.category ? selectedCategories.value.includes(project.category) : true) - + // 搜索过滤 let searchMatch = true if (searchQuery.value.trim()) { diff --git a/homepage/.vitepress/theme/components/ProjectsShowcase.vue b/homepage/.vitepress/theme/components/ProjectsShowcase.vue index 2625e77..58b2d33 100644 --- a/homepage/.vitepress/theme/components/ProjectsShowcase.vue +++ b/homepage/.vitepress/theme/components/ProjectsShowcase.vue @@ -39,8 +39,8 @@ const props = defineProps<{ projects: Project[] }>() const statusText = (status?: Project['status']) => { if (status === 'active') return '活跃' - if (status === 'incubating') return '孵化中' - if (status === 'wip') return '进行中' + if (status === 'incubating') return '孵化' + if (status === 'wip') return '进行' return '' } diff --git a/homepage/docs/base/quick-start.md b/homepage/docs/base/quick-start.md index 22420b2..4d93c38 100644 --- a/homepage/docs/base/quick-start.md +++ b/homepage/docs/base/quick-start.md @@ -1,3 +1,52 @@ # 新手教程 可以按照下面的步骤, 来一步步了解社区或参与社区活动 + +## 0.参与社区活动 + +> 社区提供了群组、论坛等形式, 可以用于社区和C++相关内容的交流讨论 + +### `0.0-加入社区:` 群组1067245099, [社区论坛](https://forum.d2learn.org/category/20), [开源org成员申请](https://github.com/orgs/mcpp-community/teams/members) + +### `0.1-参与社区讨论` 在论坛参与C++相关话题讨论, 或发布新话题贴或文章 + + - 常见话题: C++技术问题、社区项目、C++生态等 + - 常见文章类型: 技术文章、工程/开发记录、心得等 + +## 1.使用社区项目 + +> 社区中的项目分为了 教程类 和 C++库类型. 教程项目可以用来学习现代C++相关的技术/知识, 工具库类项目 可以用来辅助和提升自己项目的开发 + +### `1.0-学习C++相关知识` + + - [mcpp-start | 基础编程概念和现代C++](./quick-start.md) + - [mcpp-style-ref | 现代C++模块化编码/项目风格参考](https://github.com/mcpp-community/mcpp-style-ref) + - [d2mcpp | 现代C++核心特性入门](https://github.com/mcpp-community/d2mcpp) + - [d2mystl | 从零开发迷你STL标准库](https://github.com/mcpp-community/d2mystl) + +### `1.1-使用社区mcpplibs库` + + - [llmapi | 支持模块化的大模型API库](https://github.com/mcpplibs/llmapi) + +## 2.参与社区项目 + +### `2.0-处理社区中的问题` + - 一般为论坛有中问题类型的贴子(标识为 `未解决`) - [论坛](https://forum.d2learn.org/topic/144) + - [社区公开任务发布面板](https://github.com/orgs/mcpp-community/projects/3) + +### `2.1-参与项目开发` + - 寻找感兴趣的[社区项目](../../pages/projects.md)参与开发和维护 + - [社区公开任务发布面板](https://github.com/orgs/mcpp-community/projects/3) + +## 3.成为社区贡献者和项目维护者 + +### `3.0-成为社区贡献者` - 给社区的开源项目提交PR + +### `3.1-成为社区项目的模块维护者` + - 活跃的项目贡献者, 可以向参与项目的负责人申请仓库权限 + +## 4.加入社区团队 + +### `4.0-加入社区VTeam团队` - [VTeam申请](https://github.com/mcpp-community/members/issues/new?template=join-vteam.yml) + +### ... diff --git a/homepage/docs/teams/coreteam.md b/homepage/docs/teams/coreteam.md new file mode 100644 index 0000000..94bff07 --- /dev/null +++ b/homepage/docs/teams/coreteam.md @@ -0,0 +1,46 @@ +# CoreTeam | 核心团队 + +## 核心目标 + +- 项目预研与已发布库的开发和维护 +- 推动社区运营及发展 +- 扩大社区影响力 +- 社区人才培养 + +## 核心团队成员标准 + +> 非硬性标准 - `核心关注的是做过什么、能做什么、是否具备学习能力/发展潜力 + 和团队的匹配度(一般是双向意向匹配)` + +**期望** + +- 具备较强的学习能力 +- 具备主导项目并推动其发展的能力 +- 具备开发基础库的能力, 并对现代C++感兴趣 +- 了解开源社区, 并对其感兴趣且有一定认识和实践 +- 了解社区运营、社会学、传播学有过实践 +- 了解一些团队管理和任务拆解方面的知识 + +**有以下任一项优先** + +- 热爱编程与开源的中学生 +- 实现过(或具备实现)简单版本的C++标准库STL - 泛型容器、分配器、内存池等(不要求性能) +- 参与过500+Star开源项目贡献或维护 +- 在公共平台有过创作者实践/对外输出 - 视频、图文/博客、语音播客等 + +## 核心团队成长 + +- 经验性成长 +- 社区与个人影响力的成长 +- 经济收入 + +## ETeam | 名誉核心团队 + +Core Team Emeriti / 曾做出过突出贡献的不再活跃的核心团队成员, 保留Write权限... + +- 社区官网展示 +- 誉核心团队成员的档案(贡献事迹、与社区的故事等) +- 核心团队成员聚会/活动(未来) + +## 相关链接 + +- [CoreTeam成员列表](https://github.com/orgs/mcpp-community/teams/coreteam) diff --git a/homepage/docs/teams/intro.md b/homepage/docs/teams/intro.md new file mode 100644 index 0000000..61de78c --- /dev/null +++ b/homepage/docs/teams/intro.md @@ -0,0 +1,50 @@ +# mcpp社区团队 + +推动mcpp社区发展和繁荣的一群人 + +## 组织架构图 + +![](/team-arch.png) + +## 团队 + +### [CoreTeam | 核心团队](coreteam.md) + +> 社区的维护者, 拥有所有仓库的maintain权限, 对社区及项目的整体方向负责, 并致力于持续改进和扩大影响力 + +### [VTeam | 志愿者团队](vteam.md) + +> 参与社区的运营或项目的issues/pr的处理分发, 以及部分项目的写权限, 辅助项目的开发和社区的运营发展 + +### [ETeam | 名誉核心团队](intro.md) + +> 曾做出过突出贡献的不再活跃的核心团队成员 + +## 团队成员招募和培养 + +### [pre-join机制](./pre-join.md) + +> 一个社区团队培养和解决/防止双向错配的机制 + +- Step1: 初步意向交流 +- Step2: 基于项目进行合作 +- Step3: 加入团队 + +## 角色划分与权限 + +> 按项目/仓库进行划分 + +| 角色 | 权限 | 简介 | 对应团队 | 备注 | +| --- | --- | --- | --- | --- | +| `owner` | `admin` | 项目负责人 - 对项目开发和发展负责 | CoreTeam成员 | 一个项目1~2个 | +| `maintainer` | `maintain` | 项目核心模块维护者 | VTeam/CoreTeam成员 | CoreTeam成员默认有所有仓库`maintain`权限 | +| `committer` | `write` | 参与社区事物处理, 有部分仓库PR合入权限 | VTeam成员 | | +| `triager` | `triage` | 活跃的外部贡献者 | | `Outside collaborators` | +| `contributor` | `N/A` | 社区贡献者(代码、文档...) | | | + +## 相关链接 + +- [CoreTeam细节](coreteam.md) +- [VTeam细节](vteam.md) +- [团队权限划分](privileges.md) +- [社区团队列表](https://github.com/orgs/mcpp-community/teams) diff --git a/homepage/docs/teams/pre-join.md b/homepage/docs/teams/pre-join.md new file mode 100644 index 0000000..1f05bc7 --- /dev/null +++ b/homepage/docs/teams/pre-join.md @@ -0,0 +1,32 @@ +# pre-join | 预加入机制 + +社区团队培养和解决/防止双向错配的机制 + +## 初步意向交流 + +> 对于有意向参与社区团队的成员, 做初步的双方意向沟通 + +- 介绍社区及团队: 社区在做的事情, 团队的基础协作方式, 准备参与的项目(如已立项) +- 双向意图沟通 + - 团队侧: 协作方式、做的事情、预期 + - 沟通者: 了解其对社区/团队、工作内容等的期望 + +## 基于项目进行协作 + +> 当初步双向沟通及预期匹配时, 然后通过具体的项目上进行协作. 在实践中对概念上的双向预期进行验证和调整 + +- 一般是参与具体的项目, 进行团队协作和磨合 +- 推荐人/项目负责人在协作期间, 负责解答和协助处理疑问 + - 对于一些新人/初学者, 也要对其进行培养和引导 +- 推荐人 和 候选人, 通过项目上的协作增加了解 + +> - 注1: 一般是以参与推荐人的项目为主, 但中途也可以根据兴趣进行调整 +> - 注2: 如果在参与项目时, 工作内容或节奏和预期不一样, 也可再参与其他项目 或 作为社区贡献者的方式继续参与项目 + +## 申请加入团队 + +> 当候选人通过实际项目的协作, 已经熟悉社区协作方式, 且和自己预期的一致, 就可以申请加入社区团队 + +- 推荐人 (可选) +- 过往在社区的工作 +- [申请入口](https://github.com/mcpp-community/members/issues/new?template=join-vteam.yml) diff --git a/homepage/docs/teams/privileges.md b/homepage/docs/teams/privileges.md new file mode 100644 index 0000000..efcfef6 --- /dev/null +++ b/homepage/docs/teams/privileges.md @@ -0,0 +1,36 @@ +# 组织权限管理 + +``` + +CoreTeam - 所有仓库maintainer + 私有仓库 + +| +V + +VTeam - 所有公开仓库Triage权限 / 至少1个仓库的Write权限 + +| +V + +Contributors / 社区贡献者 - 相关仓库Triage权限 + +``` + +## 仓库权限说明 + +``` +Read +Recommended for non-code contributors who want to view or discuss your project. + +Triage - 处理Issues/PR +Recommended for contributors who need to manage issues and pull requests without write access. + +Write - PR合并 +Recommended for contributors who actively push to your project. + +Maintain - 负责仓库或其中某个模块的维护 +Recommended for project managers who need to manage the repository without access to sensitive or destructive actions. + +Admin +Recommended for people who need full access to the project, including sensitive and destructive actions like managing security or deleting a repository. +``` diff --git a/homepage/docs/teams/vteam.md b/homepage/docs/teams/vteam.md new file mode 100644 index 0000000..b0d9ec4 --- /dev/null +++ b/homepage/docs/teams/vteam.md @@ -0,0 +1,25 @@ +# VTeam | 志愿者团队 + +参与社区的运营或项目的issues/pr的处理分发, 以及部分项目的写权限, 辅助项目的开发和社区的运营发展 + +## 团队成员标准 / 职责 + +- 社区活跃成员并有参与过社区贡献 + - 社区中项目的开发/Bugfix + - 文档的编写 + - 社区问题的维护/文化传播 + - ... +- 至少一个成为一个项目的`committer` + +## 成长 + +- 社区提供的技术支持服务 +- 核心团队成员的指导, 及未来进一步成为核心团队成员 + - 一般按1x2比例: 一个核心团队成员, 负责2名VTeam成员的成长 +- 加入核心团队的机会 + - 一般有意向申请进入核心团队的成员, 可以在VTeam进行初步参与团队协作 + - VTeam期间是双向匹配的过程, 最后可以找熟悉的核心团队成员进行推荐 + +## 相关链接 + +- [VTeam成员列表](https://github.com/orgs/mcpp-community/teams/vteam) diff --git a/homepage/index.md b/homepage/index.md index 608f917..1fa17eb 100644 --- a/homepage/index.md +++ b/homepage/index.md @@ -37,6 +37,27 @@ hero: tags: ['mcpplibs', 'llm api', 'C++23', '跨平台'], status: 'wip' }, + { + name: 'mcpp-style-ref', + description: 'Modern/Module C++ Style Reference | 现代C++编码/项目风格参考', + link: 'https://github.com/mcpp-community/mcpp-style-ref', + tags: ['文档', '编码风格', '模块化'], + status: 'incubating' + }, + { + name: 'members', + description: 'mcpp社区成员和开发者申请工具', + link: 'https://github.com/mcpp-community/members', + tags: ['工具', '社区', '开发者', '团队'], + status: 'wip' + }, + { + name: 'd2mystl', + description: '从零实现一个迷你STL库', + link: 'https://github.com/mcpp-community/d2mystl', + tags: ['教程', '标准库', 'STL'], + status: 'incubating' + }, { name: 'mcpp-community', description: '社区官网与内容建设,展示项目、团队和最新动态', @@ -90,8 +111,9 @@ hero: avatar: 'mcpp-logo.png', bio: '快来加入我们吧...', projects: [ - { name: 'd2mcpp - 交互式现代C++入门教程', link: 'https://github.com/mcpp-community/d2mcpp' }, - { name: 'mcpplibs - 现代C++库集合', link: 'https://github.com/mcpplibs' }, + { name: '注册社区论坛', link: 'https://forum.d2learn.org/category/20' }, + { name: '申请社区开发者', link: 'https://github.com/mcpp-community/members' }, + { name: '加入社区群组(Q:1067245099)', link: 'https://qm.qq.com/q/2QTJFidsOk' }, ], github: 'https://github.com/mcpp-community', bilibili: 'https://space.bilibili.com/3493107582633996', @@ -102,31 +124,37 @@ hero: avatar: 'mcpp-logo.png', bio: '快来加入我们吧...', projects: [ - { name: 'd2mcpp - 交互式现代C++入门教程', link: 'https://github.com/mcpp-community/d2mcpp' }, - { name: 'mcpplibs - 现代C++库集合', link: 'https://github.com/mcpplibs' }, + { name: '注册社区论坛', link: 'https://forum.d2learn.org/category/20' }, + { name: '申请社区开发者', link: 'https://github.com/mcpp-community/members' }, + { name: '加入社区群组(Q:1067245099)', link: 'https://qm.qq.com/q/2QTJFidsOk' }, ], github: 'https://github.com/mcpp-community', bilibili: 'https://space.bilibili.com/3493107582633996', sponsor: 'https://github.com/mcpp-community' - } + }, ]" :vTeam="[ { - name: 'V Team Member 1', + name: '欢迎加入', avatar: 'mcpp-logo.png', - bio: 'V团队成员', + bio: '快来加入我们吧...', projects: [ - { name: 'mcpplibs - 现代C++库集合', link: 'https://github.com/mcpplibs' }, + { name: '注册社区论坛', link: 'https://forum.d2learn.org/category/20' }, + { name: '申请社区开发者', link: 'https://github.com/mcpp-community/members' }, + { name: '加入社区群组(Q:1067245099)', link: 'https://qm.qq.com/q/2QTJFidsOk' }, ], github: 'https://github.com/mcpp-community', + bilibili: 'https://space.bilibili.com/3493107582633996', sponsor: 'https://github.com/mcpp-community' }, { - name: 'V Team Member 2', + name: '欢迎加入', avatar: 'mcpp-logo.png', - bio: 'V团队成员', + bio: '快来加入我们吧...', projects: [ - { name: 'd2mcpp - 交互式现代C++入门教程', link: 'https://github.com/mcpp-community/d2mcpp' }, + { name: '注册社区论坛', link: 'https://forum.d2learn.org/category/20' }, + { name: '申请社区开发者', link: 'https://github.com/mcpp-community/members' }, + { name: '加入社区群组(Q:1067245099)', link: 'https://qm.qq.com/q/2QTJFidsOk' }, ], github: 'https://github.com/mcpp-community', bilibili: 'https://space.bilibili.com/3493107582633996', @@ -137,8 +165,9 @@ hero: avatar: 'mcpp-logo.png', bio: '快来加入我们吧...', projects: [ - { name: 'd2mcpp - 交互式现代C++入门教程', link: 'https://github.com/mcpp-community/d2mcpp' }, - { name: 'mcpplibs - 现代C++库集合', link: 'https://github.com/mcpplibs' }, + { name: '注册社区论坛', link: 'https://forum.d2learn.org/category/20' }, + { name: '申请社区开发者', link: 'https://github.com/mcpp-community/members' }, + { name: '加入社区群组(Q:1067245099)', link: 'https://qm.qq.com/q/2QTJFidsOk' }, ], github: 'https://github.com/mcpp-community', bilibili: 'https://space.bilibili.com/3493107582633996', @@ -149,8 +178,9 @@ hero: avatar: 'mcpp-logo.png', bio: '快来加入我们吧...', projects: [ - { name: 'd2mcpp - 交互式现代C++入门教程', link: 'https://github.com/mcpp-community/d2mcpp' }, - { name: 'mcpplibs - 现代C++库集合', link: 'https://github.com/mcpplibs' }, + { name: '注册社区论坛', link: 'https://forum.d2learn.org/category/20' }, + { name: '申请社区开发者', link: 'https://github.com/mcpp-community/members' }, + { name: '加入社区群组(Q:1067245099)', link: 'https://qm.qq.com/q/2QTJFidsOk' }, ], github: 'https://github.com/mcpp-community', bilibili: 'https://space.bilibili.com/3493107582633996', @@ -161,8 +191,9 @@ hero: avatar: 'mcpp-logo.png', bio: '快来加入我们吧...', projects: [ - { name: 'd2mcpp - 交互式现代C++入门教程', link: 'https://github.com/mcpp-community/d2mcpp' }, - { name: 'mcpplibs - 现代C++库集合', link: 'https://github.com/mcpplibs' }, + { name: '注册社区论坛', link: 'https://forum.d2learn.org/category/20' }, + { name: '申请社区开发者', link: 'https://github.com/mcpp-community/members' }, + { name: '加入社区群组(Q:1067245099)', link: 'https://qm.qq.com/q/2QTJFidsOk' }, ], github: 'https://github.com/mcpp-community', bilibili: 'https://space.bilibili.com/3493107582633996', @@ -173,8 +204,9 @@ hero: avatar: 'mcpp-logo.png', bio: '快来加入我们吧...', projects: [ - { name: 'd2mcpp - 交互式现代C++入门教程', link: 'https://github.com/mcpp-community/d2mcpp' }, - { name: 'mcpplibs - 现代C++库集合', link: 'https://github.com/mcpplibs' }, + { name: '注册社区论坛', link: 'https://forum.d2learn.org/category/20' }, + { name: '申请社区开发者', link: 'https://github.com/mcpp-community/members' }, + { name: '加入社区群组(Q:1067245099)', link: 'https://qm.qq.com/q/2QTJFidsOk' }, ], github: 'https://github.com/mcpp-community', bilibili: 'https://space.bilibili.com/3493107582633996', @@ -185,8 +217,9 @@ hero: avatar: 'mcpp-logo.png', bio: '快来加入我们吧...', projects: [ - { name: 'd2mcpp - 交互式现代C++入门教程', link: 'https://github.com/mcpp-community/d2mcpp' }, - { name: 'mcpplibs - 现代C++库集合', link: 'https://github.com/mcpplibs' }, + { name: '注册社区论坛', link: 'https://forum.d2learn.org/category/20' }, + { name: '申请社区开发者', link: 'https://github.com/mcpp-community/members' }, + { name: '加入社区群组(Q:1067245099)', link: 'https://qm.qq.com/q/2QTJFidsOk' }, ], github: 'https://github.com/mcpp-community', bilibili: 'https://space.bilibili.com/3493107582633996', @@ -197,8 +230,9 @@ hero: avatar: 'mcpp-logo.png', bio: '快来加入我们吧...', projects: [ - { name: 'd2mcpp - 交互式现代C++入门教程', link: 'https://github.com/mcpp-community/d2mcpp' }, - { name: 'mcpplibs - 现代C++库集合', link: 'https://github.com/mcpplibs' }, + { name: '注册社区论坛', link: 'https://forum.d2learn.org/category/20' }, + { name: '申请社区开发者', link: 'https://github.com/mcpp-community/members' }, + { name: '加入社区群组(Q:1067245099)', link: 'https://qm.qq.com/q/2QTJFidsOk' }, ], github: 'https://github.com/mcpp-community', bilibili: 'https://space.bilibili.com/3493107582633996', @@ -209,8 +243,9 @@ hero: avatar: 'mcpp-logo.png', bio: '快来加入我们吧...', projects: [ - { name: 'd2mcpp - 交互式现代C++入门教程', link: 'https://github.com/mcpp-community/d2mcpp' }, - { name: 'mcpplibs - 现代C++库集合', link: 'https://github.com/mcpplibs' }, + { name: '注册社区论坛', link: 'https://forum.d2learn.org/category/20' }, + { name: '申请社区开发者', link: 'https://github.com/mcpp-community/members' }, + { name: '加入社区群组(Q:1067245099)', link: 'https://qm.qq.com/q/2QTJFidsOk' }, ], github: 'https://github.com/mcpp-community', bilibili: 'https://space.bilibili.com/3493107582633996', @@ -221,8 +256,9 @@ hero: avatar: 'mcpp-logo.png', bio: '快来加入我们吧...', projects: [ - { name: 'd2mcpp - 交互式现代C++入门教程', link: 'https://github.com/mcpp-community/d2mcpp' }, - { name: 'mcpplibs - 现代C++库集合', link: 'https://github.com/mcpplibs' }, + { name: '注册社区论坛', link: 'https://forum.d2learn.org/category/20' }, + { name: '申请社区开发者', link: 'https://github.com/mcpp-community/members' }, + { name: '加入社区群组(Q:1067245099)', link: 'https://qm.qq.com/q/2QTJFidsOk' }, ], github: 'https://github.com/mcpp-community', bilibili: 'https://space.bilibili.com/3493107582633996', diff --git a/homepage/pages/about/history.md b/homepage/pages/about/history.md index f0c7a6c..18df62e 100644 --- a/homepage/pages/about/history.md +++ b/homepage/pages/about/history.md @@ -15,6 +15,20 @@ const historyEvents = [ time: '2026', description: '目标: MCPP社区完成从0到1的过程 - 实现可持续发展, 作为墨伽(MOGA)成功案例' }, + { + time: '2026-01', + description: '>> 影响力5W+, 社区成员50+, 论坛讨论帖30+, 社区项目8+, 1400+Star, 贡献者9 <<' + }, + { + time: '2026-01-27', + description: 'mcpp-style-ref项目发布: 现代C++编码/项目风格参考', + link: 'https://github.com/mcpp-community/mcpp-style-ref', + }, + { + time: '2026-01-19', + description: '开发members项目, 完善文档并实现自动化处理社区成员/团队申请(自动邀请)', + link: 'https://github.com/mcpp-community/members', + }, { time: '2026-01-10', description: 'CT-002加入, 社区团队(3人)进行第0次线上双周会', @@ -98,9 +112,9 @@ const historyEvents = [ .history-title { font-size: 1.6rem; } - + .history-text { font-size: 1.1rem; } } - \ No newline at end of file + diff --git a/homepage/pages/projects.md b/homepage/pages/projects.md index bfceed1..c93e832 100644 --- a/homepage/pages/projects.md +++ b/homepage/pages/projects.md @@ -48,6 +48,33 @@ layout: page url: 'https://forum.d2learn.org/category/20', status: 'active', category: 'application' + }, + { + id: 'd2mystl', + title: 'd2mystl', + description: '从零实现一个迷你STL库', + tags: ['教程', '标准库', 'STL'], + url: 'https://github.com/mcpp-community/d2mystl', + status: 'incubating', + category: 'tutorial' + }, + { + id: 'mcpp-style-ref', + title: 'mcpp-style-ref', + description: 'Modern/Module C++ Style Reference | 现代C++编码/项目风格参考', + tags: ['文档', '编码风格', '模块化'], + url: 'https://github.com/mcpp-community/mcpp-style-ref', + status: 'incubating', + category: 'documentation' + }, + { + id: 'members', + title: 'members', + description: 'mcpp社区成员和开发者申请工具', + tags: ['工具', '社区', '开发者', '团队'], + url: 'https://github.com/mcpp-community/members', + status: 'active', + category: 'application' } ]" /> diff --git a/homepage/public/team-arch.png b/homepage/public/team-arch.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb48dbefa4b9cef0ac82f17ae453e5361c3219b GIT binary patch literal 38012 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 Kxi>PVPyR3b?+exd literal 0 HcmV?d00001 From 9812fbe7edee89aebbe656720b2ab1f429b740f1 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Mon, 2 Feb 2026 03:22:32 +0800 Subject: [PATCH 2/7] update --- homepage/.vitepress/config.mts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homepage/.vitepress/config.mts b/homepage/.vitepress/config.mts index a809da7..bc6b651 100644 --- a/homepage/.vitepress/config.mts +++ b/homepage/.vitepress/config.mts @@ -50,7 +50,7 @@ export default defineConfig({ { text: '❤️ 赞助', link: '/pages/sponsor.md' }, ], sidebar: { - '/docs' : [ + '/docs/' : [ { text: '了解社区', collapsed: false, From 26ff71bdda1134fe55bb5a71d1985679009bcda6 Mon Sep 17 00:00:00 2001 From: SPeak Date: Mon, 2 Feb 2026 03:29:18 +0800 Subject: [PATCH 3/7] Update homepage/docs/teams/intro.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- homepage/docs/teams/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homepage/docs/teams/intro.md b/homepage/docs/teams/intro.md index 61de78c..02dc3c3 100644 --- a/homepage/docs/teams/intro.md +++ b/homepage/docs/teams/intro.md @@ -38,7 +38,7 @@ | --- | --- | --- | --- | --- | | `owner` | `admin` | 项目负责人 - 对项目开发和发展负责 | CoreTeam成员 | 一个项目1~2个 | | `maintainer` | `maintain` | 项目核心模块维护者 | VTeam/CoreTeam成员 | CoreTeam成员默认有所有仓库`maintain`权限 | -| `committer` | `write` | 参与社区事物处理, 有部分仓库PR合入权限 | VTeam成员 | | +| `committer` | `write` | 参与社区事务处理, 有部分仓库PR合入权限 | VTeam成员 | | | `triager` | `triage` | 活跃的外部贡献者 | | `Outside collaborators` | | `contributor` | `N/A` | 社区贡献者(代码、文档...) | | | From 5cca197a73e023bc241f1cdaa81b168202adb22b Mon Sep 17 00:00:00 2001 From: SPeak Date: Mon, 2 Feb 2026 03:29:31 +0800 Subject: [PATCH 4/7] Update homepage/docs/base/quick-start.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- homepage/docs/base/quick-start.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homepage/docs/base/quick-start.md b/homepage/docs/base/quick-start.md index 4d93c38..bfb50e7 100644 --- a/homepage/docs/base/quick-start.md +++ b/homepage/docs/base/quick-start.md @@ -31,7 +31,7 @@ ## 2.参与社区项目 ### `2.0-处理社区中的问题` - - 一般为论坛有中问题类型的贴子(标识为 `未解决`) - [论坛](https://forum.d2learn.org/topic/144) + - 一般为论坛中有问题类型的贴子(标识为 `未解决`) - [论坛](https://forum.d2learn.org/topic/144) - [社区公开任务发布面板](https://github.com/orgs/mcpp-community/projects/3) ### `2.1-参与项目开发` From bd9cef867e6625b61e0baa444911889da0ffa25d Mon Sep 17 00:00:00 2001 From: SPeak Date: Mon, 2 Feb 2026 03:29:38 +0800 Subject: [PATCH 5/7] Update homepage/docs/teams/coreteam.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- homepage/docs/teams/coreteam.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homepage/docs/teams/coreteam.md b/homepage/docs/teams/coreteam.md index 94bff07..1c0b638 100644 --- a/homepage/docs/teams/coreteam.md +++ b/homepage/docs/teams/coreteam.md @@ -38,7 +38,7 @@ Core Team Emeriti / 曾做出过突出贡献的不再活跃的核心团队成员, 保留Write权限... - 社区官网展示 -- 誉核心团队成员的档案(贡献事迹、与社区的故事等) +- 名誉核心团队成员的档案(贡献事迹、与社区的故事等) - 核心团队成员聚会/活动(未来) ## 相关链接 From c0393dd6eb45b073e3dff68202317d2ce9930c89 Mon Sep 17 00:00:00 2001 From: SPeak Date: Mon, 2 Feb 2026 03:29:44 +0800 Subject: [PATCH 6/7] Update homepage/docs/teams/vteam.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- homepage/docs/teams/vteam.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homepage/docs/teams/vteam.md b/homepage/docs/teams/vteam.md index b0d9ec4..b7f5058 100644 --- a/homepage/docs/teams/vteam.md +++ b/homepage/docs/teams/vteam.md @@ -4,7 +4,7 @@ ## 团队成员标准 / 职责 -- 社区活跃成员并有参与过社区贡献 +- 社区活跃成员并参与过社区贡献 - 社区中项目的开发/Bugfix - 文档的编写 - 社区问题的维护/文化传播 From 1656c7a49cd54a5b3358fe1dd0826e7d04bb5a8f Mon Sep 17 00:00:00 2001 From: SPeak Date: Mon, 2 Feb 2026 03:29:52 +0800 Subject: [PATCH 7/7] Update homepage/docs/teams/vteam.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- homepage/docs/teams/vteam.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homepage/docs/teams/vteam.md b/homepage/docs/teams/vteam.md index b7f5058..4baa061 100644 --- a/homepage/docs/teams/vteam.md +++ b/homepage/docs/teams/vteam.md @@ -9,7 +9,7 @@ - 文档的编写 - 社区问题的维护/文化传播 - ... -- 至少一个成为一个项目的`committer` +- 至少成为一个项目的`committer` ## 成长