贡献指南

本项目欢迎广大开发者体验并参与贡献,在参与社区贡献之前。请参见cann-community了解行为准则,进行CLA协议签署,了解源码仓的贡献流程。

开发者准备本地代码与提交PR时需要重点关注如下几点:

  1. 提交PR时,请按照PR模板仔细填写本次PR的业务背景、目的、方案等信息。
  2. 若您的修改不是简单的bug修复,而是涉及到新增教程或者修改教程及代码等,请务必先通过Issue进行方案讨论,以避免您的代码被拒绝合入。若您不确定本次修改是否可被归为“简单的bug修复”,亦可通过提交Issue进行方案讨论。

开发者贡献场景主要包括:

  • 反馈BUG
  • 建议特性
  • 改进文档
  • 修复问题
  • 新增教程

新增教程要求

感谢您参与CANN学习中心建设,为CANN-LEARNING-HUB注入更多价值!为了让您的贡献过程更顺畅、方案能更好地契合社区需求,以下是详细的操作指引,供您参考:

提交 RFC,达成方案共识

在正式开发前,建议您先提交一份RFC(请求评议文档,通过创建ISSUE的方式提交),方便与其他开发者充分交流方案细节、达成共识。RFC中辛苦您至少包含以下内容:

  • 样例的背景和动机:比如该教程解决了什么场景下的需求、能为其他开发者提供哪些参考价值;
  • 教学大纲设计:简要说明教程的章节目录设计,如果是单篇教程,说明各级结构设计;
  • 预计完成时间:方便社区了解开发进度,也便于后续协同支持。

提交PR,完善交付内容

当方案共识达成后,您可以提交对应的PR,并记得关联到之前的RFC。为确保课程质量,PR中辛苦您至少包含以下内容:

  • jupyter课件:根据设计好的教程大纲开发出的可交互实践;
  • 课程实践答案:教学课件中的实践题目答案;
  • 课程涉及源码:课程中的完整代码;
  • README文档:介绍教程的背景及章节目录划分,方便开发者阅读学习;

一些小提醒,让贡献更顺利

为了避免后续合入时的小波折,还有几个小细节想跟您同步:

  • 除了README或文档中需要的配图,合入的代码里请不要包含二进制文件;
  • 如果样例涉及第三方数据集的使用,只需在文档中说明数据集的下载方式、使用方法即可,无需直接提供数据集;
  • 如果您的修改涉及公共代码(非仅样例内部代码),需要确保能通过CI样例的验证;
  • 如果样例开发过程中涉及算子的新增或修改,麻烦先将对应的算子变更合入到算子仓,再推进教程合入。
  • 请检查您样例所使用的LICENSE是否合规,建议使用Apache 2.0或MIT等协议,并按照实际情况标注版权信息

样例目录结构参考

样例需要合入到contrib目录下,您可以参考以下结构组织您的代码和文档(样例名建议全部小写,多个单词之间用下划线连接,比如yolov3_inference):

├── contrib                                     # 开发者贡献样例目录
|  ├── turtoris1                                # 您的样例名(如yolov3_inference)
|  |   ├── 01_xxx                               # 第一个章节,若只有一个章节可不创建
|  |   |   ├── answer                               # answer目录:存放章节实践答案
|  |   |   ├── images                               # images目录:存放jupyter配图
|  |   |   ├── src                                  # src目录:存放样例代码
|  |   |   ├── xxx.ipynb                            # 教程jupyter文件
|  |   |   └── ...                                  # 其他章节jupyter文件
|  |   ├── 02_xxx                               # 第二个章节,若只有一个章节可不创建
|  |   ├── README.md                            # 教程README文档
|  |   └── ...                                  # 其他必要文件(如环境配置文件等)
|  ├── turtoris2
│  └── ...

如果在贡献过程中有任何疑问,随时欢迎在社区中交流;再次感谢您的支持,期待您的精彩教程!