OSSDevelopment/Assignments/Lab2.md

53 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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