Add more documentation
This commit is contained in:
parent
5441eeb06a
commit
494b3f5f59
|
@ -0,0 +1,2 @@
|
||||||
|
# Assignments // 课程作业
|
||||||
|
|
|
@ -1,25 +1,44 @@
|
||||||
|
# Contributing
|
||||||
|
|
||||||
## 此项目的目的:
|
## 此项目的目的
|
||||||
1,群智产出相关的教材和课件;
|
|
||||||
|
|
||||||
2,开放交流教学方法和过程;
|
1. 群智产出相关的教材和课件;
|
||||||
|
2. 开放交流教学方法和过程;
|
||||||
3,吸收最新开源知识并迭代,时刻保持此课程的最佳实践。
|
3. 吸收最新开源知识并迭代,时刻保持此课程的最佳实践。
|
||||||
|
|
||||||
## 如何做贡献?
|
## 如何做贡献?
|
||||||
|
|
||||||
以上述项目目的为驱动做贡献。例如:
|
以上述项目目的为驱动做贡献。例如:
|
||||||
|
|
||||||
1,修改大纲,修改和增加课件,
|
1. 修改大纲;
|
||||||
|
2. 修改/增加课件;
|
||||||
|
3. 修改/增加作业;
|
||||||
|
4. 老师角度:怎么组织课堂,采用什么案例?
|
||||||
|
5. 学生角度:怎么学习?
|
||||||
|
6. 企业角度:如何宣传其开源项目,如何引导同学们围绕其开源项目和任务做贡献?
|
||||||
|
7. 开源布道师角度:怎么宣传开源文化?
|
||||||
|
|
||||||
2,发起与参与讨论,
|
在做大幅度修改前,请先发起一个[Discussion](https://github.com/osslab-pku/OSSDevelopment/discussions),与我们达成共识后,再提交PR或由我们作出修改
|
||||||
|
|
||||||
3,老师角度:怎么组织课堂,采用什么案例?
|
## 开源项目招募!
|
||||||
|
|
||||||
4,学生角度:怎么学习?
|
本课程的课程项目要求学生参与开源项目并做出实际贡献(报告Issue、修复bug、增加feature、编写文档、...)
|
||||||
|
|
||||||
5,企业角度:如何宣传其开源项目,如何引导同学们围绕其开源项目和任务做贡献?
|
在此过程中,开源项目的参与至关重要,
|
||||||
|
|
||||||
6,开源布道师角度:怎么宣传开源文化?
|
* 为学生选择想要参与的开源项目提供线索;
|
||||||
|
* 为学生进入开源项目提供精细化指南;
|
||||||
|
* 为学生宣讲和展现开源技术和文化。
|
||||||
|
|
||||||
|
如果您是开源项目的维护者,且您希望对您的项目进行校园宣传和招新,可在此发起[Discussion](https://github.com/osslab-pku/OSSDevelopment/discussions),提供项目介绍和联系方式;或者发送邮件联系:zhmh@pku.edu.cn。可以选择如下宣传方式:
|
||||||
|
|
||||||
|
* 提供相关资料(尤其是有关新人如何上手的资料),我们整合在本仓库中并在课程上进行介绍
|
||||||
|
* 如果条件允许,在北京大学的课程上作现场报告/宣讲
|
||||||
|
|
||||||
|
之前做过宣讲的项目包括PaddlePaddle、openEuler、TiDB等
|
||||||
|
|
||||||
|
## 将相关材料用于教学
|
||||||
|
|
||||||
|
在遵循[AGPL-3.0许可证](LICENSE)的前提下,可复用本仓库中的材料用于您的课堂教学,无需事先获得许可。我们非常欢迎您提交PR,在README.md中列出您的课程
|
||||||
|
|
||||||
|
如有其他需求,请联系zhmh@pku.edu.cn
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
## 项目维护者
|
## 项目维护者
|
||||||
[周明辉]( https://minghuizhou.github.io/ ) 北京大学博雅特聘教授
|
|
||||||
|
* [周明辉](https://minghuizhou.github.io/) 北京大学博雅特聘教授
|
||||||
|
|
||||||
## 项目贡献者
|
## 项目贡献者
|
||||||
|
|
||||||
* [张宇霞](https://cs.bit.edu.cn/szdw/jsml/fjs/zyx/index.htm) 北京理工大学
|
* [张宇霞](https://cs.bit.edu.cn/szdw/jsml/fjs/zyx/index.htm) 北京理工大学
|
||||||
* [谭鑫](https://sites.google.com/view/xintan/homepage) 北京航空航天大学
|
* [谭鑫](https://sites.google.com/view/xintan/homepage) 北京航空航天大学
|
||||||
* [何昊](https://hehao98.github.io) 北京大学
|
* [何昊](https://hehao98.github.io) 北京大学
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#this folder is for publicizing/advertising materials related to this course. Including but not limited to:
|
# Publicizing Materials // 宣传材料
|
||||||
|
|
||||||
## 大会报告ppt/pdf:
|
本文件夹存放用于课程宣传的相关材料,包括但不限于:
|
||||||
|
|
||||||
1, 2021.07.16, CCF FCES报告:用开源教开源
|
## 大会报告PPT/PDF:
|
||||||
|
|
||||||
|
1. **2021.07.16**:CCF 2022未来计算机教育峰会(FCES 2022),[用开源教开源](PublicizingMaterials\用开源教开源:“开源软件开发”课程-20210716-zhmh.pdf)
|
||||||
|
|
62
README.md
62
README.md
|
@ -1,41 +1,57 @@
|
||||||
本课程为大学计算机系本科生和研究生设计,课程目的是使得计算机领域的同学们对于开源软件的开发方法、开发过程和支持技术有深入的了解,对于如何将抽象方法和理论知识结合到工程中有更好的锻炼,对于参与开源软件社区有基本的掌握。
|
# OSSDevelopment // 《开源软件开发/技术》课程
|
||||||
|
|
||||||
## 开源项目招募!
|
本课程主要面向大学计算机系本科生和研究生设计,课程目的使得计算机领域的同学们能够:
|
||||||
|
1. 对于开源软件的开发方法、开发过程和支持技术有深入的了解;
|
||||||
|
2. 对于如何将抽象方法和理论知识结合到工程中有更好的锻炼;
|
||||||
|
3. 对于开源软件社区参与有基本的掌握,具备参与开源软件开发的基本能力。
|
||||||
|
|
||||||
本课程的大作业为学生参与开源项目,完成某个任务。
|
## 课程背景
|
||||||
什么是任务?可以是为某个开源项目报告某个issue,fix某个bug,增加某个feature(if possible),或者为某个issue添加一个comment以提供solution,等等。
|
|
||||||
|
|
||||||
在此过程中,开源项目的参与至关重要,
|
开源软件在科学研究、工业制造、以及日常生活中发挥着重要作用。近年来,开源软件在云计算、大数据、人工智能等新兴领域迅速成为技术主流。开源软件不仅在计算机科学和软件工程中扮演了重要的角色,也成为了社会生活所依赖的关键基础设施。国内很多IT公司也在逐渐推出高质量的开源项目,例如openEuler、TiDB、OceanBase、PaddlePaddle等。开源已经成为软件技术创新和软件产业发展的主要模式。
|
||||||
|
|
||||||
* 可以为学生选择想要参与的开源项目提供线索;
|
与传统开发模式相比,开源开发展现出充分共享、自由协同、无偿贡献、用户创新、持续演化的新特征,颠覆了诸多经典软件工程的基本假设和理论。越来越多的IT公司在内部推行开源理念和开发方法,以期提高创新能力以及开发效率和质量等。相比传统软件开发,开源软件开发有一套新的模型和技术。然而,鉴于相关课程的缺乏,广大同学们往往对此缺乏理解和实践;而初学者在试图对开源软件做出贡献时,通常会感到无从下手,困难重重。因此,我们开设此课程,以帮助计算机领域的同学们了解开源软件开发和开源社区参与,这是现时代技术环境下亟待掌握的基本知识。
|
||||||
* 可以为学生进入开源项目提供精细化指南;
|
|
||||||
* 可以为学生宣讲和展现开源技术和文化。
|
|
||||||
|
|
||||||
从开源项目的角度,本课程为其提供校园宣传和招新机会。
|
## 先置知识
|
||||||
|
|
||||||
有鉴于此,我们招募开源项目。
|
1. (必须)熟练掌握至少一门编程语言
|
||||||
任何乐意参与的开源项目,可在此发起issue,提供项目介绍和联系方式。或者发送邮件给:zhmh@pku.edu.cn。
|
2. (必须)具备基本的英语沟通交流能力
|
||||||
|
3. (推荐,不必须)开发过有一定规模的软件项目,或选修过软件工程相关课程
|
||||||
|
|
||||||
## 课程背景:
|
## 内容提要
|
||||||
|
|
||||||
开源软件在科学研究、工业制造、以及日常生活中发挥着重要作用。特别是近年来,开源软件在云计算、大数据、人工智能等新兴领域迅速成为技术主流。开源软件不仅是重要的计算基础设施, 也成为了社会生活依赖的基础设施。此外,国内很多IT公司也逐渐推出了一些高质量的开源项目,比如openEuler、TiDB、OceanBase、PaddlePaddle等。开源已经成为软件技术创新和软件产业发展的主要模式。
|
本课程采用理论知识和开源实践相结合的方式进行设计,从开源模式出发,以学生参与开源项目的实践为整体线索,讲授开源软件开发方法、过程及其涉及的理论知识和技术,具体包含如下内容:
|
||||||
|
|
||||||
与传统开发模式相比,开源开发展现出充分共享、自由协同、无偿贡献、用户创新、持续演化的新特征,颠覆了诸多经典软件工程的基本假设和理论。越来越多的IT公司在内部推行开源理念和开发方法,以期提高创新能力以及开发效率和质量等。相比传统软件开发,开源软件开发有一套新的模型和技术。然而,鉴于相关课程的缺乏,广大同学们对此缺乏理解和实践。因此,我们开设此课程,以帮助计算机领域的同学们了解开源软件开发和开源社区参与,这是现时代技术环境下亟待掌握的基本知识。
|
1. **开源模式:** 开源历史发展;互联网协作技术的演变和革新;工业界开源布道师分享;...
|
||||||
|
2. **开源开发活动:** 开源开发流程、社区维护/协作模式、贡献指南、如何沟通、Issues、Pull-Based Development、...
|
||||||
|
3. **相关流程、工具和最佳实践:** git、GitHub/Gitee/GitLab、CI/CD/DevOps、Code Review、Good First Issue、...
|
||||||
|
4. **前沿研究和实践:** 开源社区治理、商业协作、开源生态系统、开源软件供应链管理、安全性/可持续性问题、计算机科学中的实证研究方法、...
|
||||||
|
|
||||||
## 内容提要:
|
课程的主要考核方式如下(每学期会有所调整,以最终发布的课程作业为准):
|
||||||
|
|
||||||
本课程采用理论知识和开源实践相结合的方式进行设计,从开源模式出发,以学生参与开源项目的实践为整体线索,讲授开源软件开发方法、过程及其涉及的理论知识和技术。本课程将首先讲述开源模式,接下来分别介绍每个开发活动的背后的原理、基本操作流程和技术及最佳实践。其中,开源模式以开源历史发展为基础,介绍互联网协作技术的演变和革新,并计划邀请工业界开源布道师进行分享,让同学们对开源活动有直观的认知和体验;开源开发活动的理论知识和最佳实践将参考当前学术界对开源软件开发的经典以及最新的研究工作进行教授;开发活动的基本操作流程、技术和实践将邀请业界开源领域的优秀开发者进行传授。最后,课程将以选择并参与某个开源项目为课程大作业,以训练同学们将所学理论知识应用到实践当中的能力。
|
1. **实践作业(Lab):** 创建GitHub项目、提交PR、配置CI/CD流水线、发布开源软件包、...
|
||||||
|
2. **报告:** 开源项目和任务选择、Linux Kernel中的沟通实践、前沿学术论文阅读、...
|
||||||
|
3. **课程项目:** 选择某个开源项目并做出实际贡献,在课程上报告进展和思考,并提交最终报告
|
||||||
|
|
||||||
## 学时分配
|
## 学分/学时分配
|
||||||
课程总学时为48学时(3*16),大概分配:课程讲授占50%,学生的文献阅读和讨论占20%,学生参与开源项目的实践报告占30%。
|
|
||||||
|
课程为3学分,总学时为48学时(3*16),大致学时分配:课程讲授占50%,学生的文献阅读和讨论占20%,学生参与开源项目的实践报告占30%。
|
||||||
|
|
||||||
## 文件结构
|
## 文件结构
|
||||||
* [outline.md](./outline.md):课程大纲
|
|
||||||
|
|
||||||
* [courseware](./courseware/):课程课件
|
* [课程大纲.md](课程大纲.md):课程大纲(包含课程作业概览和评分标准)
|
||||||
|
* [Slides](Slides/):课程课件
|
||||||
|
* [Assignments](Assginments/):课程作业
|
||||||
|
* [PublicizingMaterials](PublicizingMaterials/):课程相关宣传/研讨材料,例如大会报告
|
||||||
|
|
||||||
* [recruitOSSproject](./recruitOSSproject/):开源项目报名(为学生参与开源项目提供线索)
|
## 如何贡献
|
||||||
|
|
||||||
* [publicizeMaterial](./publicizeMaterial/):跟本课程相关的宣传/研讨材料等,例如大会报告slides
|
* **在我们的课程上宣传您的开源项目!** 详见[CONTRIBUTING.md](CONTRIBUTING.md)
|
||||||
|
* 希望使用相关材料用于您的教学?请[联系我们](CONTRIBUTING.md)
|
||||||
|
* 认为课程设计和作业设计存在不足?有任何意见和建议?请发起一个[Discussion](https://github.com/osslab-pku/OSSDevelopment/discussions)
|
||||||
|
* 在任何地方发现了Typo、Bug、或格式问题?请开启一个[Issue](https://github.com/osslab-pku/OSSDevelopment/issues)或者直接提交[Pull Request](https://github.com/osslab-pku/OSSDevelopment/pulls)
|
||||||
|
|
||||||
* [uploadYOURS](./uploadYOURS/):任何贡献者对课程有建议或素材或课件可记录或上载于此
|
关于贡献指南相关、和项目开发的基本约定等更多信息,请参见[CONTRIBUTING.md](CONTRIBUTING.md)
|
||||||
|
|
||||||
|
## 使用本仓库的课程
|
||||||
|
|
||||||
|
1. 2021-2022学年秋季学期,北京大学信息科学技术学院,《开源软件开发》
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
#this folder is for courseware, will produce slides based on the outline of the course. ***此文件夹为课程课件***
|
# Slides // 课程课件
|
||||||
|
|
||||||
|
本文件夹将随着课程进展发布相应课件,往届课件请参考[GitHub Releases](https://github.com/osslab-pku/OSSDevelopment/releases)
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
# if you want to contribute any slides or materials, please upload to this folder or update this file
|
|
||||||
|
|
||||||
Github教程:https://missing.csail.mit.edu/2020/version-control/ (我是您本学期《开源软件技术》课程学生周裕涵,我十分感兴趣于开源软件生态,特别是git版本控制系统和github的代码托管功能。今日我找到一个十分优秀的git教程,它深入浅出地讲解了git的原理、内部机制和使用方法,我认为它对您今后的此类课程十分有帮助,也可以作为此课程的优秀参考资料,特此推荐。)
|
|
||||||
|
|
||||||
|
|
||||||
##### 给开源项目做贡献的方式
|
|
||||||
- 给开源项目做出贡献,不只局限于代码贡献,numpy的readme里关于可以给numpy做贡献的方式的说明是一个很好的案例:[numpy's call for contributions](https://github.com/numpy/numpy/blob/main/README.md#call-for-contributions)
|
|
Loading…
Reference in New Issue