README.md 13.8 KB
Newer Older
N
NEEN 已提交
1
# SIG管理章程
2 3
简体中文 | [English](./README-EN.md)

4 5 6 7 8 9 10 11 12 13 14
# OpenHarmony社区SIG管理制度
本文档主要介绍OpenHarmony社区SIG(Special Interest Group)的管理制度,包括申请新SIG和SIG的运营、变更及终止。

## 一、申请新SIG

### 1.申请准备

- 开发者需仔细阅读[SIG管理制度],了解OpenHarmony社区SIG的运作规则,提前准备好下文所述的SIG章程、SIG制度等文档;
- 开发者可通过[OpenHarmony zulip相关频道](https://zulip.openharmony.cn/join/u7vafdcbyia32bsssygwbbee/)提前告知社区新建SIG的意向,寻找兴趣相投的开发者共同参与;
- 申请新SIG需确认其技术方向的唯一性与可行性:
- OpenHarmony社区每个SIG孵化的技术方向都不同,发起的申请如果属于OpenHarmony社区已有的技术方向,则会被建议直接参与相关SIG共建;
15
- 开发者可查看OpenHarmony社区[已有SIG列表](https://gitee.com/openharmony/community/tree/master/sig),同时查看[历史DEV邮件列表](https://lists.openatom.io/hyperkitty/list/dev@openharmony.io//),以确认没有相同技术方向的SIG存在或处于申请中;
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
- 申请成立SIG的技术项目应能够最终转化为OpenHarmony的新增部件;
- 如查阅相关信息后仍对技术方向问题存有疑虑,开发者可通过邮件列表dev@openharmony.io咨询PMC。

### 2.提交申请
SIG发起人参照[SIG章程模板]创建SIG提案初稿,以附件形式发送给dev@openharmony.io,邮件标题为:
- **SIG-Charter-Proposal-SIG XXX+简要介绍**,如`SIG-Charter-Proposal-SIG Test+OpenHarmony开发自测试能力构建`

### 3.PMC评审提案
- SIG发起人接受PMC问询,对SIG提案进行必要的说明,并根据PMC的指导意见修改提案,通过原申请邮件与PMC进行沟通,直至PMC无疑问;
- 初审过程中,SIG提案可能会因为不符合OpenHarmony社区整体技术规划或已有相关技术方向的SIG存在而被拒绝;
- 收到PMC邮件回复同意后代表初审通过,SIG可发起人[申报PMC例行会议新建SIG议题](https://etherpad.openharmony.cn/p/pmc),按时接入PMC会议,介绍待新建的SIG,并请PMC批准SIG成立以及相关SIG仓库和沟通渠道的建立;
- 评审会议形成会议纪要并附PMC评审意见。

### 4.提交PR 
SIG发起人收到PMC评审反馈、确认SIG提案通过后,执行以下操作:
- fork OpenHarmony社区仓库到本地,在`OpenHarmony/community/sig`仓库内新建SIG文件夹,文件夹名称为“sig-XXX”;
- 创建该SIG的`README.md``OWNERS.md`文档,文档格式请参考[其他SIG](https://gitee.com/openharmony/community/tree/master/sig),如sig-driver的[README.md](https://gitee.com/openharmony/community/blob/master/sig/sig-driver/sig_driver_cn.md)[OWNERS.md](https://gitee.com/openharmony/community/blob/master/sig/sig-driver/OWNERS)
- 更新`sigs.json`文档,参考以下样例: 

**sigs.json 文件格式**
| 字段 | 说明 |
|:---|:---|
| sig-name | SIG名称 |
| projects| gitee仓名 |
| project-path | OpenHarmony下的归档路径,若不涉及回合OpenHarmony填写NONE |

**sigs.json 样例**
```
"sigs-List":[
{
"sig-name":"sig-python",
"projects":"https://gitee.com/openharmony-sig/python",
"project-path":"python/"
},
{
"sig-name ":"sig-updates",
"projects":["https://gitee.com/openharmony/startup_appspawn_lite", "https://gitee.com/openharmony/startup_bootstrap_lite"]
"project-path":["base/startup/appspawn_lite", "base/startup/bootstrap_lite"]
},
]
}
```
完成上述文档创建、更新后,SIG发起人提交一个Pull Request(PR),请求将以上更新合入主干,PR中附PMC评审意见等相关资料。 

该PR由Community仓的Committer审核通过后,相关更改被合并至Community仓,新SIG成立。

## 二、SIG运营

### (一)SIG仓库及沟通渠道
1. SIG使用社区统一基础设施开展工作和交流,包括Gitee仓库和邮件列表。 
2. 新SIG负责人在[OpenHarmony/community仓库](https://gitee.com/openharmony/community)提交Issue,申请为该SIG新建仓库及邮件列表。 
3. Issue中应注明仓库路径、邮件列表名称以及新SIG的Leader和Committer,并附[前述PMC评审意见](#3.PMC评审提案),通过在Issue中[@wanchengzhen](https://gitee.com/wanchengzhen)[@im-off-this-week](https://gitee.com/im-off-this-week)通知Sig Architecture评审。
4. Sig Architecture评审通过后:
- SIG负责人联系[社区代码仓管理员](https://gitee.com/landwind)执行建仓操作;
- SIG负责人联系[邮件列表负责人](likang@openatom.org)创建邮件列表:
- 需详细说明邮件列表名称和管理员邮箱(一般为SIG负责人),
- 邮件列表创建成功后,SIG负责人进入[OpenHarmony项目群邮件列表登陆页面](https://lists.openatom.io),通过管理员邮箱登录后可管理邮件列表(批准成员加入或审核邮件等),其他人可订阅查看。
5. SIG可根据需要自行组建微信群等其他社交群组。 

### (二)完善SIG制度文档
1. SIG章程与制度文档需遵循OpenHarmony社区章程与相关制度。
2. 每个SIG至少要有`README.md``OWNERS.md`二个文档,详细说明SIG的工作范围、工作目标、成员、沟通方式、决策机制、例行会议时间、如何参与贡献等,且需要PMC批准。 
3. SIG如有特殊贡献文档,需遵循[OpenHarmony社区贡献原则](https://gitee.com/openharmony/docs/blob/master/zh-cn/contribute/Readme-CN.md)

### (三)SIG成员及职责 

SIG的主要成员是Leader和Committer,每个SIG初始成员不少于3人。 

`README.md``OWNERS.md`文档中需详细列出SIG Leader和Committer。SIG Leader和Committer的更换及任命需PMC批准。SIG可根据需要增加其他岗位角色,但需PMC批准。 

#### **1.Leader**
每个SIG至少有1名Leader。 
作为SIG组的管理者,Leader负责SIG的运营及维护,同时直接参与上游或周边组织的协调。 
初始Leader由SIG创建时指定,后继人选从Committer中选出。 
如SIG组内暂无Committer或人数较少,Committer的职责由Leader兼任。SIG Leader拥有SIG子领域的代码仓管理员权限。

**主要职责:**
- 定义SIG的工作范围及业务目标。
- 确定SIG的技术路线:包括规划和决策SIG技术方向、路标规划、架构演进。
- 吸纳并发展Committer参与SIG的项目孵化、文档完善及社区推广。
- 定期在PMC会议中汇报SIG孵化项目及SIG运营进展,并基于PMC的指导建议完成相关改进。
- 召集SIG组会议:定期召集SIG组会议,决策SIG组内上升的争议。
- 参与社区协调活动:作为SIG的代表参与社区活动和特定会议。

#### **2.Committer**
每个SIG至少有2名Committer。 
初始Committer由SIG创建时指定,后继人选从社区Contributor中选出,由Leader和Committer提名、SIG当前贡献者全体投票表决产生。 
Committer负责代码审核、主干代码合入及特性设计方案审核和批准,拥有SIG子领域的代码仓写入权限。 

**主要职责:**
- 处理SIG内及社区与本SIG相关的Issue、PR、邮件列表问题等。
- 辅导Contributor快速理解SIG领域架构设计并提升代码开发技能。
- 跟踪依赖性问题:修复因代码更新导致的本SIG内被破坏的依赖关系。
- 对本SIG内的安全问题进行分类和处理,参与安全团队的安全问题,维护SIG组内的安全规范和要求。 

### (四)SIG治理

#### 1.会议组织
- SIG需定期召开例行会议,每双周至少半小时,由SIG Leader主持;
- 会议议程提前在邮件列表及官网进行公布;
- 会议纪要及时发布并保存在`OpenHarmony/community/sig/sig-XXX/meeting-minutes`内。

#### 2.社区共建
- SIG Leader至少两个月一次,在PMC例会汇报SIG工作进展,并基于PMC指导意见改进工作;
- SIG每年至少一次,由SIG Leader向社区报告SIG年度工作进展;
- 协助存在关联关系的周边SIG,联合完成临时性工作;
- 基于社区定期的SIG成果评估,表现优秀的SIG将被邀请参加社区版本发布会议。

#### 3.技术决策
- SIG内的决策遵循OpenHarmony社区的治理模式。
- SIG内采用“懒惰共识”(沉默即同意)的方式进行决策:
- 如存在争议时,由包括Leader在内的全体Committer进行投票表决,以多数票通过的形式达成共识;
- 无法在SIG内达成共识时,可上升至PMC决策。

## 三、SIG变更

### (一)增删项目或仓库
1. SIG负责人在PMC例行会议中申报议题,接受PMC问询。 
2. PMC批准增删项目或仓库后,SIG负责人:
-`OpenHarmony/community`创建Issue请求SIG Architecture支持,完成新项目仓库的配置或删除仓库,Issue中附PMC评审意见;
- 相关操作完成、Issue关闭后,更新`sigs.json`文档(参考[上文](#4.提交PR)),刷新`README.md`
- 提交PR请求合并以上修改,PR中附PMC评审意见。 
3. Community仓的Committer合并PR,完成项目或仓库更新。 

### (二)修改SIG名称、章程、成员等

#### 涉及SIG工作范围、成员变更等重大变更
1. SIG负责人在PMC例行会议中申报议题,接受PMC问询。 
2. PMC批准变更后,SIG负责人:
- fork的`OpenHarmony/community/sig`的相关SIG文件夹内刷新`README.md``OWNERS.md`、等文档;
- 提交PR,请求合并以上修改,PR中附PMC评审意见。 
3. Community仓的Committer审核并合并PR,确认变更。

#### SIG内的非重大变更
1. SIG负责人:
- fork的`OpenHarmony/community/sig`文件夹下找到相关SIG文件夹,完成修改;
- 刷新README.md等文档;
- 提交PR,请求合入以上修改。 
2. Community仓的Committer审核并合并PR,确认修改。 

区分变更重大与否的标准可参考上文[SIG的运营部分](#二、SIG运营)

## 四、SIG终止

### (一)以下情况将触发SIG终止申请: 
1. SIG已达到预期目标,无需再投入; 
2. SIG未达成预期目标,超过2个月不活跃; 
3. SIG违反OpenHarmony社区PMC或SIG制度; 
4. SIG Leader、Committer等成员流失,无法支撑SIG正常工作。 

### (二)SIG QA定期检查各SIG状态,并定期在PMC会议中汇报各SIG活跃度:
1. 对于已达到预期目标的SIG,由SIG Leader通过邮件列表dev@openharmony.io提交SIG终止申请,PMC评估后进行终止操作。 
2. 对于未达到预期目标但不活跃的SIG,PMC委派PMC成员进入该SIG进行尽职调查,并组织SIG整改,整改时间2个月。SIG超过2个月依然不活跃时,由SIG Leader或QA-SIG Leader提交SIG终止申请,PMC评估后进行终止或合并操作。

### (三)终止流程:
1. 向dev@openharmony.io发送电子邮件,通知社区解散或合并SIG。 
2. SIG负责人在`OpenHarmony/Community`下创建一个PR,请求合并以下更改: 
- 归档代码仓([归档地址](https://gitee.com/openharmony-retired)
- 删除SIG共享日历,确保已上传所有SIG会议回放及会议纪要(`OpenHarmony/Community/archive/sig-XXX/meeting-minutes`)。 
- 将现有Community仓的SIG目录移至`OpenHarmony/Community/archive`文件夹内。 
- 将SIG内每个子项目的所有权转让给项目外部的新SIG,或者直接废弃子项目; 
- PMC决策合并SIG后,原SIG相关交付件由原SIG Leader按时按质交接给新SIG Leader,交接期为一个月。 
- 停用或转移主仓库下的SIG仓。 
- 停用或通过SIG-Testing转让SIG内所有测试基础设施作业。
- 删除或弃用SIG的所有标签。
- 删除或重命名任何引用该SIG的社区组织。
- 更新`sigs.json`文档。
183

N
NEEN 已提交
184
## SIG数据存放和管理方式
185
SIG信息记录统一归档在OpenHarmony/community仓库的sig目录内:
J
jinguang 已提交
186
1. sig_xxx.md/sig_xxx_cn.md:包括SIG组工作目标和范围、SIG管理的repository及描述、SIG组织会议、SIG成员。
187

J
jinguang 已提交
188 189 190 191 192
2. sigs.json:为了便于工具自动提取,其中SIG的maintainer/committer信息单独备份一份至OWNER文件内,每个SIG所维护的仓库名称列表/目录结构位于sigs.json文件中。
    - OpenHarmony/community仓的sig目录下存在一个sigs.json文件,这个文件中管理从PMC看到的所有SIG的信息。
    - sigs 由 PMC 修改和维护,新sig申请由对应的 maintainer 提交PR,经过PMC审视后合入。
    - sig 独立目录下的sig_xxx_cn.md/sig_xxx.md 为 sig 的信息展示区。其中SIG基本信息需按模板留空,新建SIG时填写完整。
    - sig 独立目录下的OWNER存放相应sig的maintainer。
193
  
J
jinguang 已提交
194 195
3. 代码的管理
    - 代码在[sig-manifest仓](https://gitee.com/openharmony-sig/manifest)下统一管理。
196
    
J
jinguang 已提交
197
    - 需要各leader维护本组内对应仓的 .xml 文件。
198
    
J
jinguang 已提交
199
    - 多个单位参与,可向leader提出建仓需求,由leader向社区提建仓pr。
200
  
J
jinguang 已提交
201 202 203
4. 文档的管理
    - 各sig组的公共文档(包括会议纪要、会议材料等)需放入[sig-content](https://gitee.com/openharmony-sig/sig-content) 仓对应组的文件夹内。
    - 与各sig组子任务密切相关的技术文档可放到任务对应的代码仓内。
204
  
J
jinguang 已提交
205
5. 任务进度
206

J
jinguang 已提交
207 208
    - 任务进度以在对应任务仓下提issue形式更新。
    - 作为跟踪进度的issue需要打上特定的标签,标签暂定为 **sig_taskprogress**。
209

J
jinguang 已提交
210 211
6. 开源协议的选择
   - 建议开发者使用Apache 2.0 开源协议。  
212 213


N
NEEN 已提交
214
###  sigs.json 文件格式
215 216 217
| 字段 | 说明 |
|:---|:---|
|  sig-name | SIG名称 |
218
|  projects| gitee仓名 |
N
NEEN 已提交
219
|  project-path | OpenHarmony下的归档路径,若不涉及回合OpenHarmony填写NONE |
220

N
NEEN 已提交
221
### sigs.json 样例
222
```
223 224
"sigs-List":[
      {
225 226 227
         "sig-name":"sig-python",
         "projects":"https://gitee.com/openharmony-sig/python",
         "project-path":"python/"
228 229
      },
      {
230 231
         "sig-name":"sig-updates",
         "projects":["https://gitee.com/openharmony/startup_appspawn_lite", "https://gitee.com/openharmony/startup_bootstrap_lite"],
232 233 234 235
         "project-path":["base/startup/appspawn_lite", "base/startup/bootstrap_lite"]
      },
   ]
}
J
jinguang 已提交
236
```