昇腾CANN community 仓:社区治理与贡献指南
摘要: CANN开源社区的community仓是社区治理核心仓库,包含治理文档、流程模板和活动组织三大功能。社区治理分为技术委员会、维护者和贡献者三层结构。贡献流程包括找贡献点、提Issue、开发、提PR、Code Review和合入发布,需严格遵守模板和规范。Code Review标准涵盖代码规范、测试覆盖、性能数据和文档更新。成为维护者需满足贡献记录、社区声誉和技术能力要求。社区定期举办技术分
前言
想给 CANN 开源社区做贡献,但不知道从哪入手。提 Issue、提 PR、审稿、发布 Release,这套流程有规矩。community 仓是昇腾CANN 的社区治理仓库,位于第一层——应用与加速库(边缘计算场景)。这个仓里放了所有社区治理的文档和模板。这篇文章拆开看怎么参与社区贡献。
community 仓的定位
community 仓不是代码仓库,它是社区治理仓库。位于 CANN 开源社区的顶层,跟 cann-learning-hub、samples、models 这些仓库平级。
它的核心功能是三块:
- 治理文档:社区章程、行为准则、决策流程、争议解决机制
- 流程模板:Issue 模板、PR 模板、Release 模板、Code Review 模板
- 活动组织:社区活动的组织文档(竞赛、Meetup、开发者大会)
换个角度看:如果你想参与 CANN 开源社区,第一个要读的就是这个仓库里的 GOVERNANCE.md 和 CONTRIBUTING.md。
社区治理结构
CANN 开源社区的治理结构分三层:
第一层是技术委员会(TSC)。由 7 位资深贡献者组成,负责技术方向的决策。比如:要不要引入一个新的算子仓库、CANN 的版本 Roadmap 怎么定、哪些 PR 可以破格合入(绕过正常审稿流程)。TSC 的会议纪要放在 meetings/tsc/ 目录下,对社区公开。
第二层是维护者(Maintainers)。每个仓库有一到多位维护者,负责日常审稿和 PR 合入。维护者有权力 approve PR、关闭 Issue、管理 Release。如果你想成为某个仓库的维护者,需要先在那个仓库里做 5+ 个高质量贡献,然后由 TSC 投票决定。
第三层是贡献者(Contributors)。任何人都可以在仓库里提 Issue 或 PR,成为贡献者。贡献者的 PR 需要维护者 approve 才能合入。
贡献流程
给 CANN 社区做贡献,标准流程是:
第一步:找贡献点。可以去这些地方找:
issues/目录里标记为help wanted的 IssueGOVERNANCE.md里列出的 Good First Issue 清单- 自己在使用 CANN 时发现的 bug 或可以改进的地方
第二步:提 Issue。如果是 bug,先提 Issue 描述问题复现步骤。如果是新功能,先提 Issue 描述功能需求和设计思路。Issue 要用仓库提供的模板(ISSUE_TEMPLATE.md),填好所有必填项。
第三步:Fork 仓库并开发。把目标仓库 Fork 到自己的 AtomGit 账号下,然后在本地开发。开发时要遵守代码规范(CODE_STYLE.md),比如:Ascend C 代码的缩进是 2 空格、PyTorch 适配代码的命名用 snake_case。
第四步:提 PR。开发完后提 Pull Request,用 PR 模板(PR_TEMPLATE.md)填好:改了什么、为什么改、怎么测试。PR 要关联之前提的 Issue(在 PR 描述里写 Closes #123)。
第五步:Code Review。维护者会来审稿,提出修改意见。你需要根据意见修改代码,然后重新推送。这个过程可能要来回几轮。
第六步:合入和发布。审稿通过后,维护者会合入你的 PR。如果改动比较大,会等到下一个 Release 才发布。如果改动比较小(比如修了个 bug),可能会尽快发布 patch 版本。
Issue 和 PR 模板
community 仓提供了标准的 Issue 和 PR 模板,确保所有贡献都符合格式要求。
Issue 模板分三类:
Bug Report 模板:
## Bug 描述
(简明描述 bug)
## 复现步骤
1. (步骤1)
2. (步骤2)
3. (步骤3)
## 预期行为
(你期望的正确行为)
## 实际行为
(实际发生的错误行为)
## 环境信息
- CANN 版本:(比如 8.0.RC1)
- NPU 型号:(比如 Ascend 910)
- 操作系统:(比如 Ubuntu 22.04)
## 附加信息
(日志、截图、核心转储等)
Feature Request 模板:
## 功能描述
(简明描述你想要的功能)
## 使用场景
(什么场景下需要这个功能?)
## 设计方案
(如果有初步设计思路,可以在这里描述)
## 替代方案
(有没有其他实现方式?)
Question 模板:
## 问题描述
(简明描述你的问题)
## 我已经尝试过
(描述你已经做过的尝试)
## 补充信息
(补充任何有帮助的信息)
PR 模板:
## 改动描述
(简明描述这次 PR 改了什么)
## 关联 Issue
Closes #(Issue 编号)
## 改动类型
- [ ] Bug 修复
- [ ] 新功能
- [ ] 性能优化
- [ ] 文档更新
- [ ] 重构
## 测试方法
(描述怎么测试这次改动)
## 检查清单
- [ ] 代码符合规范(`CODE_STYLE.md`)
- [ ] 通过了所有单元测试
- [ ] 更新了相关文档
- [ ] 提交了测试用例
Code Review 标准
CANN 社区的 Code Review 有几个硬性标准,不达标会被打回:
代码规范:缩进、命名、注释都要符合 CODE_STYLE.md 的要求。Ascend C 代码用 2 空格缩进、类型和函数名用 PascalCase、变量名用 snake_case、注释用 // 且句尾加句号。
测试覆盖:新功能必须有单元测试,bug 修复必须有回归测试。测试代码放在 testcases/ 目录下,用 Google Test 框架写。
性能数据:如果改动影响性能(比如改了算子实现),必须提供性能数据,证明没有回退。性能数据要用 msprof 工具采集,放在 PR 描述里。
文档更新:如果改动影响用户接口(比如改了算子原型),必须更新文档。文档放在 docs/ 目录下,用 Markdown 格式写。
无敏感信息:代码和文档里不能包含敏感信息(比如内部 IP、密码、未公开的 Roadmap)。
成为维护者
如果你想成为某个仓库的维护者,需要满足这些条件:
- 贡献记录:在过去 6 个月里,在这个仓库里做 5+ 个高质量贡献(PR 合入)
- 社区声誉:没有违反过行为准则(
CODE_OF_CONDUCT.md),在社区里口碑好 - 技术能力:能独立审稿(理解代码改动的技术细节,能提出建设性意见)
申请流程是:先给 TSC 发邮件(tsc@cann-community.org),附上你的贡献记录和技术能力证明。TSC 会在下一次会议上投票,超过 2/3 同意就通过。
社区活动
CANN 社区定期举办活动,在 community 仓里有组织文档:
月度技术分享:每个月最后一个周六,社区邀请一位资深开发者做线上分享。分享主题涵盖算子开发、模型适配、性能调优等。分享结束后有 Q&A 环节。
季度竞赛:每个季度举办一次算法竞赛,奖金池从 5 万到 20 万不等。竞赛题目一般是算子性能优化或模型适配加速。
年度开发者大会:每年年底举办一次线下开发者大会,地点一般在深圳或北京。大会上有技术分享、竞赛颁奖、以及下一年的 Roadmap 发布。
行为准则
CANN 社区的行为准则(CODE_OF_CONDUCT.md)参考了 Contributor Covenant 2.1。核心要求是:
- 尊重:尊重所有社区成员,无论其背景、身份、观点
- 包容:欢迎所有人参与,不歧视任何群体
- 专业:保持专业态度,不发表攻击性言论
- 举报:如果看到违反行为准则的行为,可以向
conduct@cann-community.org举报
违反行为准则的处罚分三级:
- 一级:口头警告
- 二级:暂停参与社区活动 3-6 个月
- 三级:永久封禁 AtomGit 账号
为什么要用 community 仓
如果你是想参与 CANN 开源社区,这个仓库是必读的。它告诉你社区怎么运作、怎么提 Issue 和 PR、怎么通过 Code Review、怎么成为维护者。
打个比方:community 仓是社区的"宪法",所有成员都要遵守。不了解这份"宪法",就很难在社区里有效贡献。
另外,community 仓的模板能帮你提高贡献效率。用标准模板提的 Issue 和 PR,审稿人看起来更舒服,通过率更高。
仓库地址:https://atomgit.com/cann/community
更多推荐




所有评论(0)