Compare commits
15 Commits
36fd2ea6ca
...
40223d8eb8
Author | SHA1 | Date |
---|---|---|
minghuizhou | 40223d8eb8 | |
minghuizhou | c66b1cd3ad | |
Zhang Jun | f6e5414d84 | |
ufh1tx4asd | dd03730af1 | |
ghq17 | c9231013df | |
minghuizhou | d4449f9515 | |
minghuizhou | e650bcb36c | |
minghuizhou | fbb62de8b8 | |
minghuizhou | 1b1351e45d | |
minghuizhou | ddd9063c01 | |
minghuizhou | 06aa4b28d2 | |
minghuizhou | d0cced1298 | |
minghuizhou | 38349b8ea9 | |
minghuizhou | 32d714eb17 | |
minghuizhou | ba1c71cedc |
|
@ -1,6 +1,6 @@
|
||||||
# Lab 3:在开源项目中选择开发任务(8分)
|
# Lab 3:在开源项目中选择开发任务(8分)
|
||||||
|
|
||||||
**截止日期:2022.10.19 11:59am**
|
**截止日期:2023.11.02 11:59am**
|
||||||
|
|
||||||
## 实践目的
|
## 实践目的
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
## 提交方式
|
## 提交方式
|
||||||
|
|
||||||
请在截止日期之前,将此markdown文件(请检查前面的问题是不是已经都回答了)发送到助教邮箱(heh@pku.edu.cn),文件命名统一为`学号-姓名-Lab3.md`(例如`2001111320-何昊-Lab3.md`)。
|
请在截止日期之前,将此markdown文件(请检查前面的问题是不是已经都回答了)发送到助教邮箱(ghq@stu.pku.edu.cn),文件命名统一为`学号(十六进制)-姓名-Lab3.md`(例如`7735c439-张三-Lab3.md`)。
|
||||||
|
|
||||||
## 评分标准
|
## 评分标准
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Lab 4:CI/CD流水线搭建(10分)
|
# Lab 4:CI/CD流水线搭建(10分)
|
||||||
|
|
||||||
**截止日期:2022.11.02 11:59am**
|
**截止日期:2023.11.16 11:59am**
|
||||||
|
|
||||||
## 实践目的
|
## 实践目的
|
||||||
|
|
||||||
|
@ -14,13 +14,13 @@
|
||||||
* `pygraph.py`实现图数据结构,包含一个类和一些简单函数,均未实现,且结构混乱。
|
* `pygraph.py`实现图数据结构,包含一个类和一些简单函数,均未实现,且结构混乱。
|
||||||
* `pyproject.toml`是Poetry使用的依赖配置文件,文件中声明了本项目支持的Python版本(**仅支持Python 3.10**),以及本Lab中需要的各种开发依赖。
|
* `pyproject.toml`是Poetry使用的依赖配置文件,文件中声明了本项目支持的Python版本(**仅支持Python 3.10**),以及本Lab中需要的各种开发依赖。
|
||||||
* `tests/`文件夹包含若干测试。
|
* `tests/`文件夹包含若干测试。
|
||||||
* `pyproject.toml`是`pytest`的配置文件。
|
* `pytest.ini`是`pytest`的配置文件。
|
||||||
|
|
||||||
Lab 4需要为这个项目配置开发环境,补全未实现的代码,并配置一个包含所有常见阶段的CI/CD流水线。
|
Lab 4需要为这个项目配置开发环境,补全未实现的代码,并配置一个包含所有常见阶段的CI/CD流水线。
|
||||||
|
|
||||||
## 实践流程
|
## 实践流程
|
||||||
|
|
||||||
1. 请在[OSS-Dev-Course-PKU](https://github.com/OSS-Dev-Course-PKU)中创建一个**私有**GitHub仓库,名为`2022Fall-{学号}-Lab4`,为老师和助教添加访问权限,并将[Lab4/](Lab4/)文件夹中的所有文件push到仓库内(注意不是push文件夹本身)。
|
1. 请在[OSS-Dev-Course-PKU](https://github.com/OSS-Dev-Course-PKU)中创建一个**私有**GitHub仓库,名为`2023Fall-{学号(十六进制)}-Lab4`,为老师和助教添加访问权限,并将[Lab4/](Lab4/)文件夹中的所有文件push到仓库内(注意不是push文件夹本身)。
|
||||||
|
|
||||||
> 不要设置为公开仓库或者为其他同学添加访问权限,否则此Lab评分作废;若误操作,请联系助教删除仓库
|
> 不要设置为公开仓库或者为其他同学添加访问权限,否则此Lab评分作废;若误操作,请联系助教删除仓库
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Lab 5:Python开源软件包安装/管理/打包/上载(10分)
|
# Lab 5:Python开源软件包安装/管理/打包/上载(10分)
|
||||||
|
|
||||||
**截止日期:2022.11.23 11:59am**
|
**截止日期:2023.11.30 11:59am**
|
||||||
|
|
||||||
## 实践目的
|
## 实践目的
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
## 实践流程
|
## 实践流程
|
||||||
|
|
||||||
1. 在`pyproject.toml`中修改`tool.poetry.name`为`pygraph-{姓名拼音}`(例如,`pygraph-hehao`),这将是上传到TestPyPI的包名,不能与已有包冲突。
|
1. 在`pyproject.toml`中修改`tool.poetry.name`为`pygraph-{姓名拼音}`(例如,`pygraph-zhangsan`),这将是上传到TestPyPI的包名,不能与已有包冲突。
|
||||||
|
|
||||||
2. 在`pyproject.toml`中配置需要打包的文件为`pygraph.py`,这需要用到[tool.poetry.packages](https://python-poetry.org/docs/pyproject/#packages)选项。
|
2. 在`pyproject.toml`中配置需要打包的文件为`pygraph.py`,这需要用到[tool.poetry.packages](https://python-poetry.org/docs/pyproject/#packages)选项。
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
5. 在[TestPyPI](https://test.pypi.org/)注册一个账号,请注意不要在[PyPI](https://pypi.org)上直接注册。
|
5. 在[TestPyPI](https://test.pypi.org/)注册一个账号,请注意不要在[PyPI](https://pypi.org)上直接注册。
|
||||||
|
|
||||||
> [TestPyPI](https://test.pypi.org)是与PyPI分离的Python包发布平台,主要用于学习和测试,不影响真正的Python生态。
|
> [TestPyPI](https://test.pypi.org)是与PyPI分离的Python包发布平台,主要用于学习和测试,不影响真正的Python生态。TestPyPI要求[Two factor authentication (2FA)验证](https://test.pypi.org/help/#twofa),可以使用[Gauth](https://chromewebstore.google.com/detail/gauth-authenticator/ilgcnhelpchnceeipipijaljkblbcobl?hl=zh-CN&utm_source=ext_sidebar)完成验证。
|
||||||
|
|
||||||
6. 在`pyproject.toml`中添加[Twine](https://twine.readthedocs.io/en/stable/)作为开发依赖,并使用`poetry install`安装Twine。
|
6. 在`pyproject.toml`中添加[Twine](https://twine.readthedocs.io/en/stable/)作为开发依赖,并使用`poetry install`安装Twine。
|
||||||
|
|
||||||
|
@ -39,13 +39,14 @@
|
||||||
```shell script
|
```shell script
|
||||||
twine upload --repository testpypi dist/*
|
twine upload --repository testpypi dist/*
|
||||||
```
|
```
|
||||||
|
> 注意,PyPi 调整了安全策略,不再允许启用两步验证的账号使用用户名密码来上传项目了,必须使用 API 令牌来进行身份验证。登录 PyPi ,进入账户设置页,点击「添加 API 令牌」按钮创建 API 令牌。然后修改 ~/.pypirc 配置文件, 用户名字段改为__token__ ,密码字段改为刚才创建的令牌,运行上述命令即可完成上传。也可通过-u以及-p传入用户名及密码。
|
||||||
|
|
||||||
此时就可以在TestPyPI上查看你的软件包了(例如[pygraph-hehao](https://test.pypi.org/project/pygraph-hehao/0.1.0/))。
|
此时就可以在TestPyPI上查看你的软件包了(例如[pygraph-zhangsan](https://test.pypi.org/project/pygraph-zhangsan/0.1.0/))。
|
||||||
|
|
||||||
可以尝试退出poetry shell,在一个新的Python环境中运行类似如下命令以安装你的软件包:
|
可以尝试退出poetry shell,在一个新的Python环境中运行类似如下命令以安装你的软件包:
|
||||||
|
|
||||||
```shell script
|
```shell script
|
||||||
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pygraph-hehao
|
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pygraph-zhangsan
|
||||||
```
|
```
|
||||||
|
|
||||||
这里`--extra-index-url`是为了确保pygraph可以安装从PyPI上来的间接依赖。
|
这里`--extra-index-url`是为了确保pygraph可以安装从PyPI上来的间接依赖。
|
||||||
|
@ -53,12 +54,13 @@
|
||||||
然后,在Python解释器中可以尝试导入pygraph包,类似如下:
|
然后,在Python解释器中可以尝试导入pygraph包,类似如下:
|
||||||
|
|
||||||
```
|
```
|
||||||
PS D:\GitHub\OSSDevelopment> pip install --index-url https://test.pypi.org/simple/ -extra-index-url https://pypi.org/simple/ pygraph-hehao
|
PS D:\GitHub\OSSDevelopment> pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pygraph-zhangsan
|
||||||
Looking in indexes: https://test.pypi.org/simple/, https://pypi.org/simple/
|
Looking in indexes: https://test.pypi.org/simple/, https://pypi.org/simple/
|
||||||
Collecting pygraph-hehao
|
Collecting pygraph-zhangsan
|
||||||
Downloading https://test-files.pythonhosted.org/packages/f5/98/4ee92fd154f44ec9c3093b82240a21689893c3227a0965b4784c701f6214/pygraph_hehao-0.1.0-py3-none-any.whl (1.7 kB)
|
Downloading https://test-files.pythonhosted.org/packages/97/fe/0818386b03b062e7d217acbdfc20c5f1bd6cc455c06e07463f5a86da8fc1/pygraph_zhangsan-0.1.0-py3-none-any.whl.metadata (276 bytes)
|
||||||
Installing collected packages: pygraph-hehao
|
Downloading https://test-files.pythonhosted.org/packages/97/fe/0818386b03b062e7d217acbdfc20c5f1bd6cc455c06e07463f5a86da8fc1/pygraph_zhangsan-0.1.0-py3-none-any.whl (1.8 kB)
|
||||||
Successfully installed pygraph-hehao-0.1.0
|
Installing collected packages: pygraph-zhangsan
|
||||||
|
Successfully installed pygraph-zhangsan-0.1.0
|
||||||
PS D:\GitHub\OSSDevelopment> python
|
PS D:\GitHub\OSSDevelopment> python
|
||||||
Python 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)] on win32
|
Python 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)] on win32
|
||||||
Type "help", "copyright", "credits" or "license" for more information.
|
Type "help", "copyright", "credits" or "license" for more information.
|
||||||
|
@ -70,11 +72,11 @@
|
||||||
|
|
||||||
但是,像这样在本地手动发布Python包对于团队协作开发的开源项目而言,不是最佳实践。比较好的做法是在GitHub上配置CD流水线,在master分支上达成特定条件(例如使用tag标记的版本)时,自动发布到PyPI。接下来的操作将会达成这一点。
|
但是,像这样在本地手动发布Python包对于团队协作开发的开源项目而言,不是最佳实践。比较好的做法是在GitHub上配置CD流水线,在master分支上达成特定条件(例如使用tag标记的版本)时,自动发布到PyPI。接下来的操作将会达成这一点。
|
||||||
|
|
||||||
8. 借助[networkx](https://networkx.org/documentation/stable/index.html)(可以使用[`poetry add`](https://python-poetry.org/docs/cli/#add)命令添加新依赖),为pygraph实现计算最短路径的功能,并添加测试样例确保功能正确。在开发完成后,将`pyproject.toml`中的版本号修改为`0.2.0`。
|
8. 借助[networkx](https://networkx.org/documentation/stable/index.html)(可以使用[`poetry add`](https://python-poetry.org/docs/cli/#add)命令添加新依赖),为pygraph实现计算最短路径的功能,并通过测试。在开发完成后,将`pyproject.toml`中的版本号修改为`0.2.0`。
|
||||||
|
|
||||||
> 也许这里封装networkx显得很蠢,不过在实际编程中,由于图数据结构无处不在(常常蕴含在其他复杂结构化数据里),经常会有将当前的数据转换格式并应用已有图算法的情况。
|
> 也许这里封装networkx显得很蠢,不过在实际编程中,由于图数据结构无处不在(常常蕴含在其他复杂结构化数据里),经常会有将当前的数据转换格式并应用已有图算法的情况。
|
||||||
|
|
||||||
9. 你的GitHub仓库内[配置PyPI账户名和密码为Secret](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)。
|
9. 你的GitHub仓库内[配置TestPyPI的TOKEN为Secret](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)。
|
||||||
|
|
||||||
10. 添加一个新的GitHub Action流水线,使得若你的仓库[在GitHub上创建了一个新release](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#release),流水线将会构建、测试、打包pygraph并发布到TestPyPI。
|
10. 添加一个新的GitHub Action流水线,使得若你的仓库[在GitHub上创建了一个新release](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#release),流水线将会构建、测试、打包pygraph并发布到TestPyPI。
|
||||||
|
|
||||||
|
@ -87,7 +89,7 @@
|
||||||
## 评分标准
|
## 评分标准
|
||||||
|
|
||||||
- (3分)TestPyPI上有通过步骤1-7发布的Python包。
|
- (3分)TestPyPI上有通过步骤1-7发布的Python包。
|
||||||
- (3分)pygraoh实现了计算最短路径的功能并包含可通过的测试样例。
|
- (3分)pygraph实现了计算最短路径的功能并包含可通过的测试样例。
|
||||||
- (4分)配置了能够自动发布Python包的GitHub Action流水线。
|
- (4分)配置了能够自动发布Python包的GitHub Action流水线。
|
||||||
|
|
||||||
## 提交方式
|
## 提交方式
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
# Slides // 课程课件
|
|
||||||
|
|
||||||
本文件夹将随着课程进展发布相应课件,往届课件请参考[GitHub Releases](https://github.com/osslab-pku/OSSDevelopment/releases)
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
This directory provides slides related to this course (2023).
|
161
Slides/教学大纲.md
161
Slides/教学大纲.md
|
@ -1,161 +0,0 @@
|
||||||
|
|
||||||
# 2022年秋冬学期——课程大纲 (subject to change)
|
|
||||||
|
|
||||||
**主要内容: 开源开发方法、技术和实践OSP + 开源文化OSC + 上机实习lab + 课程项目PRJ**
|
|
||||||
|
|
||||||
授课教师:周明辉 zhmh@pku.edu.cn
|
|
||||||
助教: 何昊 heh@pku.edu.cn
|
|
||||||
|
|
||||||
## 第1次课:开源软件及其开发概述(课堂lecture)
|
|
||||||
|
|
||||||
* 100课程简介:课程的目的和内容,以及课程的考核形式。 **lecture100**
|
|
||||||
* 101开源软件概述:开源的定义、历史和现状、社区结构和治理,以及开源研究。 **lecture101**
|
|
||||||
|
|
||||||
课堂练习:
|
|
||||||
* 课堂上访问github/gitee/gitlink,设立平台账号,了解一个开源项目。
|
|
||||||
* 阅读并了解Lab1。
|
|
||||||
|
|
||||||
> **Lab 1:练习使用git和GitHub(7分)**
|
|
||||||
> - 注册GitHub账号
|
|
||||||
> - 加入课程的[Organization](https://github.com/OSS-Dev-Course-PKU)
|
|
||||||
> - 创建GitHub仓库并添加commit,于README.md写下目前的开源项目贡献想法
|
|
||||||
>
|
|
||||||
> Lab 1详细要求参见[WriteUp](Assignments/Lab1.md),**截止日期:2022.09.28 11:59am**
|
|
||||||
|
|
||||||
## 第2次课:开源开发的支持平台和关键技术:熟悉开源平台和Git操作(课堂lecture) 09/14
|
|
||||||
|
|
||||||
* 201:Git实践入门 **lecture201**
|
|
||||||
- 了解版本控制,了解使用Git,https://missing.csail.mit.edu/2020/version-control/
|
|
||||||
* 202:GitHub实践入门 **lecture202**
|
|
||||||
- 了解如何用开源协作工具,熟悉Github/Gitee/GitLink--建立账号和代码仓库,浏览和fork项目
|
|
||||||
|
|
||||||
> **Lab 1扩展:练习使用issue、fork和PR**
|
|
||||||
> - 提交一个issue,描述自己的想法(相比较于第一次提交)做出了哪些变化
|
|
||||||
> - 将仓库fork到自己的账号下,对README.md做出相应修改并提出一个PR
|
|
||||||
>
|
|
||||||
> Lab 1详细要求参见[WriteUp](Assignments/Lab1.md),**截止日期: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.
|
|
||||||
|
|
||||||
* 303: 以特定GitHub项目/任务为例,展示如何做贡献;以及讲述往年同学的贡献历程和体会。(消除畏惧感) **lecture303**
|
|
||||||
|
|
||||||
> **Lab 2:了解开源项目的开发方式和贡献流程(7分)**
|
|
||||||
>
|
|
||||||
> 任意选择一个活跃、成熟的开源项目:
|
|
||||||
> - 了解并报告CONTRIBUTING.md的形式和内容
|
|
||||||
> - 回答有关其贡献流程、质量管理方式等若干问题
|
|
||||||
>
|
|
||||||
> Lab 2详细要求参见[WriteUp](Assignments/Lab2.md),**截止日期:2022.10.05 11:59am**
|
|
||||||
|
|
||||||
## 第4次课:开源项目maintainer分享其维护/开发的经验。(多个项目,开拓视野&为开源任务选择做准备) 09/28
|
|
||||||
|
|
||||||
* 开源项目的分享:项目介绍、技术介绍、项目常用规则、如何参与。 (三位讲者,不同背景)
|
|
||||||
|
|
||||||
|
|
||||||
## 第5次课:开源开发的思想和原则;开源任务的实践和经验。(课堂lecture) 10/05
|
|
||||||
|
|
||||||
* 501:从经典软工到开源开发 **lecture501**
|
|
||||||
* 502:如何选择开源任务参与,GitHub Good First Issue **lecture502**
|
|
||||||
|
|
||||||
> **Lab 3:在开源项目中选择开发任务(8分)**
|
|
||||||
>
|
|
||||||
> - 选择一个或者多个感兴趣的开源项目,探索并报告:
|
|
||||||
> * 是否具有Good First Issue机制
|
|
||||||
> * 如果你需要在其中选择开发任务,你会如何做
|
|
||||||
>
|
|
||||||
> Lab 3详细要求参见[WriteUp](Assignments/Lab3.md),**截止日期:2022.10.19 11:59am**
|
|
||||||
|
|
||||||
## 第6次课:(课程项目开题报告)选择开源项目和开源任务 10/12
|
|
||||||
|
|
||||||
* 学生报告,
|
|
||||||
1)初始选择了什么开源项目和任务;
|
|
||||||
2)对此开源项目及其指南的认识;
|
|
||||||
3)贡献计划。
|
|
||||||
|
|
||||||
## 第7次课:CI/CD(上机实习) 10/19
|
|
||||||
|
|
||||||
> **Lab 4:CI/CD流水线搭建(10分)**
|
|
||||||
>
|
|
||||||
> 了解CI/CD流程管理工具GitHub Action,知道如何编写简单的CI/CD流水线,并且在实践项目上完成符合要求的成功构建
|
|
||||||
>
|
|
||||||
> Lab 4详细要求参见[WriteUp](Assignments/Lab4.md),**截止日期:2022.11.02 11:59am**
|
|
||||||
>
|
|
||||||
> 4Fun: 2021课程实习过程中关于gitee go的建议:https://toscode.gitee.com/pitcher/gitee-go-exercise/issues
|
|
||||||
|
|
||||||
## 第8次课:开源社区及开源文化,与开源布道师面对面 (三位讲者,不同背景:企业、自由职业者、开源基金会)
|
|
||||||
|
|
||||||
|
|
||||||
## 第9次课:PyPI/NPM等包生态系统/包管理工具,使用/打包/上载软件包(上机实习) 11/2
|
|
||||||
|
|
||||||
> **Lab 5:Python开源软件包安装/管理/打包/上载(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),**截止日期:2022.11.23 11:59am**
|
|
||||||
|
|
||||||
## 第10次课:(课程项目进度报告)任务选择/合作反馈/工具使用等 PRJ-2 11/9
|
|
||||||
|
|
||||||
|
|
||||||
## 第11次课:开源开发中的沟通实践(课堂lecture)
|
|
||||||
|
|
||||||
* 协作和沟通的重要性,如何沟通,分布式沟通中的要点,如何提交PR等。
|
|
||||||
> (实际发生在10/26)
|
|
||||||
|
|
||||||
> **Lab 6:开源项目中的沟通实践(8分)**
|
|
||||||
>
|
|
||||||
> 阅读Linux Kernel沟通实践相关资料,体会总结开源沟通的最佳实践。
|
|
||||||
> or, 选择任何一个开源项目,阅读体会其沟通实践,总结最佳实践。
|
|
||||||
> (8分)
|
|
||||||
>
|
|
||||||
> - 提交issue时如何参与讨论,如何沟通
|
|
||||||
> - 提交pr时如何沟通
|
|
||||||
>
|
|
||||||
> Lab 6详细要求参见[WriteUp](Assignments/Lab6.md),**截止日期:2022.12.07 11:59am**
|
|
||||||
|
|
||||||
## 第12次课:开源的几个关键问题:(课堂lecture) 11/23
|
|
||||||
* 开源为什么能成功?
|
|
||||||
* 开源模式会主宰未来吗?
|
|
||||||
* 什么是“卡脖子”问题?
|
|
||||||
|
|
||||||
|
|
||||||
## 第13次课:开源开发和生态相关的挑战和研究(课堂lecture) 11/30
|
|
||||||
|
|
||||||
* 开源数字社会学(数据驱动的开源研究,研究对象:软件~开发者,软件供应链~个体效率/群体协作/生态持续性)
|
|
||||||
* 发现型和发明型研究案例
|
|
||||||
* 第三方库推荐,从三方库迁移的现象理解到智能推荐工具
|
|
||||||
* 新手任务推荐,从理解新手任务的性质到智能推荐工具
|
|
||||||
|
|
||||||
|
|
||||||
## 第14次课:开源商业模式(课堂lecture) 12/7
|
|
||||||
|
|
||||||
* 公司为什么参与开源?
|
|
||||||
* 开源商业模式有哪些?
|
|
||||||
* 学生选择案例(特定公司和特定开源项目),说明其开源商业模式。
|
|
||||||
|
|
||||||
## 第15次课:课程项目结题报告 PRJ-3 12/14
|
|
||||||
|
|
||||||
> 最后一次课之后需要提交课程项目最终报告(LaTeX格式),**截止日期:2022.12.28 11:59am**
|
|
||||||
>
|
|
||||||
> 课程项目的详细要求参见[WriteUp](Assignments/Project.md)
|
|
||||||
|
|
||||||
## 评分标准
|
|
||||||
|
|
||||||
* 课堂表现(10分):
|
|
||||||
- 上课参与讨论、提问,若点名未到且未事先请假,一次扣2分,最多10分
|
|
||||||
- 课堂表现优秀者,视情况酌情加分
|
|
||||||
* 上机实习Lab(6个,共50分):
|
|
||||||
- Git/贡献指南/GFI/沟通,7~8分一个,共30分
|
|
||||||
- CI/CD和包管理,10分一个,共20分
|
|
||||||
* 课程项目PRJ(40分):
|
|
||||||
- 3次presentation(开题/中期/结题),每次5分
|
|
||||||
- 期末报告10分
|
|
||||||
- 最后的贡献结果15分
|
|
82
Syllabus.md
82
Syllabus.md
|
@ -1,4 +1,4 @@
|
||||||
Copyright (c) 2022 [minghuizhou@osslab-pku]
|
Copyright (c) 2023 [minghuizhou@osslab-pku]
|
||||||
[OSSDevelopment-course/开源软件开发&技术课程] is licensed under Mulan PSL v2.
|
[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 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:
|
You may obtain a copy of Mulan PSL v2 at:
|
||||||
|
@ -12,17 +12,17 @@ See the Mulan PSL v2 for more details.
|
||||||
|
|
||||||
**主要内容: 开源开发方法、技术和实践OSP + 开源文化OSC + 上机实习lab + 课程项目PRJ**
|
**主要内容: 开源开发方法、技术和实践OSP + 开源文化OSC + 上机实习lab + 课程项目PRJ**
|
||||||
|
|
||||||
授课教师:周明辉 zhmh@pku.edu.cn
|
授课教师:周明辉
|
||||||
助教: 谷海桥 ghq@stu.pku.edu.cn
|
助教: 谷海桥
|
||||||
|
|
||||||
## 第1次课:开源软件及其开发概述(课堂lecture) 09/13
|
## 第1次课:开源软件及其开发概述(课堂lecture) 09/13
|
||||||
|
|
||||||
* 100课程简介:课程的目的和内容,以及课程的考核形式。 **lecture100**
|
* 100课程简介:课程的目的和内容,以及课程的考核形式。 **lecture100**
|
||||||
* 101开源软件概述:开源的定义、历史和现状、社区结构和治理,以及开源研究。 **lecture101**
|
* 101开源软件概述:开源的定义、历史和现状、社区结构和治理,以及开源研究。 **lecture101**
|
||||||
* 102往年贡献: 以特定GitHub项目/任务为例,展示如何做贡献;以及讲述往年同学的贡献历程和体会。(消除畏惧感)
|
* 102往年贡献: 以特定GitHub项目/任务为例,展示如何做贡献;以及讲述往年同学的贡献历程和体会。(消除畏惧感)
|
||||||
|
|
||||||
|
|
||||||
## 第2次课:开源开发的支持平台和关键技术:熟悉开源平台和Git操作(课堂lecture) 09/14
|
## 第2次课:开源开发的支持平台和关键技术:熟悉开源平台和Git操作(课堂lecture) 09/20
|
||||||
|
|
||||||
* 201:Git实践入门 **lecture201**
|
* 201:Git实践入门 **lecture201**
|
||||||
- 了解版本控制,了解使用Git,https://missing.csail.mit.edu/2020/version-control/
|
- 了解版本控制,了解使用Git,https://missing.csail.mit.edu/2020/version-control/
|
||||||
|
@ -30,7 +30,6 @@ See the Mulan PSL v2 for more details.
|
||||||
- 了解如何用开源协作工具,熟悉Github/Gitee/GitLink--建立账号和代码仓库,浏览和fork项目
|
- 了解如何用开源协作工具,熟悉Github/Gitee/GitLink--建立账号和代码仓库,浏览和fork项目
|
||||||
|
|
||||||
课堂练习:
|
课堂练习:
|
||||||
* 课堂上访问github,设立平台账号,了解一个开源项目。
|
|
||||||
* 阅读并了解Lab1。
|
* 阅读并了解Lab1。
|
||||||
|
|
||||||
> **Lab 1:练习使用git和GitHub(7分,两周)**
|
> **Lab 1:练习使用git和GitHub(7分,两周)**
|
||||||
|
@ -38,23 +37,19 @@ See the Mulan PSL v2 for more details.
|
||||||
> - 加入课程的[Organization](https://github.com/OSS-Dev-Course-PKU)
|
> - 加入课程的[Organization](https://github.com/OSS-Dev-Course-PKU)
|
||||||
> - 创建GitHub仓库并添加commit,于README.md写下目前的开源项目贡献想法
|
> - 创建GitHub仓库并添加commit,于README.md写下目前的开源项目贡献想法
|
||||||
>
|
>
|
||||||
<!-- > Lab 1详细要求参见[WriteUp](Assignments/Lab1.md),**截止日期:2022.10.05 11:59am** -->
|
|
||||||
|
|
||||||
> **Lab 1扩展:练习使用issue、fork和PR**
|
> **Lab 1扩展:练习使用issue、fork和PR**
|
||||||
> - 提交一个issue,描述自己的想法(相比较于第一次提交)做出了哪些变化
|
> - 提交一个issue,描述自己的想法(相比较于第一次提交)做出了哪些变化
|
||||||
> - 将仓库fork到自己的账号下,对README.md做出相应修改并提出一个PR,并解决产生的冲突
|
> - 将仓库fork到自己的账号下,对README.md做出相应修改并提出一个PR,并解决产生的冲突
|
||||||
>
|
>
|
||||||
> Lab 1详细要求参见[WriteUp](Assignments/Lab1.md),**截止日期:2023.10.05 11:59am**
|
> Lab 1详细要求参见[WriteUp](Assignments/Lab1.md),**截止日期:2023.10.05 11:59am**
|
||||||
|
|
||||||
## 第3次课:开源贡献指南(课堂lecture) 09/27
|
## 第3次课:开源贡献指南(课堂lecture) 09/27
|
||||||
|
|
||||||
* 301:开源参与概述:怎么参与开源项目和社区。 **lecture301**
|
* 301:开源贡献指南: **lecture301**
|
||||||
|
|
||||||
* 302:开源贡献指南: **lecture302**
|
|
||||||
- learn how the open source community works;
|
- learn how the open source community works;
|
||||||
- criteria to select open source project and task to participate in.
|
- criteria to select open source project and task to participate in.
|
||||||
|
|
||||||
* 303:开源课程评分依据: **lecture303**
|
* 302:开源课程评分依据: **lecture302**
|
||||||
|
|
||||||
> **Lab 2:了解开源项目的开发方式和贡献流程(7分,两周)**
|
> **Lab 2:了解开源项目的开发方式和贡献流程(7分,两周)**
|
||||||
>
|
>
|
||||||
|
@ -64,18 +59,13 @@ See the Mulan PSL v2 for more details.
|
||||||
>
|
>
|
||||||
> Lab 2详细要求参见[WriteUp](Assignments/Lab2.md),**截止日期:2023.10.12 11:59am**
|
> Lab 2详细要求参见[WriteUp](Assignments/Lab2.md),**截止日期:2023.10.12 11:59am**
|
||||||
|
|
||||||
## 第4次课:开源项目maintainer分享其维护/开发的经验。(多个项目,开拓视野&为开源任务选择做准备) 09/28
|
## 第4次课:开源项目maintainer分享其维护/开发的经验。(多个项目,开拓视野&为开源任务选择做准备) 10/11
|
||||||
|
|
||||||
* 开源项目的分享:项目介绍、技术介绍、项目常用规则、如何参与。
|
* 开源项目的分享:项目介绍、技术介绍、项目常用规则、如何参与。
|
||||||
|
* 飞桨开源社区分享的介绍请看这里(内含课程的ppt在线浏览):[飞桨开源社区走进北京大学课堂](https://pfcc.blog/posts/pku-course)。
|
||||||
|
|
||||||
* 张军(百度飞桨):飞桨开源社区及开源贡献介绍
|
## 第5次课:开源任务的选择。(课堂lecture) 10/18
|
||||||
* 林俊旸(阿里巴巴达摩院智能计算实验室):多模态大模型开源介绍,以及达摩院一站式开源模型服务平台介绍
|
* 501:如何选择开源任务参与,GitHub Good First Issue **lecture501**
|
||||||
* 齐宝玮(华为鸿蒙):开源鸿蒙开发者社区运营经验分享
|
|
||||||
|
|
||||||
## 第5次课:开源开发的思想和原则;开源任务的实践和经验。(课堂lecture) 10/05
|
|
||||||
|
|
||||||
* 501:从经典软工到开源开发 **lecture501**
|
|
||||||
* 502:如何选择开源任务参与,GitHub Good First Issue **lecture502**
|
|
||||||
|
|
||||||
> **Lab 3:在开源项目中选择开发任务(8分,两周)**
|
> **Lab 3:在开源项目中选择开发任务(8分,两周)**
|
||||||
>
|
>
|
||||||
|
@ -83,32 +73,29 @@ See the Mulan PSL v2 for more details.
|
||||||
> * 是否具有Good First Issue机制
|
> * 是否具有Good First Issue机制
|
||||||
> * 如果你需要在其中选择开发任务,你会如何做
|
> * 如果你需要在其中选择开发任务,你会如何做
|
||||||
>
|
>
|
||||||
> Lab 3详细要求参见[WriteUp](Assignments/Lab3.md),**截止日期:2022.10.19 11:59am**
|
> Lab 3详细要求参见[WriteUp](Assignments/Lab3.md),**截止日期:2022.11.02 11:59am**
|
||||||
|
|
||||||
## 第6次课:(课程项目开题报告)选择开源项目和开源任务 10/12
|
|
||||||
|
|
||||||
|
## 第6次课:(课程项目开题报告)选择开源项目和开源任务 10/25
|
||||||
* 学生报告,
|
* 学生报告,
|
||||||
1)初始选择了什么开源项目和任务;
|
1)初始选择了什么开源项目和任务;
|
||||||
2)对此开源项目及其指南的认识;
|
2)对此开源项目及其指南的认识;
|
||||||
3)贡献计划。
|
3)贡献计划。
|
||||||
|
|
||||||
## 第7次课:CI/CD(上机实习) 10/19
|
## 第7次课:CI/CD(上机实习) 11/01
|
||||||
|
|
||||||
> **Lab 4:CI/CD流水线搭建(10分,两周)**
|
> **Lab 4:CI/CD流水线搭建(10分,两周)**
|
||||||
>
|
>
|
||||||
> 了解CI/CD流程管理工具GitHub Action,知道如何编写简单的CI/CD流水线,并且在实践项目上完成符合要求的成功构建
|
> 了解CI/CD流程管理工具GitHub Action,知道如何编写简单的CI/CD流水线,并且在实践项目上完成符合要求的成功构建
|
||||||
>
|
>
|
||||||
> Lab 4详细要求参见[WriteUp](Assignments/Lab4.md),**截止日期:2022.11.02 11:59am**
|
> Lab 4详细要求参见[WriteUp](Assignments/Lab4.md),**截止日期:2023.11.16 11:59am**
|
||||||
>
|
>
|
||||||
> 4Fun: 2021课程实习过程中关于gitee go的建议:https://toscode.gitee.com/pitcher/gitee-go-exercise/issues
|
> 4Fun: 2021课程实习过程中关于gitee go的建议:https://toscode.gitee.com/pitcher/gitee-go-exercise/issues
|
||||||
|
|
||||||
## 第8次课:开源社区及开源文化,与开源布道师面对面
|
|
||||||
* 陈绪:漫谈云计算和开源社区
|
|
||||||
* 李建盛:多重维度下的开源之史
|
|
||||||
* 朱其罡:开放原子基金会及其开源项目简介
|
|
||||||
> (实际发生在11/16)
|
|
||||||
|
|
||||||
## 第9次课:PyPI/NPM等包生态系统/包管理工具,使用/打包/上载软件包(上机实习) 11/2
|
## 第8次课:从经典软工到开源开发。(课堂lecture) 11/08
|
||||||
|
* 501:从经典软工到开源开发 **lecture501**
|
||||||
|
|
||||||
|
## 第9次课:PyPI/NPM等包生态系统/包管理工具,使用/打包/上载软件包(上机实习) 11/15
|
||||||
|
|
||||||
> **Lab 5:Python开源软件包安装/管理/打包/上载(10分,三周)**
|
> **Lab 5:Python开源软件包安装/管理/打包/上载(10分,三周)**
|
||||||
>
|
>
|
||||||
|
@ -117,15 +104,10 @@ See the Mulan PSL v2 for more details.
|
||||||
> - 将自己的Python包手动发布到TestPyPI;
|
> - 将自己的Python包手动发布到TestPyPI;
|
||||||
> - 配置自动化的CI/CD流水线实现从GitHub直接发布Python包到TestPyPI(注意,不是PyPI平台。[TestPyPI](https://test.pypi.org)是与PyPI分离的Python包发布平台,使练习时发布的Python包不会影响到真正的生态)
|
> - 配置自动化的CI/CD流水线实现从GitHub直接发布Python包到TestPyPI(注意,不是PyPI平台。[TestPyPI](https://test.pypi.org)是与PyPI分离的Python包发布平台,使练习时发布的Python包不会影响到真正的生态)
|
||||||
>
|
>
|
||||||
> Lab 5详细要求参见[WriteUp](Assignments/Lab5.md),**截止日期:2022.11.23 11:59am**
|
> Lab 5详细要求参见[WriteUp](Assignments/Lab5.md),**截止日期:2023.11.30 11:59am**
|
||||||
|
|
||||||
## 第10次课:(课程项目进度报告)任务选择/合作反馈/工具使用等 PRJ-2 11/9
|
## 第10次课:开源开发中的沟通实践(课堂lecture) 11/22
|
||||||
|
* 601: 协作和沟通的重要性,如何沟通,分布式沟通中的要点,如何提交PR等。**lecture601**
|
||||||
|
|
||||||
## 第11次课:开源开发中的沟通实践(课堂lecture)
|
|
||||||
|
|
||||||
* 协作和沟通的重要性,如何沟通,分布式沟通中的要点,如何提交PR等。
|
|
||||||
> (实际发生在10/26)
|
|
||||||
|
|
||||||
> **Lab 6:开源项目中的沟通实践(8分,两周)**
|
> **Lab 6:开源项目中的沟通实践(8分,两周)**
|
||||||
>
|
>
|
||||||
|
@ -136,31 +118,33 @@ See the Mulan PSL v2 for more details.
|
||||||
> - 提交issue时如何参与讨论,如何沟通
|
> - 提交issue时如何参与讨论,如何沟通
|
||||||
> - 提交pr时如何沟通
|
> - 提交pr时如何沟通
|
||||||
>
|
>
|
||||||
> Lab 6详细要求参见[WriteUp](Assignments/Lab6.md),**截止日期:2022.12.07 11:59am**
|
> Lab 6详细要求参见[WriteUp](Assignments/Lab6.md),**截止日期:2023.12.07 11:59am**
|
||||||
|
|
||||||
## 第12次课:开源的几个关键问题:(课堂lecture) 11/23
|
## 第11次课:(课程项目进度报告)任务选择/合作反馈/工具使用等 PRJ-2 11/29
|
||||||
|
|
||||||
|
## 第12次课:开源的几个关键问题:(课堂lecture) 12/06
|
||||||
* 开源为什么能成功?
|
* 开源为什么能成功?
|
||||||
* 开源模式会主宰未来吗?
|
* 开源模式会主宰未来吗?
|
||||||
* 什么是“卡脖子”问题?
|
* 什么是“卡脖子”问题?
|
||||||
|
|
||||||
|
|
||||||
## 第13次课:开源开发和生态相关的挑战和研究(课堂lecture) 11/30
|
## 第13次课:开源开发和生态相关的挑战和研究(课堂lecture) 12/13
|
||||||
|
|
||||||
* 开源数字社会学(数据驱动的开源研究,研究对象:软件~开发者,软件供应链~个体效率/群体协作/生态持续性)
|
* 开源数字社会学(数据驱动的开源研究,研究对象:软件~开发者,软件供应链~个体效率/群体协作/生态持续性)
|
||||||
* 发现型和发明型研究案例
|
* 发现型和发明型研究案例
|
||||||
* 何昊:第三方库推荐,从三方库迁移的现象理解到智能推荐工具
|
* 第三方库推荐,从三方库迁移的现象理解到智能推荐工具
|
||||||
* 肖文鑫:新手任务推荐,从理解新手任务的性质到智能推荐工具
|
* 新手任务推荐,从理解新手任务的性质到智能推荐工具
|
||||||
|
|
||||||
|
|
||||||
## 第14次课:开源商业模式(课堂lecture) 12/7
|
## 第14次课:开源商业模式(课堂lecture) 12/20
|
||||||
|
|
||||||
* 公司为什么参与开源?
|
* 公司为什么参与开源?
|
||||||
* 开源商业模式有哪些?
|
* 开源商业模式有哪些?
|
||||||
* 学生选择案例(特定公司和特定开源项目),说明其开源商业模式。
|
* 学生选择案例(特定公司和特定开源项目),说明其开源商业模式。
|
||||||
|
|
||||||
## 第15次课:课程项目结题报告 PRJ-3 12/14
|
## 第15次课:课程项目结题报告 PRJ-3 12/27
|
||||||
|
|
||||||
> 最后一次课之后需要提交课程项目最终报告(LaTeX格式),**截止日期:2022.12.28 11:59am**
|
> 最后一次课之后需要提交课程项目最终报告(LaTeX格式),**截止日期:2023.12.xxx 11:59am**
|
||||||
>
|
>
|
||||||
> 课程项目的详细要求参见[WriteUp](Assignments/Project.md)
|
> 课程项目的详细要求参见[WriteUp](Assignments/Project.md)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue