旷视研究院 · 2021年12月08日

开源深度学习框架项目参与指北 - 内含易上手任务清单

想参与开源,但不知从何下手?
MegEngine 社区整理了适合新手的简单任务 - 完善 MegEngine API Docstring
来吧,跟着本篇点亮你 GitHub 个人主页的第一块小绿砖 :)

任务解读

目前,MegEngine 的 Python 文档字符串从内容完整度、情景覆盖描述、质量等方面还有极大的优化空间,希望能够得到社区同学的帮助,完善 MegEngine API Docstring。

我们整理了一份 API 列表 方便大家领取,同时也欢迎在此范围外持续贡献。

在参与过程中,请注意:

  • 提交的 API Docstring 建议至少包括以下内容(英文):
  • 该 API 功能简介
  • 输入参数说明
  • 返回值类型及说明
  • 规范符合 《数组 API 标准》
  • Pull Request 描述中,尽量提供该 API 的中文翻译

同时,可适当添加:用例(Example)、笔记(Note)和警告(warning)信息等。

如何参与

1、账号准备

首先,需要具备:一个 GitHub 账号( 注册);基本的 Git 使用知识 (官方文档)。

2、找到想要做的任务

在 MegEngine Python API Docstring Enhancement 项目 中,找到一个自己希望帮助 MegEngine 团队改进文档字符串的 API。

通过项目列表中 Assignees、Status 状态或点击意向 API 名称,进入 issue 页面查看任务领取/完成情况:
image.png

  • 若该 API 改进的 Issue 已经被 Assign 给某用户,则表明此用户将作为最终负责人,其 Pull Request 最终将被合并到 MegEngine 主仓库的代码中,此 API 任务已不可领取
  • 若该 API 对应的 Issue 没有任何 Pull Request 进行了 Link,没有 Assignee,表明是个需要被做的 API 改进任务
  • 对于尚未被 Assign 的 Issue,任何用户都可以带着自己的 Pull Request Link 到对应 Issue 表明希望成为负责人(为了防止无意义占坑,必须有 PR 才能申请)。
  • 可能会出现一个 Issue 下有多个用户的 Pull Request 进行了 Link 的情况,即存在针对 API 文档改进的竞争实现, 此时 Issue 负责人的分配准则是:
  • Pull Request 中的改进必须符合基本要求;
  • 对于多个符合要求的 Pull Request,采取先到先得的规则。
  • 该 Issue 确认负责人后,MegEngine 团队会将该 Issue Assign 给对应的用户,并给出一个完成的截止日期。如果到截止日期该 Pull Request 未被合并,将考虑 Assign 给其他用户。

3、执行相应改进,创建 Pull Request

接下来,我们将以 megengien.functioanl.arange 举例,创建一个针对 arange API 文档进行改进的 Pull Request。流程如下:

1、找到 MegEngine 在 GitHub 的地址:
https://link.zhihu.com/?target=https://github.com/MegEngine/MegEngine
2、点击 Fork 按钮( 详见:GitHub 操作指南

3、Clone Fork 后的 repo 到本地,在 git 中输入如下指令 :

 $ git clone git@github.com:{username}/MegEngine.git

其中,username 对应你的个人 GitHub 用户名。
4、基于 master 分支创建一个新的分支(例如 docstring-arange ),在此新分支上修改 API 文档字符串内容:

$ git checkout -b docstring-arange

找到 [megengine.functional.arange](https://www.zhihu.com/search?q=megengine.functional.arange&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22article%22%2C%22sourceId%22%3A440771034%7D) API 对应的源码位置 imperative/python/megengine/functional/tensor.py,修改文档字符串内容。

查看 Git 状态,添加修改过的文件,使用 commit 记录修改历史:

 $ git add imperative/python/megengine/functional/tensor.py
 $ git commit -m "docs(mge/functional): update functional.arange docstring"  
    
  $ git push origin docstring-arange

5、此时在 GitHub 打开你 Fork 的仓库地址,会有相关的提示:

点击 "Compare & pull request",此时会创建一个从你的分支到上游 MegEngine 主分支的 Merge 请求。在描述中需要说明做了什么样的相关改进,并 Link 对应的 Issue:

image.png

  • 为了方便讨论和审核,请尽可能丰富 Pull Request 的描述内容;
  • Pull Request 描述中需要引用对应 API 的 Issue 编号(如 #227),以自动 Link。
    image.png

(更多手把手带飞步骤,可参考 开发者贡献指南

注意:对于首次在 MegEngine 项目中提交的 Pull Request,提交后需要根据 cla-bot 评论完成 CLA 协议签署:

在确保所有的 CI 状态都为 ✅ 后(如遇到 ❌ 提示,可以点击 details,查看具体原因,并对应修正),则会进入下一步的 Review 流程。

4、后续的讨论和修改,直至被合并

开发者们彼此将针对每个 API 文档改进的 Pull Request 进行更加详细而深入的讨论,以追求统一的风格与更高的文档质量。

被至少两名 Reviewer 给出 LGTM 后,Pull Request 将会被 Merge,在 Project 中,对应的 API Issue 会变成 Done 状态。

恭喜成为 MegEngine Contributor!

欢迎加入 MegEngine 社区

我们为每一位 Contributor 准备了专属身份徽章和限量社区贡献礼 - 「纪念丹炉」。
image.png

MegEngine Contributor 徽章
image.png
MegEngine 纪念丹炉

  • 已是 MegEngine 社区 Contributor (在 https://github.com/MegEngine/ 下任一自有 repo - MegEngine、Models、Hub、Documentation 等,有 pr 合并记录)的同学,可填写 登记表单 ,我们会在核查 GitHub ID 及资料信息无误后,逐一安排邮寄。
  • 即将加入社区的同学,你的首个 Pull Request 被 Merge 后,会收到 MegEngine 团队发来的社区欢迎邮件,查收邮件并填写邮件内的领取表单。然后就可以耐心等待你的社区贡献礼啦!
首发:知乎
作者:MegEngine Bot

专栏文章推荐

欢迎关注旷视研究院极术社区专栏,定期更新最新旷视研究院成果
加入旷视:career@megvii.com
推荐阅读
关注数
7710
内容数
164
专注旷视研究院学术论文解读推送,涵盖计算机视觉,文字识别等
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息