OSSDevelopment/Assignments/Project.md

113 lines
7.8 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.

# 课程项目:为真正的开源项目做贡献!
## 目标
课程项目的首要目标是希望同学能够通过一学期的课程学习和实践,能够初步理解开源项目的运转、开发和组织模式,以便将来在需要的时候,能够加入开源项目,对开源项目做出自己的贡献,或者开始自己的开源项目。
## 主要任务
课程项目的主要任务是**对一个或多个具有一定质量水准的开源项目,做出自己的贡献**。于此同时我们安排了三次presentation和一次期末报告作为我们考核**开源贡献的质量**的重要参考。
需要注意的是贡献的项目必须是具有一定质量水准的开源项目有证据能证明高质量、被很多人使用、贡献者多等等自己建一个GitHub仓库但是不满足上述质量水准是不可以的。
由于开源贡献过程的挑战性和不确定性,我们强烈建议在课程学习的过程中,尽早开始,并且对多个开源项目尝试做贡献。不管贡献最终是否被接收,都会纳入最终的考核标准中,还请多多尝试。
## 检查清单
### 项目选择
* 是否选择了活跃、有关注度的开源项目?
* 是否能够配置好项目需要的开发环境?
* 是否对这个项目有强烈的兴趣?
* 是否对这个项目的相关领域、编程语言、技术栈比较熟悉?
* 这个项目是否有完善的开源管理机制?
### 任务选择
* 这个项目是否有比较多的待解决issue
* 这个项目是否有比较多的good first issue
* 有没有自己作为项目的用户想要去解决的问题?
* 这个项目对issue的管理机制如何
* 这个项目的贡献流程和要求如何?
## 参考资料
1. [https://opensource.guide/](https://opensource.guide/): 关于如何参与开源的各种指南
2. [https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/): GitHub官方对good first issue功能的介绍
3. [https://github.com/topics/good-first-issue](https://github.com/topics/good-first-issue): GitHub提供的good first issue主题页面
4. [https://goodfirstissue.dev/](https://goodfirstissue.dev/): 一个列出有good first issue的GitHub项目的网站
5. [https://gfibot.io/](https://gfibot.io/): 对一些GitHub项目推荐good first issue来自我们实验室
## 考核方式及评分标准
### 开题/中期/期末Presentation每个5分共15分
为了跟踪进展和提供反馈课程会安排三次presentation开题/中期/期末,时间参见[课程大纲](../Syllabus.md)每次presentation的内容要求如下对PPT模板和形式不做要求
#### 开题Presentation
1. 计划贡献的开源项目及其基本情况
2. 为什么选择这个/这些开源项目?这个/这些项目的哪些方面吸引到了你?你对这个/这些项目的了解情况如何?
3. 计划去做什么任务/解决什么issue
#### 中期Presentation
1. 选择的开源项目/任务
2. 已进行的开发和交流活动
3. 过程中遇到的事件、问题和收获
4. 未来的计划
#### 期末Presentation
1. 选择的开源项目/任务
2. 每一个贡献从提出到被接收/拒绝的过程,涉及的沟通过程和代码贡献
3. 对开源参与的总结/思考
4. 对课程的建议
对于每次presentation能够按照要求作报告且报告中包含了要求的所有内容即得5分满分。如果存在内容欠缺明显准备不充分的情况酌情扣分。
请在presentation开始前将ppt以邮件形式发送给助教xuww@stu.pku.edu.cn文件命名统一为`学号-姓名-开题/中期/期末Pre.pdf/pptx`。
### 期末报告10分
在期末presentation结束后要求提交一个期末报告作为整个开源参与过程和思考的一个正式记录也是我们评分的重要参考之一。
报告要求使用LaTeX撰写模板参见[Report/](Report/)文件夹以PDF格式提交详细要求参见报告模板。可以将报告模版文件上传到[OverLeaf](https://www.overleaf.com/)上设置编译器为XeLaTeX即可一键编译为PDF避免复杂的LaTeX环境配置。
如果合适可以直接复用你的Lab和Presentation的相关内容用于撰写期末报告。不过需要注意报告作为一个整体的逻辑完整性和一致性。
最终提交的报告评分分配如下:
* 遵循要求的报告格式1分
* “开源项目概览”小节3分
* “对开源项目的贡献”小节3分
* “总结与反思”小节3分。
每一小节的评分将根据报告的表达清晰度、思考深度、认真程度等因素综合评判,会根据优秀率的情况进行适当调整。需要特别注意的是,**报告的长度不会成为评分的标准**,希望大家把功课主要放在做开源贡献本身,及对整个过程的总结和思考上,报告简明扼要,能够表达清楚意思即可。
请在截止日期之前(具体时间参见今年的[课程大纲](../Syllabus.md)将期末报告的PDF以邮件形式发送给助教xuww@stu.pku.edu.cn文件命名统一为`学号-姓名-期末报告.pdf`。
### 贡献质量15分
评分分配基本分5分 + 工作量加分5分 + 难度加分5分
1. 基本分5分的评分标准如下
- 与一个开源项目进行了某种程度的合理交互开启issue、参与issue讨论等获得1分。
- 向一个开源项目提交了一个贡献获得2分。
- 这个贡献最终被社区接受获得1分。
- 如果是**涉及源代码变更**的贡献获得1分毕竟本课程名为《开源**软件**技术》:);是否涉及源代码变更,以助教判定为准)。
- 如果在做出贡献的过程中出现明显违背[GitHub Code of Conduct](https://docs.github.com/en/site-policy/github-terms/github-community-code-of-conduct)的行为,视情况扣分
2. 工作量加分5分采用积分制5分封顶
- (代码工作量加分)以下项目中,选择最高的加分项目:
* 如果有一个被接收的贡献代码变更行数大于20行加1分
* 如果有一个被接收的贡献代码变更行数大于100行加2分
* 如果有一个被接收的贡献代码变更行数大于500行加3分。
* **备注:** 代码变更行数为添加行数和删除行数之和;如果代码变更都是高度重复或没有技术含量的变更(例如,重新格式化代码),助教保留取消这部分加分的权力。
- 沟通工作量加分如果存在一个贡献经过反复沟通或者被社区多轮打回修改才最终被接收加1分至多有三个贡献可以通过此条规则获得加分亦即沟通工作量加分最多为3分
- (贡献数量/类型加分)以下项目中,选择最高的加分项目:
* 如果被接收的贡献数量大于等于3个加1分。
* 如果被接收的贡献覆盖了N种不同的贡献类型加N分最多通过此条规则加3分
* **备注:** 贡献类型包括修复Bug、实现新功能、优化性能、重构代码、编写文档、编写测试、协助构建/部署等等一般以开源项目的Issue Label为判定标准对于模糊的情况助教保留最终判定的权力。
- 对于没有最终被社区接收的贡献在表现出合理的交互、沟通、和努力的前提下可以按上述标准的60%获得加分。
3. 难度加分5分将由助教考虑所有学生的情况进行综合评判如果工作量加分的标准难以衡量实际的工作量和难度例如向知名、复杂、开发难度高的项目进行贡献等会适当在给分上予以倾斜同时整体根据优秀率的情况进行适当调整。