开源协作办公套件介绍:Frappe Suite
Lv.2潜力创作者
近年来,开源办公协作软件领域涌现出不少优秀项目。由 Frappe Technologies 开发的 Frappe Suite 正是其中之一。它将七款常用的协作工具整合到一个统一的平台上,为用户提供了一套完整、开源、可自托管的办公解决方案。
一、项目背景
Frappe Technologies 是一家成立于 2008 年的开源软件公司,总部位于印度孟买。该公司以其旗舰产品 ERPNext(开源企业资源计划系统)和 Frappe Framework(低代码 Web 开发框架)而广为人知。Frappe 拥有超过 20,000 名 Frappe Cloud 客户,以及覆盖 50 个国家的 180 多个渠道合作伙伴,在开源社区中具有广泛的影响力。
Frappe Suite 是 Frappe 团队在 2024 年推出的一个整合性项目。在此之前,Frappe 的七款协作工具——Drive、Writer、Sheets、Slides、Meet、Mail 和 Calendar——各自以独立的 Frappe 应用存在。Frappe Suite 将这些工具合并为一个统一的 Frappe 应用,共享同一套底层框架、数据库和权限体系,用户无需在多个应用之间切换或配置,即可获得完整的协作体验。
该项目的 GitHub 仓库地址为:https://github.com/frappe/suite,采用 GNU Affero General Public License v3(AGPLv3)开源协议,任何个人或组织均可免费获取、使用和修改源代码。
二、核心功能
Frappe Suite 包含七个协作产品,覆盖了日常办公的主要场景。
产品 | 功能定位 |
Drive | 文件存储、组织、共享与预览 |
Writer | 文档创建与协作编辑 |
Sheets | 在线电子表格 |
Slides | 演示文稿制作与演示 |
Meet | 视频会议 |
邮件客户端 | |
Calendar | 日程管理与事件规划 |
2.1 Drive —— 文件管理
Drive 提供了文件存储和管理功能,支持文件的组织、分类、共享与在线预览。用户可以将文件按目录结构组织,设置访问权限,并与团队成员共享。Drive 适合作为企业内部文档库或团队文件协作平台使用。
2.2 Writer —— 文档协作
Writer 是一款在线文档编辑器,支持多人实时协作撰写。其核心协作能力基于 Yjs 技术实现,Yjs 是一种用于实时协同编辑的 CRDT(无冲突复制数据类型)算法框架,能够确保多个用户同时编辑同一文档时数据的一致性。Writer 适合团队撰写方案、报告、会议纪要等文档。
2.3 Sheets —— 电子表格
Sheets 是在线电子表格工具,支持数据的录入、计算和多人协作编辑。其协作同步同样由 Yjs 驱动,而协作服务端则由 Hocuspocus 提供。Hocuspocus 是一个基于 Yjs 的 WebSocket 协作服务器,专门用于处理实时协同编辑的通信和状态同步。Sheets 适合团队进行数据收集、统计和分析。
2.4 Slides —— 演示文稿
Slides 支持创建和演示幻灯片,适合制作汇报材料、产品介绍、培训课件等场景。用户可以在浏览器中直接编辑和播放演示文稿,无需安装额外的桌面软件。
2.5 Meet —— 视频会议
Meet 提供了基于 WebRTC 的视频会议功能。其底层使用 mediasoup 作为选择性转发单元(SFU,Selective Forwarding Unit)来处理群组视频通话。mediasoup 是一个开源的 WebRTC SFU 库,负责在多人视频通话中对音视频流进行路由和分发,以降低客户端带宽压力并提高通话质量。值得注意的是,Meet 需要一个独立的 mediasoup SFU 服务器才能正常运行,这是 Frappe Suite 中唯一需要额外部署组件的功能。
2.6 Mail —— 邮件客户端
Mail 是一个现代化的邮件客户端,用户可以在其中管理多个邮箱账户,收发邮件。Mail 与 Frappe 的权限体系集成,邮件可与系统中的其他文档(如客户、项目、工单等)关联。
2.7 Calendar —— 日历
Calendar 提供了日程管理和事件规划功能,支持创建、编辑和查看日程安排,适合团队协调会议时间、跟踪项目里程碑等场景。
三、技术架构
Frappe Suite 的技术栈建立在 Frappe 生态体系之上,其核心组件如下。
3.1 Frappe Framework
Frappe Suite 的底层由 Frappe Framework 提供支撑。Frappe Framework 是一个全栈 Web 框架,使用 Python 和 JavaScript 编写,以 MariaDB 作为默认数据库。框架提供了数据库抽象层(ORM)、用户认证、角色权限、REST API、后台任务队列、实时通信(基于 Socket.io 和 Redis 发布/订阅)等开箱即用的功能。Frappe Suite 中的七款产品共享同一套框架底层的数据库、认证和权限系统,这意味着用户在一个平台上的登录状态、权限配置和数据在所有产品间是通用的,无需在各个工具间分别配置。
3.2 Frappe UI
Frappe Suite 的前端界面由 Frappe UI 支持。Frappe UI 是一个基于 Vue.js 的组件库,为 Frappe 生态中的所有应用提供统一的界面风格和可复用的 UI 组件。这使得 Frappe Suite 的七款产品在视觉和交互体验上保持一致。
3.3 协作技术
Frappe Suite 的实时协作能力依靠以下两个关键组件实现:
Yjs:一种用于实时协作编辑的 CRDT 算法库,为 Writer 和 Sheets 提供数据同步能力。CRDT 的优势在于无需中心化协调即可解决编辑冲突,尤其适合离线优先和分布式协作场景。
Hocuspocus:基于 Yjs 的 WebSocket 协作服务器,负责处理 Sheets 中多人实时编辑电子表格时的通信和状态同步。
3.4 视频通话技术
Meet 的视频通话能力基于 mediasoup 实现。mediasoup 是一个轻量级的 WebRTC SFU 库,支持在服务端对音视频流进行选择性转发,从而在多人视频会议中实现高效的带宽利用和低延迟通信。
四、安装部署
4.1 全新安装
对于全新的 Frappe 环境,安装 Frappe Suite 的步骤如下:
按照 Frappe Framework 安装指南,安装 Bench 工具并创建一个 Frappe 站点。
从 Bench 目录中获取并安装 Suite 应用:
bash
bench get-app https://github.com/frappe/suite
bench new-site suite.localhost --install-app suite
bench start
在另一个终端中安装前端依赖并启动开发服务器:
bash
cd apps/suite
yarn install
yarn dev
生产环境构建则使用:
bash
bench build --app suite
4.2 从独立应用迁移
如果现有站点已安装了 Driver、Writer、Sheets、Slides、Meet、Mail、Calendar 中的某些独立应用,需要先迁移到 Frappe Suite。由于 Suite 与这些独立应用使用相同的数据库表和 DocType 定义,因此不能在已有独立应用的站点上直接安装 Suite,否则安装过程会中止并列出冲突应用列表。
迁移步骤概括如下:
备份站点数据(包括数据库和文件)。
卸载所有独立应用(卸载会删除对应应用的数据)。
安装 Frappe Suite。
从备份中恢复数据。
由于恢复后的数据库仍将独立应用标记为已安装,还需要执行额外的步骤,将独立应用从已安装列表中移除,并正确安装 Suite,然后执行迁移命令。具体操作可参考 Frappe Suite 官方 GitHub 仓库的 README 文档。
4.3 Meet 的额外配置
Meet 需要独立的 mediasoup SFU 服务器来处理视频通话。在部署 Meet 之前,需要按照 Frappe Meet SFU 的配置指南完成 SFU 服务器的搭建和配置。
五、开源许可与社区生态
Frappe Suite 采用 GNU Affero General Public License v3(AGPLv3) 协议发布。该协议要求任何修改过源代码的版本,如果通过网络对外提供服务,必须向用户开放修改后的源代码。这一特性使其特别适合企业自托管部署,同时也保障了用户对软件的自主控制权。
Frappe 拥有活跃的开源社区,Frappe 生态系统的全部 GitHub 仓库累计获得超过 50,000 个星标,有超过 30,000 名开发者基于 Frappe Framework 进行开发或贡献。Frappe 社区提供了官方论坛、Frappe School 学习平台以及年度 Frappeverse 线下会议,为用户和开发者提供了丰富的学习和交流资源。
六、总结
Frappe Suite 将文件管理、文档协作、电子表格、演示文稿、视频会议、邮件和日历七项功能整合到一个统一的、开源的平台上。其技术架构基于成熟的 Frappe Framework,借助 Yjs、Hocuspocus、mediasoup 等开源组件实现了实时协作和视频通话能力。对于希望构建私有化协作平台、对数据主权有较高要求的团队和组织而言,Frappe Suite 是一个值得关注和评估的开源方案。