Skip to content

开源软件通识课程 (Introduction to Open Source Software),本课程暂定设计面向信息大类专业的大一学生

License

Notifications You must be signed in to change notification settings

hust-open-atom-club/intro2oss

Repository files navigation

开源软件通识课程

欢迎大家来到华科开放原子开源俱乐部的《开源软件通识课程》内部培训课程。本课程将秉持 “以开源方式来建设开源课程” 的指导方针,带同学们一起畅游开源软件的海洋。

带领俱乐部成员认识开源软件经历如下的不同阶段:


S0:无意识使用阶段

**目标:**认识到开源已融入生活,了解自己日常使用的开源软件。

  • 开源无处不在
    • 举例说明:现代科技中广泛应用的开源软件,例如 Android 系统(基于 Linux),浏览器(如 Chrome 和 Firefox),办公工具(如 LibreOffice),以及其他开发工具(如 Git、Vim、Node.js)。
    • 说明开源如何成为现代技术的基石:手机、服务器、云计算、大数据、人工智能等领域。
  • 参考任务:
    • 列举自己日常使用的一些开源软件,并尝试查找它们的开源主页或仓库。
    • 调研一个开源项目的背景,了解它在行业中的应用(如 Linux、Kubernetes)。

S1:了解开源阶段

**目标:**初步了解开源的概念、历史、许可证及其影响,培养开源安全意识。

  • 开源是什么?
    • **开源是一种软件类型:**定义开源软件,与闭源软件对比。
    • **开源是一种软件开发方式:**举例开源协作的特点,如社区贡献、代码开放。
    • **开源是一种协作与创新模式:**讲解如何通过开源实现跨组织协作和技术创新。
    • **开源是一种产业生态:**开源如何驱动技术演进和形成商业生态(如红帽的成功案例)。
  • 开源历史
    • 时间线和重要节点:Unix -> GNU -> Linux -> Git -> Github。
    • 自由软件运动与 Richard Stallman 的贡献。
    • 开源运动的兴起与 Open Source Initiative (OSI)。
  • 开源许可证
    • 介绍许可证的作用和开源定义(Open Source Definition)。
    • 常见开源许可证:
      • Copyleft:GPL、AGPL 等。
      • Permissive:MIT、Apache-2.0、BSD。
      • 禁用场景:禁止与专利冲突等。
    • **如何选择许可证?**举例如何根据项目需求选择适当的许可证。
  • 开源安全
    • 开源软件供应链安全:了解漏洞传播机制(如 Log4j 漏洞案例)。
    • 安全最佳实践:开源软件的审计和管理(如使用 Dependabot)。
  • 参考任务:
    1. 创建 Github 帐号,初始化一个简单的项目(如 README 文件)。
    2. 为该项目选择一个开源许可证,并撰写一段文字解释选择理由。

S2:拥抱开源阶段

**目标:**开始使用开源软件,初步了解开源项目的协作模式。

  • 开源协作模式
    • **如何贡献:**Issue、Pull Request、Code Review。
    • **工具与平台:**使用 Github、Gitlab 等托管平台。
    • **开源项目工作流:**了解从 Issue 到 PR 的完整流程。
  • 开源软件的替代方案
    • 举例:用 Linux 替代 Windows,用 LibreOffice 替代 Microsoft Office,用 GIMP 替代 Photoshop,用 VLC 替代商业播放器。
    • 选择适合的发行版:
      • 桌面发行版:Ubuntu、Deepin、OpenEuler。
      • 服务器发行版:CentOS Stream、Alpine。
  • 活动组织
    • 了解和参与开源社区活动:如 Linux 101、OpenEuler 社区活动等。
    • 通过参与活动了解更多开源工具和资源。
  • 参考任务:
    1. 找到一个可以替换闭源工具的开源软件,并将其应用到日常工作中。
    2. 记录切换开源软件的过程、问题和解决方案,撰写一篇博客分享。

S3:贡献开源阶段

**目标:**学习开源基础技能并通过代码或文档的贡献实践开源。

  • 开源基础技能
    • Git 学习:
      • Git 的基本操作(clone、commit、push、pull、merge 等)。
      • Git 的原理:分支、HEAD 指针、合并冲突等概念。
      • 进阶技能:使用 Git 提交签名、提交模板。
    • 代码托管平台:
      • Github、Gitlab、Gitee 等的使用技巧。
      • 项目管理功能:Issue、Milestone、Wiki。
    • 如何写好一个 commit message:
      • Linux Kernel Patch。
      • Conventional Commits。
      • RustSBI 项目的 commit message 规范。
    • 文档撰写:
  • 计算机基础知识
    • The Missing Semester of Your CS Education。
    • 不同方向的简单介绍与开源项目:
      • 系统开发:Linux Kernel、QEMU。
      • Web 开发:React、Vue。
      • 网络:WireGuard、Cilium。
      • 数据分析:Pandas、Jupyter。
      • 人工智能:TensorFlow、PyTorch。
    • 找到适合自己的方向并选择活跃的开源项目。
  • 表达与交流的重要性
    • 如何清晰表达问题和想法。
    • 如何有效进行跨文化交流。
  • 学会如何提问
    • 如何查找资料:善用 Google 和 Stack Overflow。
    • 提问的基本规范:明确描述问题、给出复现步骤。
  • 参考任务:
    1. 学习使用 Git,完成一次 Fork 并提交 PR 的流程。
    2. 选择一个开源项目,通过贡献文档或代码提交一个 PR。

S4:领导开源阶段

**目标:**成为开源项目的领导者,掌握社区管理和开源治理能力。

  • 开源社区及其管理

    • 如何组织和维护开源社区:Code of Conduct、贡献者指南。
    • 如何吸引和管理贡献者:鼓励多样性和贡献。
  • 开源社区安全治理

    • 如何处理安全问题(如 CVE 报告)。
    • 如何保护社区免受恶意代码或行为影响。
  • 开源社区合规

    • 合规流程的重要性:知识产权管理、许可证合规。
    • 如何进行开源项目的合规审计。
  • 参考任务:

    1. 创建一个开源项目,撰写清晰的 README 和贡献者指南。
    2. 通过自己的开源项目吸引其他人贡献并管理他们的贡献。
    3. 如果不想长期维护,可以将项目捐献到俱乐部。

贡献指南

如果 commit 时候遇到 md 格式问题,在对应的 action run 底下会有一个 artifact,保存了所有的 log 和对应的 autofix commit message 中尽量不要出现中文,以及相同的 commit 可以合并成一个。

About

开源软件通识课程 (Introduction to Open Source Software),本课程暂定设计面向信息大类专业的大一学生

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published