OpenHarmony开源社区代码贡献方式
(开源软件实践作业)
1、如何贡献
贡献过程
- 1、
fork
出自己的分支,并clone
到本地进行开发,开发完后提交到fork
仓库的远程分支上,提交信息包含signoff
邮箱 - 2、创建
fork
仓库的Pull Request
(当多仓库出现编译依赖时,在任意仓库创建PR后,将多个需要同时构建、同时合入的PR关联上述Issue
) - 3、创建对应
Issue
后,将PR
与其相关联,并通过评论start build
来触发CI门禁,进行自动测试,通过则标记为“测试通过”
语言规范(仅介绍java和打印log)
java:
- java的代码规范由数据类型,表达式,并发与多线程,输入输出,序列化,外部数据校验,性能和资源管理,其他等多个方面
- 包括但不限于除数不能为0,禁止int类型上溢、下溢,禁止直接引用null对象,异常时保证释放持有的锁,禁止使用
Thread.stop()
来终止线程,外部数据使用前必须进行校验等等
log:
- 日志级别:
- FATAL:重大致命异常,表明程序或功能即将崩溃,故障无法恢复
- ERROR:程序或功能发生了错误,该错误会影响功能的正常运行或用户的正常使用,可以恢复但恢复代价较高,如重置数据等
- WARN:发生了较为严重的非预期情况,但是对用户影响不大,程序可以自动恢复或通过简单的操作就可以恢复的问题
- INFO:用来记录业务关键流程节点,可以还原业务的主要运行过程;用来记录非正常情况信息,但这些情况都是可以预期的(如无网络信号、登录失败等)。这些日志都应该由该业务内处于支配地位的模块来记录,避免在多个被调用的模块或低级函数中重复记录
- DEBUG:比INFO级别更详细的流程记录,通过该级别的日志可以更详细地分析业务流程和定位分析问题。DEBUG级别的日志在正式发布版本中默认不会被打印,只有在调试版本或打开调试开关的情况下才会打印
- 日志内容:
- 包括但不限于日志打印内容使用英文描述,单词拼写无误,符合语法规范,准确表述日志的含义,禁止打印重复信息,在基本不可能发生的点必须要打印日志,可能重复发生的日志需要进行频率限制等诸多方面
2、社区规范
依据于《贡献者公约》(V1.4版本)中所声明:不论年龄、体型、身体健全与否、民族、性征、性别认同与表征、经验水平、教育程度、社会地位、国籍、相貌、种族、信仰、性取向,我们项目和社区的参与者皆免于骚扰。
- 有助于创造积极环境的行为包括但不限于:
- 措辞友好且包容
- 尊重不同的观点和经验
- 耐心接受有益批评
- 关注对社区最有利的事情
- 与社区其他成员友善相处
- 参与者不应采取的行为包括但不限于:
- 发布与性有关的言论或图像、不受欢迎地献殷勤
- 捣乱/煽动/造谣行为、侮辱/贬损的评论、人身及政治攻击
- 公开或私下骚扰
- 未经明确授权便发布他人的资料,如住址、电子邮箱等
- 其他有理由认定为违反职业操守的不当行为
3、许可证
鸿蒙的开源许可证普遍采用Apache License 2.0(部分子系统可能略有不同)
该许可证允许用户自由地使用、修改和分发原始代码和修改后的代码,同时保留原始的NOTICE文件。该许可证还允许贡献者自动授予用户使用其专利的权利,同时对贡献者和用户承担免责责任。
4、Commit Message 编写规范
贡献文档中仅指出git commit -sm "xxxxxx" // 提交信息包含signoff邮箱
5、Issue 报告与管理
- 1、Issue的构建
- 1、创建Issue时,需要按照对应指引模板完成对应Issue的创建和描述,标签按照模板自动分配
- 2、要求描述具体而简洁
- 2、Issue与PR的关联
- 创建PR或编辑已有的PR时,描述框输入#+I+五位Issue ID,可将Issue与PR关联
- 约束:
- 一个PR只允许关联一个Issue,关联多个Issue时无法触发CI
- 相关特性开发或bug修复涉及多个代码仓联合修改时,多个PR可关联同一个Issue
- Issue关联的PR中,不允许存在已被合入或关闭的PR,否则无法触发CI
- 若Issue已被合入或关闭的PR关联,则该Issue无法被重复使用,需重新创建Issue并进行OPEN的PR关联
- 约束:
- 通过在PR中评论“start build“即可触发CI门禁
- 多个PR关联同一个Issue时,在任一PR中评论“start build”均可触发该Issue的CI门禁
- 创建PR或编辑已有的PR时,描述框输入#+I+五位Issue ID,可将Issue与PR关联