-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: refactor outline and docs level
Signed-off-by: Zhenchen Wang <[email protected]>
- Loading branch information
Showing
21 changed files
with
57 additions
and
208 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1 @@ | ||
# S0: 无意识使用阶段 | ||
|
||
**目标** :认识到开源已融入生活,了解自己日常使用的开源软件。 | ||
|
||
## 一、开源无处不在 | ||
|
||
1. **举例说明** :列举现代科技各领域广泛运用的开源软件实例,像以 Linux 为基础构建的 Android 系统,广受欢迎的浏览器 Chrome 和 Firefox,实用的办公工具 LibreOffice,还有开发人员常用的开发工具诸如 Git、Vim、Node.js 等。通过这些具体案例,展现开源软件在日常生活中的广泛存在。 | ||
2. **说明开源如何成为现代技术的基石** :深入阐述开源在诸如手机、服务器、云计算、大数据、人工智能等前沿领域所发挥的基础性、支撑性作用,揭示开源对于现代技术发展的不可或缺性。 | ||
|
||
## 二、参考任务 | ||
|
||
1. **列举自己日常使用的一些开源软件,并尝试查找它们的开源主页或仓库** :引导读者主动去发现身边的开源软件,并通过查找其开源主页或仓库,进一步深入了解这些软件背后的开源生态。 | ||
2. **调研一个开源项目的背景,了解它在行业中的应用(如 Linux、Kubernetes)** :促使读者选取典型开源项目,如 Linux 或 Kubernetes,深入探究其起源、发展历程,以及在所属行业中的广泛应用,加深对开源项目影响力的认知。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,32 +1 @@ | ||
# S1: 了解开源阶段 | ||
|
||
**目标** :初步了解开源的概念、历史、许可证及其影响,培养开源安全意识。 | ||
|
||
## 一、开源是什么 | ||
|
||
1. **开源是一种软件类型** :明确开源软件的定义,并与闭源软件进行对比,凸显二者差异。 | ||
2. **开源是一种软件开发方式** :列举开源协作的典型特点,例如社区贡献模式、代码开放共享机制等。 | ||
3. **开源是一种协作与创新模式** :详细阐释如何借助开源途径达成跨组织的协作,实现技术层面的创新突破。 | ||
4. **开源是一种产业生态** :深入剖析开源如何推动技术持续演进,以及构建商业生态的过程,可参考红帽的成功范例。 | ||
|
||
## 二、开源历史 | ||
|
||
1. **时间线和重要节点** :梳理从 Unix 到 GNU,再到 Linux、Git 直至 Github 的发展脉络,标注关键转折点。 | ||
2. **自由软件运动与 Richard Stallman 的贡献** :阐述自由软件运动的发起背景、发展历程,以及 Richard Stallman 在其中发挥的关键引领作用。 | ||
3. **开源运动的兴起与 Open Source Initiative (OSI)** :讲述开源运动蓬勃兴起的时代背景,以及 Open Source Initiative (OSI) 在推动开源规范化进程中的重要地位。 | ||
|
||
## 三、开源许可证 | ||
|
||
1. **介绍许可证的作用和开源定义(Open Source Definition)** :系统阐述许可证在开源生态中的核心功能,精准解读开源定义的内涵。 | ||
2. **常见开源许可证** | ||
3. **如何选择许可证** :结合实际项目案例,讲解依据项目特性、发展规划等需求,恰当选择适配的许可证类型。 | ||
|
||
## 四、开源安全 | ||
|
||
1. **开源软件供应链安全** :以 Log4j 漏洞案例为切入点,深度剖析漏洞在开源软件供应链中的传播原理与路径。 | ||
2. **安全最佳实践** :介绍开源软件的审计和管理策略,例如借助工具 Dependabot 进行有效管控。 | ||
|
||
## 五、参考任务 | ||
|
||
1. 创建 Github 帐号,初始化一个简单的项目(如 README 文件)。 | ||
2. 为该项目选择一个开源许可证,并撰写一段文字解释选择理由。 |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1 @@ | ||
# S2: 拥抱开源阶段 | ||
|
||
**目标** :开始使用开源软件,初步了解开源项目的协作模式。 | ||
|
||
## 一、开源协作模式 | ||
|
||
1. **如何贡献** :详细讲解 Issue、Pull Request、Code Review 等操作在开源项目协作中的关键作用与具体流程,助力参与者明确自身在开源项目中的发力点。 | ||
2. **工具与平台** :介绍如 Github、Gitlab 等主流开源项目托管平台的功能特性、使用优势,方便开发者高效管理开源项目。 | ||
3. **开源项目工作流** :全面梳理从发现 Issue 问题,到提交 Pull Request 解决问题,再到 Code Review 审核完善的一整套完整流程,让参与者对开源协作有清晰的认知框架。 | ||
|
||
## 二、开源软件的替代方案 | ||
|
||
**举例** :列举日常生活与工作场景中,可用开源软件替换闭源软件的典型案例,如以 Linux 系统替换 Windows 系统,用 LibreOffice 替代 Microsoft Office,拿 GIMP 取代 Photoshop,使 VLC 成为商业播放器的替代之选,展现开源软件的实用性。 | ||
|
||
**选择适合的发行版** : | ||
|
||
* **桌面发行版** :推荐适合桌面端使用的 Ubuntu、Deepin、OpenEuler 等发行版,阐述其各自的界面风格、功能特性、适配场景,帮助用户精准选型。 | ||
* **服务器发行版** :介绍 CentOS Stream、Alpine 等常用于服务器领域的发行版优势,如稳定性、资源占用、运维便利性等,指导用户按需抉择。 | ||
|
||
## 三、活动组织 | ||
|
||
1. **了解和参与开源社区活动** :列举如 Linux 101、OpenEuler 社区活动等具有代表性的开源社区活动,阐述参与其中可获得的知识增长、人脉拓展、技术交流等诸多益处。 | ||
2. **通过参与活动了解更多开源工具和资源** :强调借助社区活动这一平台,挖掘更多实用的开源工具、优质资源,拓宽技术视野。 | ||
|
||
## 四、参考任务 | ||
|
||
1. 找到一个可以替换闭源工具的开源软件,并将其应用到日常工作中。 | ||
2. 记录切换开源软件的过程、问题和解决方案,撰写一篇博客分享。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
|
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,56 +1 @@ | ||
# S3: 贡献开源阶段 | ||
|
||
**目标** :学习开源基础技能并通过代码或文档的贡献实践开源。 | ||
|
||
## 一、开源基础技能 | ||
|
||
### **Git 学习** : | ||
|
||
* **Git 的基本操作** :系统讲解 clone、commit、push、pull、merge 等基础操作的命令、用途与使用场景,帮助初学者快速上手。 | ||
* **Git 的原理** :深入剖析分支、HEAD 指针、合并冲突等核心概念,助力开发者理解 Git 底层运行逻辑,更好应对复杂情况。 | ||
* **进阶技能** :介绍使用 Git 提交签名、提交模板的方法与优势,提升代码提交的规范性与可追溯性。 | ||
|
||
### **代码托管平台** : | ||
|
||
* **Github、Gitlab、Gitee 等的使用技巧** :分享各大主流代码托管平台的特色功能、高效使用诀窍,如项目搜索、个性化设置等,满足不同开发者需求。 | ||
* **项目管理功能** :详细阐释 Issue、Milestone、Wiki 等功能在开源项目管理中的运用,助力团队协作与项目推进。 | ||
|
||
### **如何写好一个 commit message** : | ||
|
||
* **Linux Kernel Patch** :解析 Linux Kernel 项目中 commit message 的规范与范例,学习行业标杆经验。 | ||
* **Conventional Commits** :介绍通用的 Conventional Commits 规范,掌握一种广泛适用的提交信息编写格式。 | ||
* **RustSBI 项目的 commit message 规范** :以 RustSBI 项目为例,了解特定项目的个性化要求,拓宽规范认知广度。 | ||
|
||
### **文档撰写** | ||
|
||
讲解开源项目中文档撰写的重要性、基本规范(如格式、语言风格)、常用工具(如 Markdown 编辑器),培养撰写高质量文档的能力。 | ||
|
||
## 二、计算机基础知识 | ||
|
||
### **The Missing Semester of Your CS Education** | ||
|
||
推荐学习这一经典课程资源,填补计算机科学知识体系漏洞,夯实基础。 | ||
|
||
### **不同方向的简单介绍与开源项目** : | ||
|
||
* **系统开发** :介绍 Linux Kernel、QEMU 等开源项目,阐述系统开发领域的关键技术、应用场景,帮助开发者找准兴趣点。 | ||
* **Web 开发** :讲解 React、Vue 等热门 Web 开发框架对应的开源项目,分析其优势、适用范围,开启 Web 开发探索之门。 | ||
* **网络** :剖析 WireGuard、Cilium 等网络相关开源项目,揭示网络领域前沿技术与创新应用。 | ||
* **数据分析** :介绍 Pandas、Jupyter 等数据分析利器背后的开源项目,了解数据分析流程与实践要点。 | ||
* **人工智能** :解读 TensorFlow、PyTorch 等人工智能框架所属的开源项目,洞察人工智能发展趋势。 | ||
* **找到适合自己的方向并选择活跃的开源项目** :引导开发者依据自身兴趣、技能专长,在众多方向中筛选合适的开源项目深入参与。 | ||
|
||
## 三、表达与交流的重要性 | ||
|
||
1. **如何清晰表达问题和想法** :传授有效沟通技巧,如组织语言逻辑、突出重点,确保在开源协作中准确传达信息。 | ||
2. **如何有效进行跨文化交流** :鉴于开源社区的全球化特性,分享跨文化交流注意事项,如尊重文化差异、避免误解,促进国际合作顺畅。 | ||
|
||
## 四、学会如何提问 | ||
|
||
1. **如何查找资料** :教导善用 Google 和 Stack Overflow 等搜索引擎与技术问答平台,快速定位所需知识,自主解决常见问题。 | ||
2. **提问的基本规范** :强调明确描述问题、给出复现步骤的重要性,提高问题被解答的效率,维护良好社区氛围。 | ||
|
||
## 五、参考任务 | ||
|
||
1. 学习使用 Git,完成一次 Fork 并提交 PR 的流程。 | ||
2. 选择一个开源项目,通过贡献文档或代码提交一个 PR。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
|
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,7 +10,7 @@ | |
|
||
一个优秀的*提交*应该只解决一个问题,使得功能完整,即便只有一行代码也可以提交。而一个优秀的*提交信息*是项目的标杆,这是未来其他贡献者给项目贡献的规范。他们会按照你的*提交信息*去编写他们的贡献,从标题的格式到内容的详细程度。所以如何写好一个*提交信息*就显得十分重要。不仅要遵循项目的风格指南,确保*提交信息*的一致;还要使得*提交信息*的标题清晰简洁,能够准确反映变更的内容。 | ||
|
||
需要注意的是,RustSBI 社区采用**全英文**编写的*提交信息*。同时,`rustsbi/rustsbi`若干个模块都具有自己的更改日志文件,我们使用*提交信息*来生成 `CHANGELOG.md` 文档。我们通过*集成测试*检查对本模块文件夹下的任何文件的修改,**必须一并为对应的`CHANGELOG.md`增加 CHANGELOG 条目**。否则检查不通过,可能会导致您的更改无法出现在下一个版本的更新日志中。 | ||
需要注意的是,RustSBI 社区采用**全英文**编写的*提交信息*。同时, `rustsbi/rustsbi` 若干个模块都具有自己的更改日志文件,我们使用*提交信息*来生成 `CHANGELOG.md` 文档。我们通过*集成测试*检查对本模块文件夹下的任何文件的修改,**必须一并为对应的 `CHANGELOG.md` 增加 CHANGELOG 条目**。否则检查不通过,可能会导致您的更改无法出现在下一个版本的更新日志中。 | ||
|
||
其次,每个*提交*都需要签名,每次*拉取请求*或*推送*都由*集成测试*检查更新的*提交*是否具有 `Signed-off-by` 标记。 | ||
|
||
|
@@ -35,25 +35,26 @@ | |
``` | ||
|
||
> 为了更好的可读性,提交信息每行都不应该超过 100 个字符! | ||
#### 标题 | ||
|
||
作为提交信息的第一行,`<标题>`有着严格的格式要求,通常为: | ||
作为提交信息的第一行, `<标题>` 有着严格的格式要求,通常为: | ||
|
||
``` | ||
<scope or type>: <subject> | ||
``` | ||
|
||
如果你已习惯了**约定式提交**也可以同时使用`<类型>`和`<范围>`: | ||
如果你已习惯了**约定式提交**也可以同时使用 `<类型>` 和 `<范围>` : | ||
|
||
``` | ||
<type>(<scope>): <suject> | ||
``` | ||
|
||
> `<范围 或 类型>/<类型>(范围)`后面有一个 `!` ,或在`<脚注>`中包含 `BREAKING CHANGE:` ,提醒注意**破坏性变更**。破坏性变更可以是任意`<类型>`提交的一部分。 | ||
> `<范围 或 类型>/<类型>(范围)` 后面有一个 `!` ,或在 `<脚注>` 中包含 `BREAKING CHANGE:` ,提醒注意**破坏性变更**。破坏性变更可以是任意 `<类型>` 提交的一部分。 | ||
#### 范围 | ||
|
||
`<范围>`是所主要更改的子模块名称,多个子模块和具有重名的子模块的更改可以取上层模块名称作为`<标题>`的前缀。`<范围>`的使用适合于一个提交中涵盖了多个`<类型>`或不适合用`<类型>`来界定的场景。 | ||
`<范围>` 是所主要更改的子模块名称,多个子模块和具有重名的子模块的更改可以取上层模块名称作为 `<标题>` 的前缀。 `<范围>` 的使用适合于一个提交中涵盖了多个 `<类型>` 或不适合用 `<类型>` 来界定的场景。 | ||
|
||
示例: | ||
|
||
|
@@ -68,7 +69,7 @@ | |
|
||
#### 类型 | ||
|
||
作为对`<范围>`的补充,遵循**约定式提交**,必须为下列之一,同时附上示例: | ||
作为对 `<范围>` 的补充,遵循**约定式提交**,必须为下列之一,同时附上示例: | ||
|
||
- **`feat`**: 新增了一个功能 ([5baa946](https://github.com/rustsbi/rustsbi/commit/5baa946c4036bccba760be36c049ad1626b8d5e0)) | ||
- **`fix`**: 修复了一个 bug ([293db69](https://github.com/rustsbi/rustsbi/commit/293db697b39daf69eae1315cb85996e134d0d0b7)) | ||
|
@@ -89,11 +90,11 @@ | |
|
||
#### 正文 | ||
|
||
在`<标题>`与`<正文>`之间隔一个空行,即保持第二行为空,正文另起一行。这里可以对你的变更说明进行详细的展开了,希望上面整理思路的方式可以帮到你。记得和`<主题>`同样使用命令式的现在时态:"change" 而不是 "changed" 或 "changes"。 | ||
在 `<标题>` 与 `<正文>` 之间隔一个空行,即保持第二行为空,正文另起一行。这里可以对你的变更说明进行详细的展开了,希望上面整理思路的方式可以帮到你。记得和 `<主题>` 同样使用命令式的现在时态:"change" 而不是 "changed" 或 "changes"。 | ||
|
||
#### 脚注 | ||
|
||
`<脚注>`与之前的`<正文>`也要隔一个空行。`<脚注>`部分包含签名和与该提交相关的其他引用: | ||
`<脚注>` 与之前的 `<正文>` 也要隔一个空行。 `<脚注>` 部分包含签名和与该提交相关的其他引用: | ||
|
||
- **`Signed-off-by:`** `git commit` 命令中通过 `-s` 参数指定。 | ||
- **`Fix:`** 如果该提交修复了一个开放问题,在日志末尾添加对该问题的引用。 | ||
|
@@ -132,7 +133,8 @@ Signed-off-by: DongQing <[email protected]> | |
``` | ||
binary: enhance `SbiRet` structure functions to match `core::result::Result` APIs | ||
- binary: change `SbiRet::and` signature to `fn and<U>(self, res: Result<U, Error>) -> Result<U, Error>` | ||
- binary: change `SbiRet::and` signature to `fn and<U>(self, res: Result<U, Error>) -> Result<U, Error>` | ||
- binary: add function `is_ok_and`, `is_err_and`, `inspect` and `inspect_err` for `SbiRet` structure | ||
Signed-off-by: Zhouqi Jiang <[email protected]> | ||
|
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,34 +1 @@ | ||
# S4: 领导开源阶段 | ||
|
||
**目标** :成为开源项目的领导者,掌握社区管理和开源治理能力。 | ||
|
||
## 一、开源社区及其管理 | ||
|
||
1. **如何组织和维护开源社区** : | ||
|
||
* **Code of Conduct** :深入阐释制定并推行行为准则(Code of Conduct)的必要性,明确其对于营造健康、友好、包容社区氛围的关键作用,以及如何依据社区特性拟定具体条款。 | ||
* **贡献者指南** :详细介绍编写一份全面、易懂且具有吸引力的贡献者指南的要点,涵盖从新手入门指引、开发流程规范,到问题反馈机制等各个环节,助力潜在贡献者快速融入项目。 | ||
|
||
2. **如何吸引和管理贡献者** : | ||
|
||
* **鼓励多样性和贡献** :探讨多种策略激发来自不同背景、技能水平的人员参与开源,如设立多样化的任务模块以适配不同能力层次,举办线上线下交流活动增强社区凝聚力,设置合理激励机制认可贡献者价值,促进社区持续繁荣。 | ||
|
||
## 二、开源社区安全治理 | ||
|
||
1. **如何处理安全问题(如 CVE 报告)** :讲解面对安全漏洞报告(如 CVE 报告)时的应急响应流程,包括漏洞确认、信息发布、修复方案制定与实施,确保社区项目安全性。 | ||
2. **如何保护社区免受恶意代码或行为影响** :分享识别与防范恶意代码注入、恶意行为扰乱社区秩序等安全威胁的方法,例如采用代码审查自动化工具、建立社区成员信誉评级体系,全方位保障社区健康运行。 | ||
|
||
## 三、开源社区合规 | ||
|
||
1. **合规流程的重要性** : | ||
|
||
* **知识产权管理** :强调在开源项目中妥善管理知识产权的重要意义,避免侵权纠纷,保障项目合法权益,阐述如何对代码来源、版权归属进行清晰记录与管控。 | ||
* **许可证合规** :深入剖析开源许可证合规的关键要点,依据不同许可证类型(如 GPL、MIT 等)要求,确保项目的使用、分发、修改等操作严格遵循规定,防范法律风险。 | ||
|
||
2. **如何进行开源项目的合规审计** :介绍开展合规审计的流程、方法与工具,如定期自查代码库许可证一致性、借助专业法务工具审查知识产权隐患,维护项目合规运营。 | ||
|
||
## 四、参考任务 | ||
|
||
1. 创建一个开源项目,撰写清晰的 README 和贡献者指南。 | ||
2. 通过自己的开源项目吸引其他人贡献并管理他们的贡献。 | ||
3. 如果不想长期维护,可以将项目捐献到俱乐部。 |
Oops, something went wrong.