Skip to content

Commit

Permalink
Merge pull request #39 from CAICAIIs/main
Browse files Browse the repository at this point in the history
feat:Updata open source license guide
  • Loading branch information
mudongliang authored Feb 12, 2025
2 parents 3db0c86 + 2ef73ac commit 51700eb
Show file tree
Hide file tree
Showing 9 changed files with 108 additions and 20 deletions.
45 changes: 25 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# 开源软件通识课程

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

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

---

### **S0: 无意识使用阶段**
### **S0无意识使用阶段**

> **目标:** 认识到开源已融入生活,了解自己日常使用的开源软件。
> **目标:**认识到开源已融入生活,了解自己日常使用的开源软件。
* **开源无处不在**
* 举例说明:现代科技中广泛应用的开源软件,例如 Android 系统(基于 Linux),浏览器(如 Chrome 和 Firefox),办公工具(如 LibreOffice),以及其他开发工具(如 Git、Vim、Node.js)。
Expand All @@ -19,15 +19,15 @@

---

### **S1: 了解开源阶段**
### **S1了解开源阶段**

> **目标:** 初步了解开源的概念、历史、许可证及其影响,培养开源安全意识。
> **目标:**初步了解开源的概念、历史、许可证及其影响,培养开源安全意识。
* **开源是什么?**
* **开源是一种软件类型:** 定义开源软件,与闭源软件对比。
* **开源是一种软件开发方式:** 举例开源协作的特点,如社区贡献、代码开放。
* **开源是一种协作与创新模式:** 讲解如何通过开源实现跨组织协作和技术创新。
* **开源是一种产业生态:** 开源如何驱动技术演进和形成商业生态(如红帽的成功案例)。
* **开源是一种软件类型:**定义开源软件,与闭源软件对比。
* **开源是一种软件开发方式:**举例开源协作的特点,如社区贡献、代码开放。
* **开源是一种协作与创新模式:**讲解如何通过开源实现跨组织协作和技术创新。
* **开源是一种产业生态:**开源如何驱动技术演进和形成商业生态(如红帽的成功案例)。
* **开源历史**
* 时间线和重要节点:Unix -> GNU -> Linux -> Git -> Github。
* 自由软件运动与 Richard Stallman 的贡献。
Expand All @@ -38,7 +38,7 @@
* Copyleft:GPL、AGPL 等。
* Permissive:MIT、Apache-2.0、BSD。
* 禁用场景:禁止与专利冲突等。
* **如何选择许可证?** 举例如何根据项目需求选择适当的许可证。
* **如何选择许可证?**举例如何根据项目需求选择适当的许可证。
* **开源安全**
* 开源软件供应链安全:了解漏洞传播机制(如 Log4j 漏洞案例)。
* 安全最佳实践:开源软件的审计和管理(如使用 Dependabot)。
Expand All @@ -48,14 +48,14 @@

---

### **S2: 拥抱开源阶段**
### **S2拥抱开源阶段**

> **目标:** 开始使用开源软件,初步了解开源项目的协作模式。
> **目标:**开始使用开源软件,初步了解开源项目的协作模式。
* **开源协作模式**
* **如何贡献:** Issue、Pull Request、Code Review。
* **工具与平台:** 使用 Github、Gitlab 等托管平台。
* **开源项目工作流:** 了解从 Issue 到 PR 的完整流程。
* **如何贡献:**Issue、Pull Request、Code Review。
* **工具与平台:**使用 Github、Gitlab 等托管平台。
* **开源项目工作流:**了解从 Issue 到 PR 的完整流程。
* **开源软件的替代方案**
* 举例:用 Linux 替代 Windows,用 LibreOffice 替代 Microsoft Office,用 GIMP 替代 Photoshop,用 VLC 替代商业播放器。
* **选择适合的发行版:**
Expand All @@ -70,9 +70,9 @@

---

### **S3: 贡献开源阶段**
### **S3贡献开源阶段**

> **目标:** 学习开源基础技能并通过代码或文档的贡献实践开源。
> **目标:**学习开源基础技能并通过代码或文档的贡献实践开源。
* **开源基础技能**
* **Git 学习:**
Expand All @@ -85,7 +85,7 @@
* **如何写好一个 commit message:**
* Linux Kernel Patch。
* Conventional Commits。
* RustSBI项目的commit message 规范。
* RustSBI 项目的 commit message 规范。
* **文档撰写:**
* **计算机基础知识**
* The Missing Semester of Your CS Education。
Expand All @@ -108,9 +108,9 @@

---

### **S4: 领导开源阶段**
### **S4领导开源阶段**

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

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


### **贡献指南**
如果 commit 时候遇到 md 格式问题,在对应的 action run 底下会有一个 artifact,保存了所有的 log 和对应的 autofix
commit message 中尽量不要出现中文,以及相同的 commit 可以合并成一个。
Binary file added docs/assets/ChooseOSL.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/addLICENSE_creat.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/addLICENSE_first.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/addLICENSE_fourth.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/addLICENSE_second.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/addLICENSE_third.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
82 changes: 82 additions & 0 deletions docs/ch3/sec1/subsec1/5-open_source_License.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# 开源许可证选择指南:为你的项目穿上法律防护衣

## 什么是开源许可证?
简单说:就像你去图书馆借书需要遵守借阅规则一样,开源许可证就是代码世界的 “借阅规则”,明确告诉大家怎么使用、修改和分享你的代码。

## 第一章:开源许可证的三大作用

### 1. 法律防护说明书
- 明确哪些能做(比如商用、修改)
- 哪些不能做(比如隐藏源代码)
- 保护作者不被 “白嫖”(要求署名/注明修改)

### 2. 社区合作备忘录
- 规定修改代码后要不要回馈社区
- 建立开发者之间的信任规则
- 就像开源社区的 “交通法规”

### 3. 常见误区扫盲
- ❌ 开源 ≠ 随便用(很多协议要求署名)
- ❌ 没加许可证 ≠ 无主代码(默认受法律保护)
- ✅ 选错协议可能 “锁死” 你的项目(兼容性问题)

## 第二章:五大主流许可证怎么选

| 许可证 | 核心要求 | 商用友好 | 修改后要开源吗? | 适合场景 |
| --------- | -------------------- | -------- | ----------------- | ----------------- |
| MIT | 保留我的大名字 | ✔️ || 工具库/小插件 |
| GPL | 衍生品必须继续开源 || ✔️ | 操作系统/核心组件 |
| Apache2.0 | 不能用我的专利告我 | ✔️ | ❌(但要说明修改) | 企业级项目 |
| BSD | 别用我的名义打广告 | ✔️ || 科研项目 |
| LGPL | 只改库文件才需要开源 | ✔️ | ✔️(仅修改部分) | 共享库 |

## 特别章节:GPL 的传奇故事与自由精神
### 自由软件运动简史
1983年,理查德·斯托曼发起 “自由软件运动”,提出四大自由:
1. 随便用的自由
2. 研究修改的自由
3. 分发的自由
4. 改进后分享的自由

GPL 协议就是实现这些自由的 “法律武器”,它像 “开源病毒” 一样,确保每个使用 GPL 代码的项目都必须继续开源,防止大公司 “偷走” 开源成果变成闭源软件。

### 开源文化的守护者
- 保障知识共享不中断
- 强制回馈社区形成良性循环
- 著名的 Linux 内核就采用 GPL 协议

## 第三章:选择合适的许可证

### 选择流程图
![alt text](../../../assets/ChooseOSL.png)

来源:https://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
### 额外补充
如果你还是没办法选出适合自己的开源许可证,你可以通过[开放源代码许可证选择器](https://open-source-license-chooser.toolsnav.top/)来帮助你选择。

## 第四章:添加许可证指南

### 刚创建仓库(repository)时
若我们想在刚创建仓库时候便添加许可证,可观察到创建页面下方的 **Choose a license**,从这便可在创建仓库时候添加上许可证

![alt text](../../../assets/addLICENSE_creat.png)
### 对已有仓库添加许可证
转到 GitHub 上项目的主页。然后单击**添加文件**(Add file)并选择**创建新文件** (Creat new file) 选项。

![alt text](../../../assets/addLICENSE_first.png)

接下来在文件名字段中填写 “LICENSE” 或 “LICENSE.md”,然后单击选择许可证模板。

![alt text](../../../assets/addLICENSE_second.png)

接着查看可用的许可证并选择最适合您的项目的许可证,点击**审核并提交**,如下图:

![alt text](../../../assets/addLICENSE_third.png)

最后,为您的许可证编写一条提交消息,并选择是否要将其直接提交到主分支或创建一个新分支并打开拉取请求。然后,按提交新文件按钮将许可证添加到您的项目中,如下图所示。

![alt text](../../../assets/addLICENSE_fourth.png)

如果您创建了拉取请求以将许可证添加到您的项目,请合并该拉取请求,您应该会在 GitHub 上的项目主页上看到 LICENSE 文件。

到这里你就成功添加了开源许可证,Congratulations!
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ nav:
- 代码托管平台简介: ch3/sec1/subsec1/2-code-hosting-platforms.md
- 注册并熟悉代码托管平台: ch3/sec1/subsec1/3-practice-code-hosting-platforms.md
- 创建并管理仓库: ch3/sec1/subsec1/4-create-repo.md
- 开源许可证选择指南: ch3/sec1/subsec1/5-open_source_License.md
- 基础阶段:
- 如何写好一个commit message: ch3/sec1/subsec2/6-commit-message.md
- 专业阶段:
Expand Down

0 comments on commit 51700eb

Please sign in to comment.