《本地优先软件》
在我们打造 Pixcall 的过程中,深受本地优先软件这一理念影响
“本地优先软件”是一种软件设计原则:让用户在使用软件过程中既能拥有云服务的协作性又能像使用传统本地软件那样拥有完整的数据所有权
和本地软件相比,云服务能够从任何设备访问数据并且和任何人实时协作,在无缝协作层面有巨大优势。但云服务也存在缺陷:
- 云服务的所有数据访问都通过服务器进行,用户只能做云服务商允许做的事情。换句话说,云服务商才是真正拥有 数据所有权的对象,并且控制着所有数据。
- 云服务的数据和云服务完全绑定,如果云服务关闭,数据也会变得不可使用。即便能导出数据,离开了云端服务,通常也无法继续发挥数据的价值。
而“传统”的本地软件,数据都在本地磁盘上读取和写入,用户对数据拥有完全的所有权和控制权,不依赖不可控的云端服务,也不被云服务商的用户条款给限制。但另一方面,本地软件的数据是孤立的,难以在多个设备之间同步,更无法做到和他人实时协作。
总体而言,云给了用户协作,而本地软件给了用户所有权。数据所有权和实时协作并不天然对立,是否有鱼和熊掌兼得的方案,让产品既具有云服务所有优点,同时允许用户拥有数据所有权?
本地优先软件正好可以应对这一挑战。在云服务中,服务器上的数据被视为数据的主要权威副本,客户端的数据只是从属于服务器,任何数据获取和修改都必须连接到服务器。而在本地优先应用程序中,交换了数据主体的角色,本地设备(电脑或手机)上的数据变成了主要副本,服务器仍然存在但它们的主要作用只是保存数据的辅助副本以帮助数据在多台设备之间同步。这种数据主体的改变带来全然不同的产品形态,也是本地优先软件最重要的特征——优先使用本地存储和本地网络而不是远程数据中心的服务器来管理数据。
理想的本地优先软件具备以下七个特质
- 本地运行没有网络延时