✨ 熟悉我的人都知道,我是一名不折不扣的开源爱好者,从大一开始接触到 GitHub 后,逐渐的沉迷于 开源世界 ~ 今天这篇文章很特别,算是自己参考并且总结出来的开源阶段,以及学习开源项目的步骤和心得。未来自己也是按照自己的规划来进行成长。 同学习 Kubernetes 的成长轨迹一样,这篇文章将会长期更新,也可以参与贡献 ~
目前我是处于第一阶段,处于一种对开源世界和对知识的沉淀与积累的过程中,这个阶段的主要表现是我们开始学一些基础。但是我喜欢做笔记将它们记录下来,供自己日后翻阅和复习,当然也是制作自己的内容价值。
这一阶段,并不是意味着我开始迈入第二阶段,第一阶段就 come to an end.
我认为以下所讲的所有阶段就像是人生轨迹,并不是意味着你当爸爸了就不是父母的孩子,你依旧可以扮演着多种角色,并且不断完善和改进自己的角色。开源项目也是如此,类比我们的成长经历,在后一阶段我依旧会扮演好前一阶段的角色。所以我会坚持做自己的内容创作和知识共享 ~
✨ 下面开始介绍适合大多数人的开源项目的不同阶段,为了方便定位,我将上面知识积累称呼为 0 阶段知识积累阶段。下面开始从第一阶段开始讲起~
第一阶段:简单看源码阶段
方法: 简单看源码
说明: 简单看源码、文档、跑跑样例代码
学习效果: 1 ~ 2
有产出: 没有产出
是否达成学习闭环: 尽量问题驱动看源码,从问题出发学源码回归问题,达成闭环
Get 到的技能点: 阅读源码的技能
案例: 阅读 sealer、sealos、Kubernetes、k3s、horizoncd 的源码,并且测试
阶段 | 第一阶段:简单看源码阶段 |
---|---|
方法 | 简单看源码 |
说明 | 简单看源码、文档、跑跑样例代码 |
学习效果 | 1 ~ 2 |
有产出 | 没有产出 |
是否达成学习闭环 | 尽量问题驱动看源码,从问题出发学源码回归问题,达成闭环 |
技能点 | 阅读源码的技能 |
案例 | 阅读 sealer、sealos、Kubernetes、k3s、horizoncd 的源码,并且测试 |
第一阶段的建议是简单地看源码、文档、跑跑样例代码来学习。这个阶段的主要目的是积累基础知识,建议尽量问题驱动看源码,从问题出发学源码回归问题,达成闭环。阅读源码的技能是这个阶段最重要的技能点。建议阅读一些开源项目,例如 sealer、sealos、Kubernetes、k3s、horizoncd 等,并进行测试。
第二阶段:整理源代码
- 方法: 整理源代码
- 说明: 仔细阅读源代码,整理出项目结构和流程,将所有源代码或者部分源代码整理一遍,包括将包名全部改掉,编译/测试/运行 通过
- 🔥 分为三个模块,分别是新扩展的 Makefile 演示、脚本改进的演示,以及 CICD 流的改进:
- 有产出: 没有产出(加入没有输出分享)
- 是否达成学习闭环: 整理出项目结构和流程后,进行总结和复盘
- Get 到的技能点:整理源代码的能力、更细粒度的源码阅读能力
- 案例: 整理出 Kubernetes 的项目结构和流程,对 sealos 项目进行整理和输出。
阶段 | 第二阶段:整理源代码 |
---|---|
方法 | 整理源代码 |
说明 | 仔细阅读源代码,整理出项目结构和流程,将所有源代码或者部分源代码整理一遍,包括将包名全部改掉,编译/测试/运行 通过 |
学习效果 | 2 ~ 3 |
有产出 | 整理出项目结构和流程 |
是否达成学习闭环 | 整理出项目结构和流程后,进行总结和复盘 |
技能点 | 整理源代码的能力 |
案例 | 整理出 Kubernetes 的项目结构和流程 |
第二阶段的建议是整理源代码,仔细阅读源代码,整理出项目结构和流程。这个阶段的主要目的是更深入地了解项目,掌握项目的整体框架和流程。建议整理出项目结构和流程后,进行总结和复盘。整理源代码的能力是这个阶段最重要的技能点。建议整理一些大型的开源项目,例如 Kubernetes,并进行总结和复盘。
第三阶段:整理 + 输出分享
- 方法: 整理 + 输出分享
- 说明: 总结出源码分析、架构设计文档/PPT或架构图,并在个人博客和社区分享。
- 学习效果: 3 ~ 5
- 有产出: 有产出,如博客文章、PPT、架构图等
- 是否达成学习闭环: 输出分享后,进行总结和复盘
- Get 到的技能点: 输出分享的能力、更深入的源码阅读能力、技术、整理、输出和分享能力。
- 案例: 总结出 Envoy 的系统架构图和设计方案,并在个人博客和社区分享。画出 sealer 、 sealos 的系统设计和架构方案,Push 到个人博客和社区。Youtube 上也有很多做内容分享的,其中的过程特别特别值得参考和学习。
阶段 | 第三阶段:整理 + 输出分享 |
---|---|
方法 | 整理 + 输出分享 |
说明 | 总结出源码分析、架构设计文档/PPT或架构图,并在个人博客和社区分享 |
学习效果 | 3 ~ 5 |
有产出 | 有产出,如博客文章、PPT、架构图等 |
是否达成学习闭环 | 输出分享后,进行总结和复盘 |
技能点 | 输出分享的能力、更深入的源码阅读能力、技术、整理、输出和分享能力。 |
案例 | 总结出 Envoy 的系统架构图和设计方案,并在个人博客和社区分享。 |
第三阶段的建议是总结出源码分析、架构设计文档/PPT或架构图,并在个人博客和社区分享。这个阶段的主要目的是通过输出分享来巩固自己的知识,并为其他人提供帮助。输出分享的能力是这个阶段最重要的技能点。建议总结一些大型的开源项目,例如 Envoy,并进行输出分享,在分享的过程中不断总结和复盘,加深对项目的理解。
⚠️ 这个过程还可以配合视频讲解,我提供一个方案,在阅读源码后写出自己的阅读笔记,总结出自己的阅读笔记,画出架构图和思维导图,在 bilibili OR youtube 上进行讲解,这样印象更加深刻。建议每个月都对一个开源项目进行一次源码的解析文章,并且发表在 个人博客 和 GitHub 中。我觉得这个习惯是非常不错的。
第四阶段:开发克隆版
- 方法: 开发克隆版
- 说明: 开发自己的克隆版,如 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 项目,项目很优质,我们可以进行再次开发,从而深入学习 iam 的项目设计。
第五阶段:生产化落地
- 学习如何对项目进行性能优化,如何提高项目的稳定性和可靠性
- 学习如何进行容器化部署和管理,如 Kubernetes
- 学习如何进行持续集成和持续部署,如 Jenkins、GitLab CI/CD、Travis CI 等
- 学习如何进行监控和日志分析,如 Prometheus、Grafana、ELK 等
- 学习如何进行安全防护和漏洞修复,如 OWASP Top 10、云原生安全等
建议通过实际项目来进行学习,例如可以参与公司的项目实施,或者通过个人项目来进行实践。在实践过程中,可以不断总结和复盘,加深对知识的理解和掌握。
最后,要注意在实际项目中遵循规范和标准,如代码规范、安全规范、架构规范等。同时也要注重团队协作和沟通,与同事进行交流和分享,不断提升自己的技能和能力。
阶段 | 第五阶段:生产化落地 |
---|---|
方法 | 实际项目实践 |
说明 | 将学到的知识应用到实际生产中,通过企业级项目实战经验来巩固和提升自己的技能 |
学习效果 | 10+ |
有产出 | 有产出,如企业级项目实战经验、性能优化、容器化部署和管理、持续集成和持续部署、监控和日志分析、安全防护和漏洞修复等 |
是否达成学习闭环 | 在实践过程中不断总结和复盘 |
技能点 | 实际项目实践能力、性能优化、容器化部署和管理、持续集成和持续部署、监控和日志分析、安全防护和漏洞修复等 |
案例 | 参与公司的项目实施、通过个人项目来进行实践 |
这个阶段的主要目的是将学到的知识应用到实际生产中,并且能够根据业务需要进行定制或自研。建议在公司中承担业务流量,通过企业级项目实战经验来巩固和提升自己的技能。
👀 当然这个阶段,生产化落地的时候,我们肯定要对开源项目进行深度的定制,并没有完美并且最适合业务的项目,这个过程需要我们不断地去探索。这个过程中我们可以吸收到很多牛人的经验,比如说在监控领域、Kubernetes 的网络、可观测性方向的大佬对开源项目不断研究的过程,并且研究出自己的开源项目,这是非常不容易的,这个过程可以帮助你成为国内 ××领域顶级专家。
第六阶段:开发知识产品
这个阶段的目标是将自己学到的知识转化为实际的产品,并且通过分享来帮助其他人。建议开发一些实用的工具或者演示项目,例如 Kubernetes 集群部署工具、云原生应用示例项目等。制作产品的过程中,需要注意产品的质量和用户体验,同时也要注重宣传和推广,将产品推向更广泛的用户群体。
在实际制作产品的过程中,可以不断总结和复盘,加深对知识的理解和掌握。同时也要注意与其他开源社区成员的交流和合作,不断提升自己的技能和能力,让自己成为开源社区的中坚力量。
阶段 | 第六阶段:开发知识产品 |
---|---|
方法 | 开发克隆项目或者开源应用演示项目,并将其制作成付费产品(视频/书籍/文档) |
说明 | 将自己学到的知识转化为实际的产品,并通过分享来帮助其他人 |
学习效果 | 10+ |
有产出 | 有产出,如付费视频、付费书籍、付费文档等 |
是否达成学习闭环 | 制作产品的过程中不断总结和复盘 |
技能点 | 产品设计和制作能力、宣传和推广能力、交流和合作能力 |
案例 | 开发 Kubernetes 集群部署工具、云原生应用示例项目等 |
💡 这个阶段我们不仅仅获取到了知识产品设计和开发技能,同样还有无形的财富,比如说行业影响力。
第七阶段:开发自己的开源项目
- 方法: 开发自己的开源项目
- 说明: 在吸收开源项目 + 企业落地实践的基础上,沉淀出自己的开源项目,并且持续推动开源社区的建设。
- 学习效果: 10+
- 有产出: 有产出,如开源项目、GitHub 项目等、有社区反馈(issue),有持续改进(PR)
- 是否达成学习闭环: 持续推动开源社区的建设,进行总结和复盘
- Get 到的技能点: 独立开发能力、深度对源码的阅读和理解、项目开发技能、开源社区管理和推广等, 当然还有更多的是行业影响力,跳槽的最佳姿势(GitHub is your resume, let HR find you !)
- 案例: 开发自己的开源项目,如很牛逼的 sealos 项目发起人 方海涛, 在 Cloud Native 领域有很高的知名度。
阶段 | 第七阶段:开发自己的开源项目 |
---|---|
方法 | 开发自己的开源项目 |
说明 | 在吸收开源项目 + 企业落地实践的基础上,沉淀出自己的开源项目,并且持续推动开源社区的建设。 |
学习效果 | 10+ |
有产出 | 有产出,如开源项目、GitHub 项目等 |
是否达成学习闭环 | 持续推动开源社区的建设,进行总结和复盘 |
技能点 | 独立开发能力、深度对源码的阅读和理解、项目开发技能、开源社区管理和推广等 |
案例 | 开发自己的开源项目,如很牛逼的https://github.com/labring/sealos项目发起人 方海涛, 在 Cloud Native 领域有很高的知名度。 |
这个阶段的主要目的是沉淀出自己的开源项目,并且持续推动开源社区的建设。在此过程中,需要不断地学习和掌握独立开发能力、深度对源码的阅读和理解、项目开发技能,以及开源社区管理和推广等方面的技能点。
建议通过吸收开源项目和企业落地实践的经验,进行总结和复盘,沉淀出自己的开源项目。在开源社区中推广和维护自己的项目,不断提升自己的技能和能力,并且为开源社区的建设做出贡献。
😏 再比如说这里还有一个知名大佬,吴晟,参考他的博客:https://wu-sheng.github.io/me/,以及他的 GitHub 地址:https://github.com/wu-sheng/me
第八阶段:商业化自己的开源项目
阶段 | 第八阶段:商业化自己的开源项目 |
---|---|
方法 | 在自己的开源项目产品基础上,持续推进社区生态建设,并且逐渐走向商业化服务道路 |
说明 | 利用开源项目为核心,打造商业化产品和服务,为用户提供高质量、可靠的解决方案 |
学习效果 | 100+ |
有产出 | 有完全的产出和企业客户闭环 |
是否达成学习闭环 | 持续推进社区生态建设 |
技能点 | 商业化运营能力、项目管理能力、团队协作和领导能力 |
案例 | TiDB、Kafka 等等 |
这个阶段是比较困难的,需要在前几个阶段的基础上不断地积累、总结和沉淀。在自己的开源项目产品基础上,持续推进社区生态建设,并且逐渐走向商业化服务道路。利用开源项目为核心,打造商业化产品和服务,为用户提供高质量、可靠的解决方案。
在这个阶段中,需要不断提升自己的商业化运营能力、项目管理能力、团队协作和领导能力等方面的技能点。需要建立高效的团队协作机制,同时注重项目管理和风险控制,确保商业化服务的高质量和可靠性。
在商业化服务的过程中,需要注重用户体验和客户服务,建立良好的用户关系,不断改进和优化产品和服务。同时还需要积极参与开源社区的建设和推广,为开源社区的发展做出贡献。
这个阶段的回报率非常高,有完全的产出和企业客户闭环,达到了100+的学习效果。
总结
这篇文章详细介绍了从学习开源到商业化的八个阶段,让你逐步成为开源领域的大佬。但是,如果你认为这是一条轻松愉快的道路,那你就大错特错了。这个过程需要不断的学习和总结,以及对知识的深度理解。但是,如果你能一步步走到商业化阶段,那么回报肯定是非常可观的。总之,跨越这八个阶段需要勇气、毅力和耐心,但是这个过程也会让你成为行业中的佼佼者。
这个周期会更长,即使我是从大一开始准备的,也依旧遥不可及。我一直在探索 复利曲线 的那个拐点~
对于我们来说,不管是谋事在人,成事在天。又或者是 谋事在天,成事在人,我们现在处于一个大背景的时代,可以兼容各类各样的人才,硬实力(技术)代表着硬性指标。包括更多的软实力,比如:能力、情商(沟通力、影响力、领导力)。在这个架构上,影响这一因素的包括我们的三观:人生观、价值观、世界观。从而影响我们的格局(眼界+行动力 + 胸襟、胆识、等心理要素的内在布局)和人脉~