openEuler社区开发行为规范 V1.0
目标和愿景
openEuler社区的目标是构建支持多样性算力,全场景覆盖的操作系统开发平台。社区面向全球,欢迎全球的爱好者,使用者,开发者一起共建社区。制订openEuler社区开发行为规范(以下简称行为规范)的目的包括:
- 为众多的社区开发者提供一个可供遵循的指导意见。
- 推动社区建立良好的工程师文化。
- 保证社区的开发始终沿着正确的轨道前进。
openEuler社区的基本行为守则请参照https://www.openeuler.org/zh/community/conduct/的相关内容,本行为规范是在行为守则的基础上进一步规范开发活动中的行为。
行为规范的制订原则
行为规范是社区参与者需要遵循的一系列指导意见的总和。社区希望行为规范的制订遵循简单且具有可执行性的原则:
行为规范的覆盖范围
本行为规范主要适用于openEuler的开发过程中所涉及到的流程,基础设施,开发行为等,包含但不限于openEuler的网站,代码托管平台,邮件列表,公众号,在线沟通频道(微信,IRC,slack等)等。行为规范覆盖的人群为参与openEuler社区开发的全体成员。
行为规范指南
社区开发的核心目标
openEuler社区所有开发活动的核心目标是“推动openEuler社区成长为技术领先的国际化开源社区”,所有参与社区开发的组织,团队,个人等,都需要以这个核心为自身开发行为的衡量准绳。
社区开发关注点
社区开发者要重点关注开发流程中的几个重要的节点
提交issue阶段,issue的描述要清晰,明了。
- 对于bug类的issue,需详细说明故障引发的条件,时机以及复现的步骤。
- 对于需求类的issue,需详细说明引入需求的动机,业务诉求等。
- 关闭issue需要清晰的说明关闭的理由和原因。
开发阶段,代码等内容的开发需要遵循如下的原则。
- 合理划分开发及后续合入的粒度,避免过大或者过于细碎的代码片段合入。
- 一次开发及合入动作尽量保证是一个完备的提交。
- 合理的注释,合理的排版,保证代码等的可读性。
- 合理利用git的分支功能,尽量利用分支而非建立新的代码仓来进行代码管理。
- 尽量利用分支功能来进行版本维护等工作。
- 对于PR需要考虑对不同版本分支的影响,须及时在相关分支上进行同步。
- 在提交开发代码,特别是特性开发代码的同时,提倡同步提交测试case代码,保证开发和测试的同步。
开发完成,提交PR阶段,PR需要清晰明了,遵循如下的原则
- 一个PR对应一个事情,或者一类事情,不要把不同种类的事情混合在一个PR中。
- 保持PR的干净和整洁,去除不必要的信息和内容。
- 保证PR的描述是清晰和完整的,不能是过于简略或者传递无意义的信息。
- 保证PR的描述和PR内的commit信息是一致的。
- PR一般需要对应issue信息,例如是解决某一个issue问题,或者是完成一个issue对应的需求。保证合入内容的可追溯性。
- PR的描述以及PR中所包含的commit需要保证可读性,必要时需要对相关内容进行排版以方便检视。
- 原则上一个PR对应一个commit,如果多个commit可以进行合并操作。如果确实需要多个commit,需要保证这些commit的是完成同一个事情。
PR的检视,合入阶段,须遵循如下的原则。
- Maintainer和committer应及时对于PR进行响应处理,社区建议对于PR的相应不要超过三个工作日。
- 检视,以及检视中的往返回复信息都是非常重要的信息留存,检视和回复都要尽量做到清晰明了,尽量减少往复的次数,增加检视效率
- 对已存在的PR,特别是有很多交流回复的PR,尽量不要关闭再重新开一个新的PR,如果确需重新开启一个新的PR,需将前一个PR的相关讨论信息增加到新的PR内容中,保证信息不丢失。
- 推荐交叉检视,多重检视,避免自己提交PR,自己检视合入。重要PR推荐多人检视。
- 对于不同的项目,结合项目需要可以使用合适的语言进行交流,例如中文,英文等。也可以考虑多种语言结合的方式。
社区开发中不受欢迎的行为
社区里如下的一些行为是不受欢迎的
- 没有经过检索就提交重复的,低效的issue。推荐在提交issue之前先进行检索。
- 去除原作者copyright, license,参照性开发需要对原作者致敬,提交不符合安全规范要求的代码。
- 短时间内通过自动化工具,提交大量的PR,提交大量的处理诸如拼写错误,语法错误,日期错误,语句不通顺等“无害的错误”的修正。
- 代码不合理的拆解,形成大量的,不合逻辑的PR提交。
- 提交大量冗余的,低效的代码,特别是复制代码片段,而不是进行合理的软件划分和规划。
- 在细分领域建立重复的,低水平的项目,而不是积极探索新领域,进行新技术创新。
- 不在自己的专业领域,而是在自己的非专业领域进行低效投入。社区提倡“专业团队做专业的事情”原则。
相关问题的处理建议
- 对于“无害的错误”,社区建议将这些问题留给社区的新手,供这些新手作为熟悉社区运作流程的练习题。而且我们倡导新手利用这些问题熟悉流程以后,也不要再专门修复这类问题,应尽快找到适合自身的专业技术领域,进行高质量的有效社区贡献。
- 对于“无害的错误”,我们倡导“遇到再解决”的原则,也就是不刻意去扫描,修复这类问题,在工作中遇到了这类问题后再修复。
社区度量与开发之间的关系
社区的量化度量是国际社区的通行做法,是社区治理透明化的一种表现形式,也是衡量社区发展状况的一种方法。但是社区不倡导利用这些量化度量数据进行过度市场宣传,也不倡导将这些量化数据作为市场准入等的标准。让社区的量化度量回归“社区透明治理”和“社区发展支持”的本质。
违反行为规范的处理措施
对于违反社区开发行为规范的行为,由SIG组,TC委员等进行核实和质询。对于核实后明确存在违反行为规范的行为,SIG组内可以进行相关处理,包括但不限于批评教育,暂停相关责任人权限等。如果在SIG组内无法处理的事宜,可上报TC进行处理,TC经过决策后可以采取如下的处理措施:
- 口头或者单点告诫相关当事人和当事组织。
- 在邮件列表,TC会议纪要等进行通报批评。
- 暂停相关当事人,当事组织在社区的相关权益
- 收回相关当事人,当事组织在社区的相关权益
- 通报理事会,在理事会层面进行相关处理
当事人和当事组织进行整改后,经TC决策后可恢复当事人和当事组织的相关权益。
如何举报违反行为规范的行为
请参照https://www.openeuler.org/zh/community/conduct/的流程
结语
在社区的发展中,规范固然重要,但是良好的文化氛围和行为方式更为重要。我们在制订规范的同时,也呼吁社区的开发者,参与建设的相关团队,相关组织,特别是理事单位,共同在社区打造优秀的“工程师文化”,让工程师将全部精力专注在高质量代码,先进的特性开发,新颖的技术创新等方面。共同将openEuler社区打造成为工程师的技术乐园。