Synth Daily

Local-First: 即时协作 + 所有权,下一代的软件开发范式

Local-first 软件是一种新的开发理念,旨在结合传统桌面软件的数据所有权和云端服务的即时协作优势。它通过优先将数据存储在用户本地设备上,确保了离线可用性和操作速度,并利用如 CRDTs 这样的技术来自动解决跨设备同步和多人协作时的数据冲突。这种模式不仅提升了用户体验,还保障了数据隐私与长期可用性,代表了未来应用开发(“app3”)的一个重要方向。

云端协作与本地所有权的矛盾

过去十几年,软件行业从传统的桌面应用转向了以网页服务为中心。这种转变带来了跨平台、免安装和即时多人协作等便利,像 Google Docs 和 Figma 这样的工具已经成为主流。

然而,这种以云端为中心的模式也带来了明显的问题:

  • 速度慢: 任何操作都需要与远程服务器通信,受网络延迟影响。
  • 依赖网络: 没有网络连接,软件几乎无法使用,因为数据和程序本身都存放在云端。
  • 失去所有权: 用户的数据实际上并不属于自己,服务商可以随时撤销你的访问权限。

云端服务带来了协作的便利,而传统的桌面软件则给予我们数据的所有权。我们能否将两者的优点结合起来?

Local-first 软件正是为了解决这一矛盾而提出的。它旨在让用户在拥有数据完整所有权的同时,也能享受到云端服务般的流畅体验。

Local-First 的七个核心指标

Local-first 软件的核心是优先使用本地存储和网络,同时兼容云端同步与协作。它具备以下七个关键特征:

  • 速度: 数据在本地,所有操作都能即时响应,同步在后台进行。
  • 跨装置使用: 数据可以在用户的多个设备上无缝操作。
  • 离线工作: 在没有网络的情况下,所有核心功能依然可用。
  • 即时协作: 支持多人同时编辑,并能自动处理或解决冲突。
  • 可持续性: 即使开发公司倒闭,用户的软件和数据也应能继续使用和读取。
  • 安全与隐私: 数据默认存储在用户设备上,避免了中心化服务器带来的监控和安全风险。
  • 数据所有权: 用户拥有其数据的最终控制权,不受服务商的限制。

解决冲突的关键:CRDTs 技术

要实现真正的 Local-first,关键在于解决不同设备上数据同步时的冲突问题。传统的同步方式在多人同时修改同一份文件时,常常会导致难以处理的冲突。

无冲突复制数据类型 (Conflict-free Replicated Data Types, CRDTs) 是一种能够有效解决此问题的技术。它的核心思想是:

CRDTs 不仅保存数据的最终状态,还记录了完整的变更历史。通过重播这些历史操作,系统可以在不同设备上得到一致的最终结果,从而自动解决冲突。

例如,当两个人同时编辑一段文字时,CRDTs 记录的是“在第三个字符后插入'A'”和“删除第八个字符”这样的具体操作,而不是比对两个最终版本的差异。这使得合并修改变得简单而准确。

案例分析:Heptabase 的实践

Heptabase 是一款知识管理软件,它很好地展示了 Local-first 架构的优势。它的使用体验满足了多项 Local-first 指标:

  • 速度: ✓ 符合。数据完整存储在本地,应用启动和操作都非常迅速。
  • 跨装置: ✓ 符合。支持电脑、手机、平板和网页端使用。
  • 离线使用: ✓ 符合。离线时可以访问和修改所有数据。
  • 即时协作: ✓ 符合。支持多人同时编辑同一个白板。
  • 可持续性: — 部分符合。虽然是订阅制软件,但数据会以 Markdown 和 JSON 格式备份在本地,用户可以自行解析。
  • 安全与隐私: — 部分符合。数据会同步到服务器,且目前未实现端到端加密。
  • 所有权: — 部分符合。用户拥有数据的本地备份,但脱离软件本身不易使用。

总而言之,Heptabase 的成功证明了 Local-first 不仅是技术概念,更能打造成拥有出色用户体验和核心竞争力的产品。

下一个时代:兼具主权与协作的 “App3”

互联网经历了从单向发布(Web1)到用户生成内容(Web2),再到强调用户主权的 Web3。然而,应用开发的主流模式仍停留在以服务器为中心的阶段。

Local-first 理念的出现,为应用开发开辟了新的可能性。它让应用在保障用户主权和隐私的同时,也能实现强大的协作与跨设备功能。这种兼具两者优势的应用,可以看作是“App3”,将成为未来软件开发的下一个重要范式。