Appflowy 是什么?
Appflowy 简单来说是一个仿照Notion,可私有化部署的跨平台软件,官网介绍为:
- Bring projects, wiki, teams together with AI.
是一个集项目,文档(知识)和团队协作为主要基础,基于良好的数据库设计,支持横向扩展的免费开源项目。
我觉得这些定义有些宽泛,因为笔者之前从事过Saas协同软件项目,用市场上对比的来说,Appflowy是一个基于多维表格为主要思想纲领,扩展项目管理等扩展功能。技术上,使用Rust作为主要技术栈,在UI展示端,根据平台不同,采用不同的技术方案,例如客户端使用Flutter,Turi等,Web端使用React等,UI并不是项目的核心。
为什么盯上Appflowy?
笔者的原因主要有三点
- 从事过类似的工作,对协同和多维表格等数据处理感兴趣
- 从事Flutter客户端开发工作
- 对Rust感兴趣
Appflowy这个项目契合了我去Watch代码,想要参与这个开源项目,但一切肯定没有那么简单,笔者已经关注这个项目一段时间了,却迟迟没有贡献自己的第一行代码,一方面是开源参与程度很低,经验不足,另一方面,这个一个不算入门容易的项目,加上Rust相对复杂的入门,都将笔者卡在多个节点,无法前行。
- 你望向哪座山,你探索哪座山,你停下脚步
从0到1总是极难的,开源项目经常说,你要敢于提交第一个issue,第一个pull request, 这对于时间不充裕且无时无刻不处于失业,内卷焦虑的我们,无疑增加了不少难度,受制于这些外因和自身原因,总是走走停停,此时,笔者觉得自己的知识储备可以去参与这个项目了,笔者希望记录在这个项目参与过程当中的问题,解决方案,以及阶段性的所思所想。
开始的环境变量
- Appflowy: 0.5.9
- Flutter: 3.19.6
- Rust: 1.77.2
整体学习思路
Appflowy 整体上分为前端(front)和rust-lib, 负责UI端和本地数据库的交互,Appflowy-Cloud是Rust编写的的云服务和管理后端等。整体来看,对笔者而言,最有难度的是Appflowy-Cloud,目标也是从后开发的Appflowy-Cloud入手,先熟悉数据的组织方式,Rust语法(非ffi和自定义宏),跳过相对混乱的Appflowy front, 先对基础有一些了解。
笔者并不精通或熟悉后台开发,只是了解相关概念,一切也是从0开始,这对新入手的人,多多少少都有一些帮助,因为我面临的也是新手级别的问题。
前置知识
相对容易不是容易,需要一些前置知识,我简单列举一下
- 后端概念:例如,路由,中间件,认证等
- 数据库:SQL和Sqlx框架, Postgres
- Rust基础
- protobuf协议和tonic, grpc等
学习路径
- 通用简单逻辑 -> 特殊领域逻辑 -> 复杂逻辑
- 自顶向下分析
其中自顶向下,我们会从接口的定义开始,经过接口的路由,业务处理,到最终数据库同步这个顺序来学习。
迈出第0步
- index总是从0开始