OSSDevelopment/Syllabus.md

162 lines
8.2 KiB
Markdown
Raw 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.

Copyright (c) 2023 [minghuizhou@osslab-pku]
[OSSDevelopment-course/开源软件开发&技术课程] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
# 2023年秋冬学期——课程大纲 (subject to change)
**主要内容: 开源开发方法、技术和实践OSP + 开源文化OSC + 上机实习lab + 课程项目PRJ**
授课教师:周明辉
助教: 谷海桥
## 第1次课开源软件及其开发概述课堂lecture 09/13
* 100课程简介课程的目的和内容以及课程的考核形式。 **lecture100**
* 101开源软件概述开源的定义、历史和现状、社区结构和治理以及开源研究。 **lecture101**
* 102往年贡献: 以特定GitHub项目/任务为例,展示如何做贡献;以及讲述往年同学的贡献历程和体会。(消除畏惧感)
## 第2次课开源开发的支持平台和关键技术熟悉开源平台和Git操作课堂lecture 09/20
* 201Git实践入门 **lecture201**
- 了解版本控制了解使用Githttps://missing.csail.mit.edu/2020/version-control/
* 202GitHub实践入门 **lecture202**
- 了解如何用开源协作工具熟悉Github/Gitee/GitLink--建立账号和代码仓库浏览和fork项目
课堂练习:
* 阅读并了解Lab1。
> **Lab 1练习使用git和GitHub7分两周**
> - 注册GitHub账号
> - 加入课程的[Organization](https://github.com/OSS-Dev-Course-PKU)
> - 创建GitHub仓库并添加commit于README.md写下目前的开源项目贡献想法
>
> **Lab 1扩展练习使用issue、fork和PR**
> - 提交一个issue描述自己的想法相比较于第一次提交做出了哪些变化
> - 将仓库fork到自己的账号下对README.md做出相应修改并提出一个PR并解决产生的冲突
>
> Lab 1详细要求参见[WriteUp](Assignments/Lab1.md)**截止日期2023.10.05 11:59am**
## 第3次课开源贡献指南课堂lecture 09/27
* 301开源贡献指南 **lecture301**
- learn how the open source community works;
- criteria to select open source project and task to participate in.
* 302开源课程评分依据 **lecture302**
> **Lab 2了解开源项目的开发方式和贡献流程7分两周**
>
> 任意选择一个活跃、成熟的开源项目:
> - 了解并报告CONTRIBUTING.md的形式和内容
> - 回答有关其贡献流程、质量管理方式等若干问题
>
> Lab 2详细要求参见[WriteUp](Assignments/Lab2.md)**截止日期2023.10.12 11:59am**
## 第4次课开源项目maintainer分享其维护/开发的经验。(多个项目,开拓视野&为开源任务选择做准备) 10/11
* 开源项目的分享:项目介绍、技术介绍、项目常用规则、如何参与。
## 第5次课开源任务的选择。课堂lecture 10/18
* 501如何选择开源任务参与GitHub Good First Issue **lecture501**
> **Lab 3在开源项目中选择开发任务8分两周**
>
> - 选择一个或者多个感兴趣的开源项目,探索并报告:
> * 是否具有Good First Issue机制
> * 如果你需要在其中选择开发任务,你会如何做
>
> Lab 3详细要求参见[WriteUp](Assignments/Lab3.md)**截止日期2022.11.02 11:59am**
## 第6次课课程项目开题报告选择开源项目和开源任务 10/25
* 学生报告,
1初始选择了什么开源项目和任务
2对此开源项目及其指南的认识
3贡献计划。
## 第7次课CI/CD上机实习 11/01
> **Lab 4CI/CD流水线搭建10分两周**
>
> 了解CI/CD流程管理工具GitHub Action知道如何编写简单的CI/CD流水线并且在实践项目上完成符合要求的成功构建
>
> Lab 4详细要求参见[WriteUp](Assignments/Lab4.md)**截止日期2023.11.16 11:59am**
>
> 4Fun: 2021课程实习过程中关于gitee go的建议https://toscode.gitee.com/pitcher/gitee-go-exercise/issues
## 第8次课从经典软工到开源开发。课堂lecture 11/08
* 501从经典软工到开源开发 **lecture501**
## 第9次课PyPI/NPM等包生态系统/包管理工具,使用/打包/上载软件包(上机实习) 11/15
> **Lab 5Python开源软件包安装/管理/打包/上载10分三周**
>
> - 使用Poetry进行Python包的安装、管理与打包
> - 利用依赖对Python包实现新功能
> - 将自己的Python包手动发布到TestPyPI
> - 配置自动化的CI/CD流水线实现从GitHub直接发布Python包到TestPyPI注意不是PyPI平台。[TestPyPI](https://test.pypi.org)是与PyPI分离的Python包发布平台使练习时发布的Python包不会影响到真正的生态
>
> Lab 5详细要求参见[WriteUp](Assignments/Lab5.md)**截止日期2023.11.30 11:59am**
## 第10次课开源开发中的沟通实践课堂lecture 11/22
* 601: 协作和沟通的重要性如何沟通分布式沟通中的要点如何提交PR等。**lecture601**
> **Lab 6开源项目中的沟通实践8分两周**
>
> 阅读Linux Kernel沟通实践相关资料体会总结开源沟通的最佳实践。
> or, 选择任何一个开源项目,阅读体会其沟通实践,总结最佳实践。
> 8分
>
> - 提交issue时如何参与讨论如何沟通
> - 提交pr时如何沟通
>
> Lab 6详细要求参见[WriteUp](Assignments/Lab6.md)**截止日期2023.12.07 11:59am**
## 第11次课课程项目进度报告任务选择/合作反馈/工具使用等 PRJ-2 11/29
## 第12次课开源的几个关键问题课堂lecture 12/06
* 开源为什么能成功?
* 开源模式会主宰未来吗?
* 什么是“卡脖子”问题?
## 第13次课开源开发和生态相关的挑战和研究课堂lecture 12/13
* 开源数字社会学(数据驱动的开源研究,研究对象:软件~开发者,软件供应链~个体效率/群体协作/生态持续性)
* 发现型和发明型研究案例
* 第三方库推荐,从三方库迁移的现象理解到智能推荐工具
* 新手任务推荐,从理解新手任务的性质到智能推荐工具
## 第14次课开源商业模式课堂lecture 12/20
* 公司为什么参与开源?
* 开源商业模式有哪些?
* 学生选择案例(特定公司和特定开源项目),说明其开源商业模式。
## 第15次课课程项目结题报告 PRJ-3 12/27
> 最后一次课之后需要提交课程项目最终报告LaTeX格式**截止日期2023.12.xxx 11:59am**
>
> 课程项目的详细要求参见[WriteUp](Assignments/Project.md)
## 评分标准
* 课堂表现10分
- 上课参与讨论、提问若点名未到且未事先请假一次扣2分最多10分
- 课堂表现优秀者,视情况酌情加分
* 上机实习Lab6个共50分
- Git/贡献指南/GFI/沟通7~8分一个共30分
- CI/CD和包管理10分一个共20分
* 课程项目PRJ40分
- 3次presentation开题/中期/结题每次5分
- 期末报告10分
- 最后的贡献结果15分