Skip to content

Commit

Permalink
Merge pull request openhydra#1 from zhangjinnan/init-governance
Browse files Browse the repository at this point in the history
init governance for OpenHydra.
  • Loading branch information
simonyangcj authored Mar 11, 2024
2 parents 5d9f574 + 2676c40 commit 01823bc
Show file tree
Hide file tree
Showing 9 changed files with 172 additions and 1 deletion.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.idea
.vscode
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]
Copyright 上海九州未来亓绚科技有限公司

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
114 changes: 114 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# OpenHydra治理框架

本文档概述了一组政策,以便为贡献者加入**OpenHydra**项目提供公平的环境和开放的贡献流程。

## 治理模式

**OpenHydra**项目的个人贡献者可以成为团队的成员,每个团队都有明确的目的与职责以及所负责维护的git库列表。

团队通过在Github上的Issue与Pull Requests等功能进行协作与共创。理想情况下,团队会根据职责边界进行划分,来承担**OpenHydra**项目在不同领域的职责。一个代码库通常应该只属于一个团队,以便于多个团队可以在不同领域进行合作。

例如:
* **核心团队****RFC流程**和相关**设计原则**拥有权威,但不能直接推送到OpenHydra代码库。
* **维护团队**有权管理OpenHydra代码库并提交RFC以制定符合**OpenHydra核心设计原则**的路线图。
* **核心团队****维护团队**合作,以确保新的提案不会带来不必要的风险或成为代码维护的负担。
* **维护团队**通过对OpenHydra代码库的Pull Requests来指导提案的规划和实施,并维护**OpenHydra**项目所涉及的基础代码库、基础配置、CI\CD环境、测试环境和资源等基础设施。
* **社区团队**通过线上、线下的活动吸引OpenHydra贡献者和用户,并建立开源共赢的生态合作。

随着更多职责边界被发现,团队可能会从更大的团队中分离出来。应特别注意承担过多职责的团队,因为可能会忽略重要的领域。

#### 贡献者

贡献者描述可以提交到`./contributors`目录下,提交的Pull Requests将由核心团队成员进行审查。欢迎贡献者们提交,之后你的相关信息会体现在对应的发布贡献者清单中。

该文件的名称应与您的github账号一致,每个./contributors/*.yml 文件都有以下字段:

* `name` - 贡献者的真实姓名,或者如果不想公开,也可以使用昵称。
* `github` - 贡献者的github登录名。

每个贡献者都将被授予OpenHydra Github组织的成员资格。这并不会带来太多权限的提升,因为所有代码库的访问权限都是由所负责的团队单独管理。

#### 团队
团队描述可以提交到`./teams`目录下。提交的Pull Requests将由所负责的团队成员审核,核心团队将会联系所有受影响的团队或个人进行审核。

每个 ./teams/*.yml 文件都有以下字段:

* `name` - 团队名称,与文件名相同,使用英文小写。
* `purpose` - 团队关注点的一个简要描述。
* `responsibilities` - 团队职责的详细列表,或一个职责列表说明的链接。
* `members` - 团队的贡献者列表,例如`./contributors/foo.yml``foo`
* `repos` - 团队的Github代码库列表。

每个团队都必须有一个明确的目的来说明其目标,团队还负责维护其职责清单。这样做可以为新人澄清团队的范围,并且更容易判断团队何时超负荷从而决定何时对团队进行拆分或重组。

每个团队都列出了与`./contributors`下的文件名相对应的成员(不带 .yml)。

每个团队都列出了具有维护权限的Github代码库。

虽然每个团队都可以确定自身的工作模式与流程,但还是强烈建议每个团队的工作都能做到公开透明,无论是在Github上还是在其他可以公开访问的工具上,只要这样做有利于团队与社区发展。

建议:团队流程可以在一个由团队专门管理的新代码库中定义。可以通过向此代码库提交PR来创建团队代码库。请参阅[代码库](#代码库)

**投票**

除非通过团队自己的流程另有说明,否则任何决策都是通过团队成员投票达成。

每项决策都需要`66%`以上的投票比例才能通过。(实施上述流程也将需要`66%`的投票比例。)

投票可以通过PR审查、发表评论或其他某种形式的记录来发起,过程和结果最好是能永久保存。

团队不需要有指定的领导者,团队可以选择指定一名领导者并通过团队之间的投票来定义他们的角色和职责。

**加入团队**

要提议添加团队成员(您自己或代表其他人),请先提交将他们添加为贡献者PR,然后再提交将他们列为所需团队成员的PR。

将某人添加到团队的PR需要足够多的批准审阅者才能通过投票过程。审查PR的社区团队成员负责根据目标团队的规模和投票流程确定所需的投票数,并在获得必要的票数后合并PR,如果无法获得必要的票数则关闭PR。

核心治理团队的加入规则并无特殊性,投票可能完全是基于成员的主观判断,加入的难度因团队而异。一般来说,没有事先交流或前期的信任基础的申请几乎肯定会被拒绝。

**离开团队**

团队成员可以随时通过提交PR将自己从成员列表中删除来选择离开团队,自愿离开团队不需要投票。

要将其他人从团队中删除,请提交PR,它将使用与加入相同的投票流程。被提名要除名的成员也一样可以参与投票。

建议:各团队定期回顾贡献者和团队成员对项目的贡献情况,来决定吸纳和移除团队成员,从而保障团队内的活跃度。

**创建新团队**

可以随时通过提交PR来申请组建新团队,由核心团队审核后组建和确定团队成员和初始职责。(只有一个成员的团队不是一件好事,所以请尽量招募团队成员。)

如果一个新团队是从更大的团队中拆分出来的,您将必须协商相关代码库的所有权,理想情况下将它们完全转移到新团队。(这显然需要得到原始团队的批准。)

## 代码库
OpenHydra项目的代码库描述放在`./repos`目录下,更新的Pull Requests将由基础架构团队审查。

每个`./repos/*.yml`文件都有以下字段:

* `name` - 代码库的名称。
* `description` - 代码库的描述。
* `topics` - 为代码库设置的主题。
* `homepage_url` - 与代码库关联的网站(如果有)。
* `has_issues` - 代码库是否启用了Issues(默认为 false)。
* `has_wiki` - 代码库是否启用了 Wiki(默认为 false)。
* `branch_protection` - 分支保护设置列表:
* `pattern` - 要匹配的分支名称模式。
* `allowed_deletions` - 是否可以删除分支。
* `required_checks` - 要合并的PR所需的状态检查。
* `strict_checks` - 要求分支在合并之前是最新的。
* `required_reviews` - 合并PR所需的批准审查数量。
* `dismiss_stale_reviews` - 当新提交被推送时关闭评论。
* `require_code_owner_reviews` - 需要代码所有者批准影响指定所有者的文件的PR。
* `deploy_keys` - 要添加到`repo`的部署密钥列表。
* `title` - 标题。
* `public_key` - 公钥。
* `writable` - 密钥是否可以推送到`repo`

所有代码库都配置为合并PR后删除分支。

代码库的永久删除必须由基础架构团队的成员手动完成。

## 修改治理模式

核心团队将审查此流程 (README.md) 的Pull Requests。
2 changes: 2 additions & 0 deletions contributors/zhangjinnan.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
name: Kevin Zhang
github: zhangjinnan
4 changes: 4 additions & 0 deletions repos/governance.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
name: governance
description: OpenHydra项目治理框架文档。
topics:
- governance
6 changes: 6 additions & 0 deletions repos/open-hydra copy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
name: open-hydra-ui

description: |
OpenHydra前台代码项目。
topics:
- open-hydra-ui
6 changes: 6 additions & 0 deletions repos/open-hydra.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
name: open-hydra

description: |
OpenHydra后台代码项目。
topics:
- open-hydra
17 changes: 17 additions & 0 deletions teams/community.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: community

purpose: |
发起和组织OpenHydra社区线上和线下活动,通过布道和推广吸引潜在用户和贡献者。
responsibilities:
- 直接参与社区官方网站、文档维护。
- 促进或者直接贡献内容创建(博客、小视频、公众号等)。
- 发起和组织OpenHydra社区活动。
- 通过活动获得使用者和贡献者的反馈,优化和迭代。
- 促进社区和其他团队之间的沟通和反馈。

members:
- zhangjinnan
- simonyangcj

repos:
- governance
20 changes: 20 additions & 0 deletions teams/core.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: core

purpose: |
设计OpenHydra核心概念, 通过RFC评审流程指导设计方向。
responsibilities:
- 建立OpenHydra社区治理模型。
- 审查RFC过程来维护OpenHydra设计原则。
- 阐明OpenHydra的设计原则。
- 通过决议流程达成对RFC的共识。
- 新团队申请设立评审和组建初期指导。
- 与@community 团队合作收集RFC的反馈。

members:
- simonyangcj
- zhangjinnan

repos:
- governance
- open-hydra
- open-hydra-ui

0 comments on commit 01823bc

Please sign in to comment.