OSSDevelopment/Syllabus.md

6.7 KiB
Raw Blame History

2022年秋冬学期——课程大纲 (subject to change)

主要内容: 开源开发方法、技术和实践OSP + 开源文化OSC + 上机实习lab + 课程项目PRJ

授课教师:周明辉 zhmh@pku.edu.cn
助教: 何昊 heh@pku.edu.cn

第1次课开源软件及其开发概述课堂lecture 09/07

  • 100课程简介课程的目的和内容以及课程的考核形式。 lecture100
  • 101开源软件概述开源的定义、历史和现状、社区结构和治理以及开源研究。 lecture101

课堂练习:

  • 课堂上访问github/gitee/gitlink设立平台账号了解一个开源项目。
  • 阅读并了解Lab1。

Lab 1练习使用git和GitHub7分

  • 注册GitHub账号
  • 加入课程的Organization
  • 创建GitHub仓库并添加commit于README.md写下目前的开源项目贡献想法

Lab 1详细要求参见WriteUp截止日期2022.09.28 11:59am

第2次课开源开发的支持平台和关键技术熟悉开源平台和Git操作课堂lecture 09/14

  • 201Git实践入门 lecture201
  • 202GitHub实践入门 lecture202
    • 了解如何用开源协作工具熟悉Github/Gitee/GitLink--建立账号和代码仓库浏览和fork项目

Lab 1扩展练习使用issue、fork和PR

  • 提交一个issue描述自己的想法相比较于第一次提交做出了哪些变化
  • 将仓库fork到自己的账号下对README.md做出相应修改并提出一个PR

Lab 1详细要求参见WriteUp截止日期2022.09.28 11:59am

第3次课开源贡献指南课堂lecture 09/21

  • 301开源参与概述怎么参与开源项目和社区。 lecture301

  • 301开源贡献指南 lecture302

    • learn how the open source community works;
    • criteria to select open source project and task to participate in.
    • 以1~2个GitHub项目/任务为例,展示如何做贡献(消除畏惧感).

Lab 2了解开源项目的开发方式和贡献流程7分

任意选择一个活跃、成熟的开源项目:

  • 了解并报告CONTRIBUTING.md的形式和内容
  • 回答有关其贡献流程、质量管理方式等若干问题

Lab 2详细要求参见WriteUp截止日期2022.10.05 11:59am

第4次课开源项目maintainer分享其维护/开发的经验。(多个项目,为开源任务选择做准备&提供依据) 09/28

  • 开源项目的分享:项目介绍、技术介绍、项目常用规则、如何参与。

第5次课如何选择任务参与GitHub Good First Issue课堂lecture 10/05

Lab 3在开源项目中选择开发任务8分

  • 选择一个或者多个感兴趣的开源项目,探索并报告:
    • 是否具有Good First Issue机制
    • 如果你需要在其中选择开发任务,你会如何做
  • 参考以下几个Good First Issue推荐网站报告其使用体验对比其优缺点

Lab 3详细要求参见WriteUp截止日期2022.10.19 11:59am

第6次课课程项目开题报告选择开源项目和开源任务 10/12

  • 学生报告如何根据criteria to select open source project and task来进行开源任务的选择

第7次课CI/CD上机实习 10/19

Lab 4CI/CD流水线搭建10分

了解三种CI流程管理工具Travis CI、GitHub Actions、Gitee Go, 知道如何使用这些工具编写简单的CI流水线并且在实践项目上完成符合要求的成功构建

Lab 4详细要求参见WriteUp截止日期2022.11.02 11:59am

4Fun: 2021课程实习过程中关于gitee go的建议https://toscode.gitee.com/pitcher/gitee-go-exercise/issues

第8次课闭源与开源软工的异同课堂lecture 10/26

第9次课PyPI/NPM等包生态系统/包管理工具,使用/打包/上载软件包(上机实习) 11/2

Lab 5Python开源软件包安装/管理/打包/上载10分

  • 使用pip进行python包的管理
  • 使用poetry进行python包的管理
  • 配置自己的python包包括配置setup.py、setup.cfg和pyproject.toml
  • 熟悉Python包生态系统平台PyPI并且通过setuptools、wheel和build三种方式将自己的python包发布到testpypi平台上注意不是pypi平台。Testpypi https://test.pypi.org 是与PyPI分离的python包发布平台使练习时发布的python包不会影响到真正的生态

Lab 5详细要求参见WriteUp截止日期2022.11.23 11:59am

第10次课开源社区及开源文化与开源布道师面对面 11/9

第11次课课程项目进度报告任务选择/合作反馈/工具使用等 PRJ-2 11/16

第12次课开源开发中的沟通实践 11/23

  • 协作和沟通的重要性如何沟通分布式沟通中的要点如何提交PR等。

Lab 6Linux Kernel沟通实践8分

阅读Linux Kernel中的沟通实践相关资料体会总结开源沟通的最佳实践8分

  • 提交issue时如何参与讨论如何沟通
  • 提交pr时如何沟通

Lab 6详细要求参见WriteUp截止日期2022.12.07 11:59am

第13次课开源开发和生态相关的挑战和研究课堂lecture 11/30

  • 开源软件供应链
  • 开源生态

第14次课开源治理与社区运营 12/7

  • 开源基金会,开源与法律,开源商业化机制
  • 社区运营例如孵化社区的渠道如何做meetup和宣传等

第15次课课程项目结题报告 PRJ-3 12/14

最后一次课之后需要提交课程项目最终报告LaTeX格式截止日期2022.12.28 11:59am

课程项目的详细要求参见WriteUp

评分标准

  • 课堂表现10分
    • 上课参与讨论、提问若点名未到且未事先请假一次扣2分最多10分
    • 课堂表现优秀者,视情况酌情加分
  • 上机实习Lab6个共50分
    • Git/贡献指南/GFI/沟通7~8分一个共30分
    • CI/CD和包管理10分一个共20分
  • 课程项目PRJ40分
    • 3次presentation开题/中期/结题每次5分
    • 期末报告10分
    • 最后的贡献结果15分