跳转至

真实贡献项目

项目目标

学生需要在课程期间完成一次真实、可追踪、符合目标社区规范的开源贡献。贡献应当解决明确问题,并接受维护者或课程同伴的评审。

项目池

课程采用分层项目池,让不同基础的学生都能找到合适任务。

A 类:课程仓库

优先从 intro2oss 选择任务,例如:

  • 修正文档中的事实、链接、命令或排版问题;
  • 补充缺失的示例、练习、图片说明或参考资料;
  • 改进导航、可访问性、构建配置或自动化检查。

这类任务范围清晰、反馈周期可控,适合作为首次贡献。

B 类:俱乐部项目

从华中科技大学开放原子开源俱乐部维护的项目中选择文档、翻译、测试、工具或代码任务。具体项目清单和可认领任务由教师在开课前发布,并标明先修知识和维护者。

C 类:外部上游项目

学生可以申请参与其他真实开源项目。选题必须在开始实现前获得教师确认,确认内容包括任务边界、社区活跃度、贡献规范、预计工作量和课程周期内的可完成性。

可接受的贡献

  • 文档、示例或翻译改进;
  • 测试用例、问题复现或 CI 改进;
  • 范围明确的缺陷修复或小型功能;
  • 符合社区要求的补丁或 Pull Request;
  • 经教师事先认可、包含完整复现证据和解决建议的高质量 Issue。

单纯收藏仓库、复制已有内容、只修改个人仓库或提交没有实际价值的格式变化,不能作为结课贡献。

项目里程碑

时间 里程碑 必备内容
第 1 次课后 项目画像 项目用途、许可证、维护状态、贡献入口和个人兴趣
第 4 次课后 贡献提案 问题、价值、范围、实施方案、验证方法和潜在风险
第 6 次课后 贡献草稿 可查看的差异、提交记录、初步验证结果
第 7 次课后 正式提交 Issue、PR 或补丁链接,以及完整测试或检查结果
第 8 次课 证据与复盘 评审响应、最终状态、经验、未解决问题和后续计划

标准工作流

  1. 阅读项目的 README、许可证、CONTRIBUTING 和行为准则。
  2. 搜索已有 Issue 和 Pull Request,确认问题没有被重复解决。
  3. 先沟通任务边界,再基于最新默认分支创建个人分支。
  4. 保持修改聚焦,使用清晰、可追踪的提交信息。
  5. 按项目要求运行构建、测试、格式或文档检查。
  6. 提交贡献并说明问题、方案、影响和验证结果。
  7. 逐条理解评审意见,修改后继续推送到同一分支。
  8. 记录贡献状态和自己的决策,不以“被合并”作为唯一成功标准。

不要覆盖共享历史

只有在目标项目允许、且分支仅由本人使用时,才整理已发布的提交历史。确需强制更新个人分支时使用 git push --force-with-lease,不要对共享分支使用 git push --force。

证据包

结课时提交以下材料:

  1. 项目、Issue、PR 或补丁链接。
  2. 能说明个人实际贡献的差异或提交记录。
  3. 本地检查、测试、构建或人工验证结果。
  4. 与维护者或评审者的公开交流记录。
  5. 一份简短复盘,说明问题、方案、反馈、修改和下一步计划。

允许同学协作研究问题,但每个人都必须有可区分、可追踪的个人贡献。

异常情况

  • 维护者没有及时回复:提交已有贡献证据和合理的跟进记录,不扣除“是否合并”相关分数。
  • 选题被他人抢先完成:保留前期分析,经教师确认后及时更换同级别任务。
  • 方案被社区否决:说明社区反馈及自己的调整过程;高质量的沟通和复盘仍可获得相应成绩。
  • 发现安全漏洞:不要公开披露细节,遵循项目的安全报告渠道并及时联系教师。