OSSDevelopment/README.md

61 lines
4.8 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.

# OSSDevelopment //《开源软件开发/技术》课程
本课程主要面向大学计算机系本科生和研究生设计,希望通过本课程的教学,使得计算机领域的同学们能够:
1. 对于开源软件的开发方法、开发过程和支持技术有深入的了解;
2. 对于如何将抽象方法和理论知识结合到工程中有更好的锻炼;
3. 对于开源软件社区参与有基本的掌握,具备参与开源软件开发的基本能力。
## 课程背景
开源软件在科学研究、工业制造、以及日常生活中发挥着重要作用。近年来开源软件在云计算、大数据、人工智能等新兴领域迅速成为技术主流。开源软件不仅在计算机科学和软件工程中扮演了重要的角色也成为了社会生活所依赖的关键基础设施。国内很多IT公司也在逐渐推出高质量的开源项目例如openEuler、TiDB、OceanBase、PaddlePaddle等。开源已经成为软件技术创新和软件产业发展的主要模式。
与传统开发模式相比开源开发展现出充分共享、自由协同、无偿贡献、用户创新、持续演化的新特征颠覆了诸多经典软件工程的基本假设和理论。越来越多的IT公司在内部推行开源理念和开发方法以期提高创新能力以及开发效率和质量等。相比传统软件开发开源软件开发有一套新的模型和技术。然而鉴于相关课程的缺乏广大同学们往往对此缺乏理解和实践而初学者在试图对开源软件做出贡献时通常会感到无从下手困难重重。因此我们开设此课程以帮助计算机领域的同学们了解开源软件开发和开源社区参与这是现时代技术环境下亟待掌握的基本知识。
## 先置知识
1. (必须)熟练掌握至少一门编程语言
2. (必须)具备基本的英语沟通交流能力
3. (推荐)对开源和计算机技术有兴趣,有想要做出贡献的领域,希望培养自我驱动力和锻炼自主学习能力
4. (可选)开发过有一定规模的软件项目,或阅读过软件工程有关书籍,或选修过软件工程相关课程
## 内容提要
本课程采用理论知识和开源实践相结合的方式进行设计,从开源模式出发,以学生参与开源项目的实践为整体线索,讲授开源软件开发方法、过程及其涉及的理论知识和技术,具体包含如下内容:
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. **课程项目:** 选择某个开源项目并做出实际贡献,在课程上报告进展和思考,并提交期末报告
## 学分/学时分配
课程为3学分总学时为48学时3*16大致学时分配课程讲授占50%学生的文献阅读和讨论占20%学生参与开源项目的实践报告占30%。
## 文件结构
* [Syllabus.md](Syllabus.md):课程大纲(包含课程作业概览和评分标准)
* [Slides](Slides/):课程课件
* [Assignments](Assignments/):课程作业
* [PublicizingMaterials](PublicizingMaterials/):课程相关宣传/研讨材料,例如大会报告
## 如何贡献
* **在我们的课程上宣传您的开源项目!** 详见[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)
关于贡献指南相关、和项目开发的基本约定等更多信息,请参见[CONTRIBUTING.md](CONTRIBUTING.md)
## 使用本仓库的课程
1. 北京大学信息科学技术学院,《开源软件技术》
* 2021-2022学年秋季学期、2022-2023学年秋季学期