本地优先软件(2019)

2020-07-30 00:14:49

令人惊讶的是,如今我们在线协作是多么容易。我们使用Google Docs进行文档、电子表格和演示文稿的协作;在Figma中,我们一起进行用户界面设计;我们使用Slake与同事交流;我们使用Trello跟踪任务;等等。我们依赖这些和许多其他在线服务,例如做笔记、计划项目或活动、记住联系人以及一大堆商业用途。

我们将这些服务称为“云应用程序”,但您也可以将其称为“SaaS”或“基于Web的应用程序”。它们的共同点是,我们通常通过网络浏览器或移动应用程序访问它们,并且它们将数据存储在服务器上。

与前几代软件相比,今天的云应用程序提供了很大的好处:无缝协作,能够从任何设备访问数据。随着我们越来越多的生活和工作都通过这些云应用来运行,它们对我们来说变得越来越重要。我们在使用这些应用程序上投入的时间越长,其中的数据对我们来说就越有价值。

然而,在我们的研究中,我们采访了很多有创意的专业人士,在这个过程中,我们也了解了云应用的不利之处。

当你投入了大量的创造性精力和精力去制作某件东西时,你往往会对它有一种深深的情感依恋。如果你从事创造性的工作,这可能看起来很熟悉。(当我们说“创造性工作”时,我们指的不仅仅是视觉艺术、音乐或诗歌--许多其他活动,如解释技术主题、实现复杂的算法、设计用户界面,或者想出如何带领团队朝着某个目标前进,也都是创造性的努力。)。

我们对支持创造性过程的软件的研究将在我们的文章Capstone中进一步讨论,Capstone是一款用于思考的平板电脑,iPad是一种快速、精确的创造力工具。

在执行创造性工作的过程中,您通常会生成文件和数据:文档、演示文稿、电子表格、代码、笔记、绘图等。你会希望保留这些数据:作为未来的参考和灵感,将其包括在投资组合中,或者只是因为你为之感到自豪而将其存档。感觉拥有这些数据是很重要的,因为创造性的表达是非常个人化的。

不幸的是,云应用程序在这方面存在问题。虽然它们允许您随时随地访问数据,但所有数据访问都必须通过服务器进行,并且您只能执行服务器允许您执行的操作。从某种意义上说,您并不拥有该数据的全部所有权--云提供商拥有。用保险杠贴纸的话说:“没有云,它只是别人的电脑。”

我们不是在知识产权法和版权的意义上使用“所有权”这个术语,而是作为创建者对其数据的感知关系。我们将在后面的部分讨论这一概念。

当数据存储在“别人的计算机”上时,该第三方承担了对该数据的一定程度的控制。云应用程序作为服务提供;如果服务不可用,您将无法使用该软件,并且无法再访问使用该软件创建的数据。如果服务关闭,即使您可以导出数据,但如果没有服务器,您通常无法继续运行该软件的副本。因此,您受提供服务的公司支配。

在网络应用出现之前,我们有所谓的“老式”应用:在你的本地电脑上运行的程序,读写本地磁盘上的文件。今天,我们仍然在使用很多这类应用程序:文本编辑器和IDE、Git和其他版本控制系统,许多专门的软件包,如图形应用程序或CAD软件,都属于这一类。

我们在本文中讨论的软件是用于创建文档或文件(如文本、图形、电子表格、CAD绘图或音乐)或个人数据存储库(如笔记、日历、待办事项列表或密码管理器)的应用程序。我们不是在谈论实施银行服务、电子商务、社交网络、拼车或类似的服务,这些服务都是由中央系统很好地服务的。

在老式的应用程序中,数据存储在本地磁盘上的文件中,所以你拥有这些数据的完全代理权和所有权:你可以做任何你喜欢的事情,包括长期存档、进行备份、使用其他程序操作文件,或者如果你不再需要文件,也可以删除它们。您不需要任何人的许可来访问您的文件,因为它们是您的。您不必依赖另一家公司运营的服务器。

总而言之:云给了我们协作,但老式的应用程序给了我们所有权。难道我们不能两全其美吗?

我们既想要云应用提供的方便的跨设备访问和实时协作,也想要“老式”软件体现的对您自己数据的个人所有权。

我们相信,数据所有权和实时协作并不矛盾。可以创建具有云应用程序的所有优势的软件,同时还允许您保留对所创建的数据、文档和文件的完全所有权。

我们称这种类型的软件为本地优先软件,因为它优先使用本地存储(内置到您的计算机中的磁盘)和本地网络(如您的家庭WiFi),而不是远程数据中心的服务器。

在云应用程序中,服务器上的数据被视为数据的主要权威副本;如果客户端有数据副本,那么它只是一个从属于服务器的缓存。任何数据修改都必须发送到服务器,否则“不会发生”。在本地优先应用程序中,我们交换这些角色:我们将您的本地设备(笔记本电脑、平板电脑或手机)上的数据副本视为主副本。服务器仍然存在,但它们保存数据的辅助副本,以帮助从多个设备进行访问。正如我们将看到的,这种视角的改变具有深远的影响。

今天的许多软件感觉比前几代软件慢。即使CPU变得越来越快,在某些用户输入(例如,单击按钮或敲击按键)和显示在显示器上的相应结果之间通常存在明显的延迟。在以前的工作中,我们测量了现代软件的性能,并分析了这些延迟发生的原因。

对于云应用程序,由于数据的主要副本在服务器上,因此所有数据修改和许多数据查找都需要往返到服务器。根据您居住的地方,服务器很可能位于另一大洲,因此光速限制了软件的速度。

用户界面可能试图通过将操作显示为好像已完成来隐藏延迟,即使请求仍在进行中(这种模式称为乐观UI),但在请求完成之前,始终存在失败的可能性(例如,由于Internet连接不稳定)。因此,当出现错误时,乐观UI有时仍会暴露网络往返的延迟。

本地优先软件则不同:因为它将数据的主副本保存在本地设备上,所以用户永远不需要等待对服务器的请求完成。所有操作都可以通过读写本地磁盘上的文件来处理,与其他设备的数据同步在后台悄无声息地进行。

虽然这本身并不能保证软件会很快,但我们预计本地优先软件有可能近乎即时地响应用户输入,在您等待时不需要向您显示微调器,并且允许您在指尖操作数据。

今天的用户依赖于几个计算设备来完成他们的工作,而现代应用程序必须支持这样的工作流。例如,用户可以使用智能手机在旅途中捕捉想法,在平板电脑上组织和思考这些想法,然后在笔记本电脑上以文档形式输入结果。

这意味着,虽然本地优先的应用程序将其数据保存在每台设备的本地存储中,但也有必要在用户工作的所有设备上同步这些数据。存在各种数据同步技术,我们将在后面的部分详细讨论它们。

大多数跨设备同步服务还将数据副本存储在服务器上,这为数据提供了方便的异地备份。只要每个文件一次只由一个人编辑,这些解决方案就能很好地工作。如果几个人同时编辑同一个文件,可能会出现冲突,我们将在协作一节中讨论这一点。

个人移动设备在网络可用性各不相同的区域移动:不可靠的咖啡馆WiFi,在飞机或火车上穿过隧道,在电梯或停车场。在发展中国家或农村地区,互联网接入的基础设施有时参差不齐。在国际旅行时,许多移动用户由于漫游费用而禁用蜂窝数据。总体而言,对具有离线功能的应用程序的需求很大,比如需要在实地写作的研究人员或记者。

“老式”的应用程序在没有互联网连接的情况下工作得很好,但云应用程序通常在离线时不能工作。几年来,离线第一运动一直在鼓励网络和移动应用程序的开发者改善离线支持,但在实践中,将离线支持改造成云应用程序一直很困难,因为为以服务器为中心的模式设计的工具和库不容易适应用户在离线时进行编辑的情况。

虽然可以使Web应用程序离线工作,但用户可能很难知道应用程序的所有必要代码和数据是否都已下载。

由于本地优先应用程序将其数据的主副本存储在每个设备的本地文件系统中,因此用户可以随时读写此数据,即使在脱机时也是如此。稍后,当网络连接可用时,它将与其他设备同步。数据同步不一定要通过互联网:本地优先应用程序也可以使用蓝牙或本地WiFi将数据同步到附近的设备。

此外,为了获得良好的脱机支持,软件最好在设备上作为本地安装的可执行文件运行,而不是作为Web浏览器中的选项卡运行。对于移动应用程序,在使用之前下载并安装整个应用程序已经是标准做法。

协作通常需要几个人向文档或文件贡献材料。然而,在老式软件中,几个人同时处理同一文件是有问题的:结果往往是冲突。在文本文件(如源代码)中,解决冲突既乏味又烦人,对于电子表格或图形文档等复杂文件格式而言,该任务很快就会变得非常困难或不可能。因此,合作者可能必须预先商定谁将编辑文件,并且一次只有一个人可以进行更改。

另一方面,谷歌文档(Google Docs)等云应用程序允许多个用户同时编辑一个文档,从而极大地简化了协作,而不必通过电子邮件来回发送文件,也无需担心冲突。用户已经开始期待在广泛的应用中实现这种无缝的实时协作。

在本地优先的应用程序中,我们的理想是支持与当今最好的云应用程序不相上下的实时协作,甚至更好。实现这一目标是实现本地优先软件的最大挑战之一,但我们相信这是可能的:在后面的部分中,我们将讨论在本地优先设置中实现实时协作的技术。

此外,我们预计本地优先的应用程序可以支持各种协作工作流程。除了让多个人实时编辑同一文档之外,有时一个人试探性地提出可供其他人审阅和选择性应用的更改也很有用。Google Docs通过其建议模式支持此工作流程,而Pull请求在Git中可用于此目的。

数据所有权的一个重要方面是,您可以在未来很长一段时间内继续访问数据。当您使用本地优先软件进行某些工作时,您的工作应该继续无限期地可访问,即使在生产该软件的公司离开之后也是如此。

只要你有一份数据副本和某种运行软件的方式,“老式”的应用程序就会一直运行下去。即使软件作者破产,您也可以继续运行该软件的最新发布版本。即使操作系统及其运行的计算机已经过时,您仍然可以在虚拟机或仿真器中运行该软件。随着存储介质几十年的发展,您可以将文件复制到新的存储介质并继续访问它们。

互联网档案馆保存了一系列历史软件,可以在现代网络浏览器中使用仿真器运行;英国Amiga委员会的爱好者们分享了运行历史软件的提示。

另一方面,云应用程序依赖于服务的持续可用:如果服务不可用,您将无法使用该软件,并且无法再访问使用该软件创建的数据。这意味着您打赌软件的创建者将在很长一段时间内继续支持它-至少只要您关心数据。

我们不可思议的旅程是一个博客,它记录了创业产品在收购后被关闭的情况。

虽然看起来谷歌在短期内关闭Google Docs的风险不大,但流行的产品有时确实会被关闭或丢失数据,所以我们知道要小心。即使是使用寿命长的软件,也存在定价或功能以你不喜欢的方式改变的风险,而对于云应用程序,继续使用旧版本是不可行的-无论你喜欢与否,你都会升级。

本地优先软件可实现更长的寿命,因为您的数据以及读取和修改数据所需的软件都存储在您的计算机本地。我们相信这不仅对你自己很重要,而且对未来的历史学家来说也很重要,他们会想要阅读我们今天创建的文件。如果我们的数据没有持久性,我们就有可能创造文特·瑟夫所说的“数字黑暗时代”。

我们之前已经写过关于网页的长期存档。有关长期数据保存的有趣讨论,请参见龙田阮和艾伦·凯在Forward!2015发表的一篇论文“2015年的楔形文字板”(The Cuneiform Tablet Of 2015)。

有些文件格式(如纯文本、JPEG和PDF)无处不在,可能在未来几个世纪内都是可读的。美国国会图书馆还建议将XML、JSON或SQLite作为数据集的存档格式。但是,为了读取不太常见的文件格式并保持交互性,您需要能够运行原始软件(如果需要,可以在虚拟机或模拟器中运行)。本地优先软件实现了这一点。

云应用程序架构的一个问题是,它们将来自所有用户的所有数据存储在一个集中的数据库中。对于攻击者来说,这个庞大的数据集合是一个有吸引力的目标:流氓员工或获得公司服务器访问权限的黑客可以读取和篡改您的所有数据。可悲的是,这种安全漏洞非常常见,而对于云应用,我们不幸地受制于提供商的摆布。

虽然谷歌拥有一支世界级的安全团队,但可悲的现实是,大多数公司都没有。虽然谷歌擅长保护你的数据免受外部攻击者的攻击,但该公司内部可以自由地以多种方式使用你的数据,比如将你的数据输入到它的机器学习系统中。

引用Google Drive服务条款的话:“我们的自动系统会分析您的内容,为您提供个人相关的产品功能,例如定制搜索结果,以及垃圾邮件和恶意软件检测。”

也许您觉得您的数据不会引起任何攻击者的兴趣。然而,对于许多职业来说,处理敏感数据是他们工作的重要部分。例如,医疗专业人员处理敏感的患者数据,调查记者处理来自消息来源的机密信息,政府和外交代表进行敏感的谈判,等等。由于法规遵从性和保密义务,这些专业人士中的许多人不能使用云应用程序。

另一方面,本地优先应用程序的核心是更好的隐私和安全性。您的本地设备只存储您自己的数据,避免了存储每个人的数据的集中式云数据库。本地优先应用程序可以使用端到端加密,以便任何存储文件副本的服务器只保存它们无法读取的加密数据。

IMessage、WhatsApp和Signal等现代消息应用程序已经使用端到端加密,Keybase提供加密的文件共享和消息传递,Tarsnap采用这种方法进行备份。我们希望看到这一趋势也扩展到其他类型的软件。

通过云应用,服务提供商有权限制用户访问:例如,2017年10月,几名Google Docs用户被锁定在他们的文档之外,因为自动化系统错误地将这些文档标记为滥用。在本地优先的应用程序中,数据的所有权属于用户。

在这种情况下,要消除“所有权”的歧义:我们不是指法律意义上的知识产权。例如,文字处理器应该忽略谁拥有正在编辑的文本的版权的问题。相反,我们指的是用户代理、自治和对数据的控制意义上的所有权。你应该能够以任何方式复制和修改数据,写下任何想法,任何公司都不应该限制你的行为。

根据欧洲人权公约,你的思想和意见自由是无条件的-国家永远不能干涉它,因为它只属于你-而言论自由(包括言论自由)可以以某些方式受到限制,因为它影响到其他人。像社交网络这样的交流服务传达的是表达,但创意人的原始笔记和未发表的作品是一种发展思想和观点的方式,因此需要无条件的保护。

在云应用中,您访问和修改数据的方式受到服务提供商的API、用户界面和服务条款的限制。使用本地优先软件,构成数据的所有字节都存储在您自己的设备上,因此您可以自由地以任意方式处理这些数据。

数据所有权随之而来的是责任:维护备份或其他防止数据丢失的措施,防止勒索软件,以及一般文件归档的组织和管理。对于许多专业和有创意的用户来说,正如导言中所介绍的那样,我们认为用更多的责任来换取更多的所有权是可取的。考虑一项重要的个人创作,比如一篇博士论文或一部电影的原始镜头。对于这些问题,您可能愿意承担存储和备份的责任,以确保您的数据安全且完全在您的控制之下。

在我们看来,保持对数据的控制和所有权并不意味着软件必须是开源的。虽然修改软件的自由增强了用户代理权,但商业软件和封闭源码软件只要不人为地限制用户,就有可能满足本地优先的理念

.