---
title: '开源的阶段性成长指南'
description: '本文将为您呈现一份开源项目的阶段性成长指南，帮助您了解如何在开源项目中不断进步和成长。'
ShowRssButtonInSectionTermList: true
date: 2023-05-16T16:36:15+08:00
draft: false
showtoc: true
tocopen: false
aliases:
  - /zh/growth/posts/open-source-stage-growth/
author: ["Xinwei Xiong", "Me"]
keywords:
  - 开源
  - 成长
  - 指南
tags:
  - Golang (GO语言)
  - Kubernetes
  - OpenIM
  - Cloud Native
  - Open Source
categories:
  - Growth
tldr:
  - "开源成长分八个阶段，从简单看源码逐步演进到商业化运营，每阶段通过问题驱动和输出分享实现知识积累与技能提升。"
  - "成功跨越各阶段需要持续输出、闭环反馈、深度理解与实践相结合，而非仅在理论层面学习，最终可成为行业专家并获得高收益。"
  - "开源之路需要勇气毅力耐心，关键在三观驱动的格局建设，通过一举多得的方式将时间投入转化为价值产出、社区贡献、影响力提升与真实学习成果。"
---

✨ 熟悉我的人都知道，我是一名不折不扣的开源爱好者，从大一开始接触到 GitHub 后，逐渐的沉迷于 开源世界 ~ 今天这篇文章很特别，算是自己参考并且总结出来的开源阶段，以及学习开源项目的步骤和心得。未来自己也是按照自己的规划来进行成长。
同[学习 Kubernetes 的成长轨迹](https://www.notion.so/CloudNative-Kubernetes-2f278e98ed274999829333272415c72d)一样，这篇文章将会[长期更新，也可以参与贡献](https://www.notion.so/f8854a0f60d346d98b9eb2ccb6eaef8f) ~

目前我是处于第一阶段，处于一种对开源世界和对知识的沉淀与积累的过程中，这个阶段的主要表现是我们开始学一些基础。但是我喜欢做笔记将它们记录下来，供自己日后翻阅和复习，当然也是制作自己的内容价值。

[GitHub - cubxxw/awesome-cs-cloudnative-blockchain: 📚 菜鸟成长手册🚀  CS系列 、云原生系列、区块链系列、web3系列🔥、Golang系列💡......](https://github.com/cubxxw/cs-awesome-Block_Chain)

这一阶段，并不是意味着我开始迈入第二阶段，第一阶段就 come to an end.

我认为以下所讲的所有阶段就像是人生轨迹，并不是意味着你当爸爸了就不是父母的孩子，你依旧可以扮演着多种角色，并且不断完善和改进自己的角色。开源项目也是如此，类比我们的成长经历，在后一阶段我依旧会扮演好前一阶段的角色。所以我会坚持做自己的内容创作和知识共享 ~ 

> ✨ 下面开始介绍适合大多数人的开源项目的不同阶段，为了方便定位，我将上面知识积累称呼为 0 阶段知识积累阶段。下面开始从第一阶段开始讲起~

## 第一阶段：简单看源码阶段

<aside>
💦 在这一个层次的我们，是一个刚毕业或者没毕业的大学生，又或者是刚刚踏入职场，我们是一个新手，对于开源项目保持一心热血但是不知道从何开始。
   </aside>


**方法：** 简单看源码

**说明：** 简单看源码、文档、跑跑样例代码

**学习效果：** 1 ~ 2

**有产出：** 没有产出

**是否达成学习闭环：** 尽量问题驱动看源码，从问题出发学源码回归问题，达成闭环

**Get 到的技能点**： 阅读源码的技能

**案例：** 阅读 sealer、sealos、Kubernetes、k3s、horizoncd 的源码，并且测试

| 阶段             | 第一阶段：简单看源码阶段                                     |
| ---------------- | ------------------------------------------------------------ |
| 方法             | 简单看源码                                                   |
| 说明             | 简单看源码、文档、跑跑样例代码                               |
| 学习效果         | 1 ~ 2                                                        |
| 有产出           | 没有产出                                                     |
| 是否达成学习闭环 | 尽量问题驱动看源码，从问题出发学源码回归问题，达成闭环       |
| 技能点           | 阅读源码的技能                                               |
| 案例             | 阅读 sealer、sealos、Kubernetes、k3s、horizoncd 的源码，并且测试 |

第一阶段的建议是简单地看源码、文档、跑跑样例代码来学习。这个阶段的主要目的是积累基础知识，建议尽量问题驱动看源码，从问题出发学源码回归问题，达成闭环。阅读源码的技能是这个阶段最重要的技能点。建议阅读一些开源项目，例如 sealer、sealos、Kubernetes、k3s、horizoncd 等，并进行测试。

## 第二阶段：整理源代码

<aside>
💦 在这一阶段的我们很特别，这是跟进一步的学习和整理，效果更好一些、不过也更消耗时间。第二阶段的建议是整理源代码，仔细阅读源代码，整理出项目结构和流程。



</aside>

- **方法：** 整理源代码
- **说明：** 仔细阅读源代码，整理出项目结构和流程，将所有源代码或者部分源代码整理一遍，包括将包名全部改掉，编译/测试/运行 通过
- 🔥 分为三个模块，分别是新扩展的 Makefile 演示、脚本改进的演示，以及 CICD 流的改进：
- **有产出**：  没有产出（加入没有输出分享）
- **是否达成学习闭环：** 整理出项目结构和流程后，进行总结和复盘
- **Get 到的技能点**：整理源代码的能力、更细粒度的源码阅读能力
- **案例：** 整理出 Kubernetes 的项目结构和流程，对 sealos 项目进行整理和输出。

| 阶段             | 第二阶段：整理源代码                                         |
| ---------------- | ------------------------------------------------------------ |
| 方法             | 整理源代码                                                   |
| 说明             | 仔细阅读源代码，整理出项目结构和流程，将所有源代码或者部分源代码整理一遍，包括将包名全部改掉，编译/测试/运行 通过 |
| 学习效果         | 2 ~ 3                                                        |
| 有产出           | 整理出项目结构和流程                                         |
| 是否达成学习闭环 | 整理出项目结构和流程后，进行总结和复盘                       |
| 技能点           | 整理源代码的能力                                             |
| 案例             | 整理出 Kubernetes 的项目结构和流程                           |

第二阶段的建议是整理源代码，仔细阅读源代码，整理出项目结构和流程。这个阶段的主要目的是更深入地了解项目，掌握项目的整体框架和流程。建议整理出项目结构和流程后，进行总结和复盘。整理源代码的能力是这个阶段最重要的技能点。建议整理一些大型的开源项目，例如 Kubernetes，并进行总结和复盘。

## 第三阶段：整理 + 输出分享

<aside>
💦 我们在上一阶段已经看到了缺陷，是的我们没有做内容的输出分享。第三阶段相当于是对 第二阶段的补充和升级。第三阶段在第二阶段的基础上总结出源码分析或者是架构设计文档 / PPT，或者是架构图，在个人博客和社区分享。之前有遇到过一个架构师大佬，当初在学习 Istio 这个项目的时候，花了一周的时间对 Envoy 的项目阅读源码并且学习，将所有的笔记整理在 notion，在笔记中整理出系统架构图和设计方案。</aside>


- **方法：** 整理 + 输出分享
- **说明：** 总结出源码分析、架构设计文档/PPT或架构图，并在个人博客和社区分享。
- **学习效果：** 3 ~ 5
- **有产出：** 有产出，如博客文章、PPT、架构图等
- **是否达成学习闭环：** 输出分享后，进行总结和复盘
- **Get 到的技能点：** 输出分享的能力、更深入的源码阅读能力、技术、整理、输出和分享能力。
- **案例：** 总结出 Envoy 的系统架构图和设计方案，并在个人博客和社区分享。画出 sealer 、 sealos 的系统设计和架构方案，Push 到个人博客和社区。Youtube 上也有很多做内容分享的，其中的过程特别特别值得参考和学习。

| 阶段             | 第三阶段：整理 + 输出分享                                    |
| ---------------- | ------------------------------------------------------------ |
| 方法             | 整理 + 输出分享                                              |
| 说明             | 总结出源码分析、架构设计文档/PPT或架构图，并在个人博客和社区分享 |
| 学习效果         | 3 ~ 5                                                        |
| 有产出           | 有产出，如博客文章、PPT、架构图等                            |
| 是否达成学习闭环 | 输出分享后，进行总结和复盘                                   |
| 技能点           | 输出分享的能力、更深入的源码阅读能力、技术、整理、输出和分享能力。 |
| 案例             | 总结出 Envoy 的系统架构图和设计方案，并在个人博客和社区分享。 |

第三阶段的建议是总结出源码分析、架构设计文档/PPT或架构图，并在个人博客和社区分享。这个阶段的主要目的是通过输出分享来巩固自己的知识，并为其他人提供帮助。输出分享的能力是这个阶段最重要的技能点。建议总结一些大型的开源项目，例如 Envoy，并进行输出分享，在分享的过程中不断总结和复盘，加深对项目的理解。

⚠️ 这个过程还可以配合视频讲解，我提供一个方案，在阅读源码后写出自己的阅读笔记，总结出自己的阅读笔记，画出架构图和思维导图，在 bilibili OR youtube 上进行讲解，这样印象更加深刻。建议每个月都对一个开源项目进行一次源码的解析文章，并且发表在 个人博客 和 GitHub 中。我觉得这个习惯是非常不错的。

## 第四阶段：开发克隆版

<aside>
💦 这个阶段就很好理解了，比如说 sealos 从 sealer 分割出来。当然远远不止这些，包括很多二次开发项目，用 Go语言 重构 Java、 用 Go语言 重构 PHP。我们把这些重构的项目可以开源并且分享到社区（GitHub） 中。



</aside>

- **方法：** 开发克隆版
- **说明：** 开发自己的克隆版，如 sealos 从 sealer 分割出来。开源并且分享到社区（GitHub） 中。用 Go语言 重构 Java 项目或者是 PHP 项目，或者项目模仿开发~
- **学习效果：** 5 ~ 10
- **有产出：** 有产出，如开源项目、GitHub 项目等
- **是否达成学习闭环：** 开源并且分享到社区后，进行总结和复盘
- **Get 到的技能点：** 独立开发能力、深度对源码的阅读和理解，技术、项目开发技能
- **案例：** 开发自己的克隆版，如 sealos 从 sealer 分割出来。开源并且分享到社区（GitHub） 中。再比如说 k3s 也是 对 Kubernetes 发行版的精炼。

| 阶段             | 第四阶段：开发克隆版                                         |
| ---------------- | ------------------------------------------------------------ |
| 方法             | 开发克隆版                                                   |
| 说明             | 开发自己的克隆版，如 sealos 从 sealer 分割出来。开源并且分享到社区（GitHub） 中。用 Go语言 重构 Java 项目或者是 PHP 项目，或者项目模仿开发~ |
| 学习效果         | 5 ~ 10                                                       |
| 有产出           | 有产出，如开源项目、GitHub 项目等                            |
| 是否达成学习闭环 | 开源并且分享到社区后，进行总结和复盘                         |
| 技能点           | 独立开发能力、深度对源码的阅读和理解，技术、项目开发技能     |
| 案例             | 开发自己的克隆版，如 sealos 从 sealer 分割出来。开源并且分享到社区（GitHub） 中 |

第四阶段的建议是开发自己的克隆版，如 sealos 从 sealer 分割出来。这个阶段的主要目的是通过独立开发项目来巩固自己的知识，并且为其他人提供帮助。有时候我们觉得某个项目并不简单，比如说  [iam](https://github.com/cubxxw/iam) 项目，项目很优质，我们可以进行再次开发，从而深入学习 iam 的项目设计。

## 第五阶段：生产化落地

<aside>
💦 这个阶段就是处于一个高层了，源码经过整理输出，并且能够生产化落地，在公司中也能承担业务流量，并且能根据业务需要进行定制或者自研。这个阶段学习的效果是非常好的，我们通过企业级项目实战经验学习到的一般都能让我们终身难忘。



</aside>

- 学习如何对项目进行性能优化，如何提高项目的稳定性和可靠性
- 学习如何进行容器化部署和管理，如 Kubernetes
- 学习如何进行持续集成和持续部署，如 Jenkins、GitLab CI/CD、Travis CI 等
- 学习如何进行监控和日志分析，如 Prometheus、Grafana、ELK 等
- 学习如何进行安全防护和漏洞修复，如 OWASP Top 10、云原生安全等

建议通过实际项目来进行学习，例如可以参与公司的项目实施，或者通过个人项目来进行实践。在实践过程中，可以不断总结和复盘，加深对知识的理解和掌握。

最后，要注意在实际项目中遵循规范和标准，如代码规范、安全规范、架构规范等。同时也要注重团队协作和沟通，与同事进行交流和分享，不断提升自己的技能和能力。

| 阶段             | 第五阶段：生产化落地                                         |
| ---------------- | ------------------------------------------------------------ |
| 方法             | 实际项目实践                                                 |
| 说明             | 将学到的知识应用到实际生产中，通过企业级项目实战经验来巩固和提升自己的技能 |
| 学习效果         | 10+                                                          |
| 有产出           | 有产出，如企业级项目实战经验、性能优化、容器化部署和管理、持续集成和持续部署、监控和日志分析、安全防护和漏洞修复等 |
| 是否达成学习闭环 | 在实践过程中不断总结和复盘                                   |
| 技能点           | 实际项目实践能力、性能优化、容器化部署和管理、持续集成和持续部署、监控和日志分析、安全防护和漏洞修复等 |
| 案例             | 参与公司的项目实施、通过个人项目来进行实践                   |

这个阶段的主要目的是将学到的知识应用到实际生产中，并且能够根据业务需要进行定制或自研。建议在公司中承担业务流量，通过企业级项目实战经验来巩固和提升自己的技能。

👀 当然这个阶段，生产化落地的时候，我们肯定要对开源项目进行深度的定制，并没有完美并且最适合业务的项目，这个过程需要我们不断地去探索。这个过程中我们可以吸收到很多牛人的经验，比如说在监控领域、Kubernetes 的网络、可观测性方向的大佬对开源项目不断研究的过程，并且研究出自己的开源项目，这是非常不容易的，这个过程可以帮助你成为国内 ××领域顶级专家。

## 第六阶段：开发知识产品

<aside>
💦 第六阶段更通俗来说也是和第五阶段在同一层次的，第六阶段将开源项目完全吸收的情况下，开发克隆项目、或者开发开源应用演示项目，并且制作成付费产品（视频 / 书籍 / 文档），发布到开源社区。



</aside>

这个阶段的目标是将自己学到的知识转化为实际的产品，并且通过分享来帮助其他人。建议开发一些实用的工具或者演示项目，例如 Kubernetes 集群部署工具、云原生应用示例项目等。制作产品的过程中，需要注意产品的质量和用户体验，同时也要注重宣传和推广，将产品推向更广泛的用户群体。

在实际制作产品的过程中，可以不断总结和复盘，加深对知识的理解和掌握。同时也要注意与其他开源社区成员的交流和合作，不断提升自己的技能和能力，让自己成为开源社区的中坚力量。

| 阶段             | 第六阶段：开发知识产品                                       |
| ---------------- | ------------------------------------------------------------ |
| 方法             | 开发克隆项目或者开源应用演示项目，并将其制作成付费产品（视频/书籍/文档） |
| 说明             | 将自己学到的知识转化为实际的产品，并通过分享来帮助其他人     |
| 学习效果         | 10+                                                          |
| 有产出           | 有产出，如付费视频、付费书籍、付费文档等                     |
| 是否达成学习闭环 | 制作产品的过程中不断总结和复盘                               |
| 技能点           | 产品设计和制作能力、宣传和推广能力、交流和合作能力           |
| 案例             | 开发 Kubernetes 集群部署工具、云原生应用示例项目等           |

💡 这个阶段我们不仅仅获取到了知识产品设计和开发技能，同样还有无形的财富，比如说行业影响力。

## 第七阶段：开发自己的开源项目

<aside>
💦 第七阶段在国内可能很少见到，但是其实在欧美国家很常见，国内开源氛围不是很浓厚。第七阶段 是一个需要慢慢沉淀的阶段，前期需要大量的积累，在 吸收开源项目 + 企业落地实践的基础上，沉淀出自己的开源项目，并且持续推动开源社区的建设。



</aside>

- **方法：** 开发自己的开源项目
- **说明：** 在吸收开源项目 + 企业落地实践的基础上，沉淀出自己的开源项目，并且持续推动开源社区的建设。
- **学习效果：** 10+
- **有产出：** 有产出，如开源项目、GitHub 项目等、有社区反馈（issue），有持续改进（PR）
- **是否达成学习闭环：** 持续推动开源社区的建设，进行总结和复盘
- **Get 到的技能点：** 独立开发能力、深度对源码的阅读和理解、项目开发技能、开源社区管理和推广等， **当然还有更多的是行业影响力，跳槽的最佳姿势（GitHub is your resume, let HR find you !)**
- **案例：** 开发自己的开源项目，如很牛逼的 [sealos](https://github.com/labring/sealos) 项目发起人 方海涛， 在 Cloud Native 领域有很高的知名度。

| 阶段             | 第七阶段：开发自己的开源项目                                 |
| ---------------- | ------------------------------------------------------------ |
| 方法             | 开发自己的开源项目                                           |
| 说明             | 在吸收开源项目 + 企业落地实践的基础上，沉淀出自己的开源项目，并且持续推动开源社区的建设。 |
| 学习效果         | 10+                                                          |
| 有产出           | 有产出，如开源项目、GitHub 项目等                            |
| 是否达成学习闭环 | 持续推动开源社区的建设，进行总结和复盘                       |
| 技能点           | 独立开发能力、深度对源码的阅读和理解、项目开发技能、开源社区管理和推广等 |
| 案例             | 开发自己的开源项目，如很牛逼的https://github.com/labring/sealos项目发起人 方海涛， 在 Cloud Native 领域有很高的知名度。 |

这个阶段的主要目的是沉淀出自己的开源项目，并且持续推动开源社区的建设。在此过程中，需要不断地学习和掌握独立开发能力、深度对源码的阅读和理解、项目开发技能，以及开源社区管理和推广等方面的技能点。

建议通过吸收开源项目和企业落地实践的经验，进行总结和复盘，沉淀出自己的开源项目。在开源社区中推广和维护自己的项目，不断提升自己的技能和能力，并且为开源社区的建设做出贡献。

😏 再比如说这里还有一个知名大佬，吴晟，参考他的博客：[https://wu-sheng.github.io/me/](https://wu-sheng.github.io/me/)，以及他的 GitHub 地址：https://github.com/wu-sheng/me 

## 第八阶段：商业化自己的开源项目

<aside>
💦 到这个阶段，是非常非常困难的，sealos 目前正在处于这一阶段，docker 是这个阶段的成功案例，更多的还有 TiDB、Kafka 等等，在这一阶段的回报率特别高，100 + ，有完全的产出和企业客户闭环。在自己的开源项目产品基础上，持续推进社区生态建设，并且逐渐走向商业化服务道路。



</aside>

| 阶段             | 第八阶段：商业化自己的开源项目                               |
| ---------------- | ------------------------------------------------------------ |
| 方法             | 在自己的开源项目产品基础上，持续推进社区生态建设，并且逐渐走向商业化服务道路 |
| 说明             | 利用开源项目为核心，打造商业化产品和服务，为用户提供高质量、可靠的解决方案 |
| 学习效果         | 100+                                                         |
| 有产出           | 有完全的产出和企业客户闭环                                   |
| 是否达成学习闭环 | 持续推进社区生态建设                                         |
| 技能点           | 商业化运营能力、项目管理能力、团队协作和领导能力             |
| 案例             | TiDB、Kafka 等等                                             |

这个阶段是比较困难的，需要在前几个阶段的基础上不断地积累、总结和沉淀。在自己的开源项目产品基础上，持续推进社区生态建设，并且逐渐走向商业化服务道路。利用开源项目为核心，打造商业化产品和服务，为用户提供高质量、可靠的解决方案。

在这个阶段中，需要不断提升自己的商业化运营能力、项目管理能力、团队协作和领导能力等方面的技能点。需要建立高效的团队协作机制，同时注重项目管理和风险控制，确保商业化服务的高质量和可靠性。

在商业化服务的过程中，需要注重用户体验和客户服务，建立良好的用户关系，不断改进和优化产品和服务。同时还需要积极参与开源社区的建设和推广，为开源社区的发展做出贡献。

这个阶段的回报率非常高，有完全的产出和企业客户闭环，达到了100+的学习效果。

## 总结

这篇文章详细介绍了从学习开源到商业化的八个阶段，让你逐步成为开源领域的大佬。但是，如果你认为这是一条轻松愉快的道路，那你就大错特错了。这个过程需要不断的学习和总结，以及对知识的深度理解。但是，如果你能一步步走到商业化阶段，那么回报肯定是非常可观的。总之，跨越这八个阶段需要勇气、毅力和耐心，但是这个过程也会让你成为行业中的佼佼者。

<aside>
⚠️ 1. 输出要有输出，学习要有产出。
2. 闭环反馈 + 持续改进，用户越多，反馈越多，学习效果越好。最好你的学习效果能够量化。
3. 如果你要真正的理解某个 人 / 物，那么你就要尝试改变 他/她/它 ，学习开源项目也是这样。
4. 要一举多得，投入时间 →  有价值产出 → 个人沉淀积累 → 社区贡献 → 提升影响力 → 真正学到东西。</aside>


这个周期会更长，即使我是从大一开始准备的，也依旧遥不可及。我一直在探索 复利曲线 的那个拐点~

对于我们来说，不管是谋事在人，成事在天。又或者是 谋事在天，成事在人，我们现在处于一个大背景的时代，可以兼容各类各样的人才，硬实力（技术）代表着硬性指标。包括更多的软实力，比如：能力、情商（沟通力、影响力、领导力）。在这个架构上，影响这一因素的包括我们的三观：人生观、价值观、世界观。从而影响我们的格局（眼界+行动力 + 胸襟、胆识、等心理要素的内在布局）和人脉~
