4.4 KiB
4.4 KiB
Lab 2: 了解开源项目的开发方式和贡献流程(7分)
截止日期:2024.10.10 11:59am
实践目的
初步确立一个有贡献意愿的开源项目;了解这个开源项目的贡献指南、开发环境、质量管理方式、issue管理方式等基本情况,熟悉贡献一个开源项目前需要做的准备工作,为开发任务的选择做准备。
实践流程
(2分)请列出一个你想要贡献的开源项目,提供项目的链接,用一句话简要介绍一下这是个什么开源项目,并简要回答如下问题:
- 这个项目是一个活跃的开源项目么?为什么?
- 这个项目是一个成熟的开源项目么?为什么?
- 你为什么想要对这个开源项目做贡献?
(在这里写下你的回答)
(2分)请找到并阅读这个项目的贡献指南(如项目内CONTRIBUTING.md等),提供贡献指南的链接,并简要回答如下问题:
- 这个项目的贡献指南包含了哪些内容?
- 有哪些为这个开源项目提出改进建议的方式?
- 有哪些为这个开源项目做出贡献的方式?
(在这里写下你的回答)
(3分)请尝试找到这个项目的开发文档,提供开发文档的链接,按照开发文档的描述在你的机器上配置开发环境,并简要回答如下问题:
- 这个项目是否规定了统一代码风格?采用了什么自动化工具来执行规定的代码风格?
- 这个项目有哪些测试?采用了什么测试框架(如Python的pytest)来运行测试?
- 这个项目是否配置了CI/CD流水线(例如,GitHub Actions,注意GitHub上commit边上的小绿勾)?流水线中包含了哪些检查?
- 你能否在你的机器上成功构建并运行测试?如果是,请提供一些输出结果(可附截图);如果否,请试图解释原因
(在这里写下你的回答)
提交方式
请在截止日期之前,将此markdown文件(请检查前面的问题是不是已经都回答了)发送到助教邮箱(xuww@stu.pku.edu.cn),文件命名统一为学号-姓名-Lab2.md
(例如2201110012-张三-Lab2.md
)。
评分标准
对实践流程中提出的每一块问题,均有合理的回答即得满分,否则酌情扣分。
提交超出截止日期24小时内,最多获得80%的分数;提交超出截止日期72小时内,最多获得50%的分数;超出截止日期72小时的提交不得分。
备注
- 如果一些问题不适用于你选择的开源项目,解释一下为什么不适用,并跳过此问题即可。
- 一个正经的软件项目(当然包括大多数开源项目!)通常都会采用以下方式来保证代码的正确性和质量:
- 静态分析:简单地说,静态分析工具通过对代码运行特定的算法,来检查代码是否存在常见的质量问题,或者将代码自动格式化成统一的格式(便于维护),典型的工具有Java的FindBug、Python的black、等等。
- 软件测试:简单地说,软件测试就是通过一组专门编写的程序(i.e., 测试用例)来验证软件项目的核心代码的正确性。通常项目都会使用某些开源测试框架(例如,JUnit、pytest、等等),简化编写测试用例和运行复杂测试的过程。
- 持续集成/持续部署(CI/CD):CI是指在代码提交到云端后,在一系列预先配置好的虚拟机环境下运行一系列自动化脚本,对代码库的整体质量进行检查,避免引入bug;CD是在这一步的基础上,自动化地将程序发布/部署到特定的位置;通常CI和CD会在一起配置成一个由脚本组成的流水线。常见的流水线脚本包括代码静态分析、软件测试(单元测试、集成测试、...)、自动部署(自动发布)、等等。
- 请注意为开源项目配置开发环境所花的时间可能难以预估,请务必尽早开始。