Appflowy学习系列-Appflowy 是什么?

918 阅读3分钟

Appflowy 是什么?

Appflowy 简单来说是一个仿照Notion,可私有化部署的跨平台软件,官网介绍为:

  • Bring projects, wiki, teams together with AI.

是一个集项目,文档(知识)和团队协作为主要基础,基于良好的数据库设计,支持横向扩展的免费开源项目。

我觉得这些定义有些宽泛,因为笔者之前从事过Saas协同软件项目,用市场上对比的来说,Appflowy是一个基于多维表格为主要思想纲领,扩展项目管理等扩展功能。技术上,使用Rust作为主要技术栈,在UI展示端,根据平台不同,采用不同的技术方案,例如客户端使用Flutter,Turi等,Web端使用React等,UI并不是项目的核心。

为什么盯上Appflowy?

笔者的原因主要有三点

  1. 从事过类似的工作,对协同和多维表格等数据处理感兴趣
  2. 从事Flutter客户端开发工作
  3. 对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开始