为什么联邦协议不起作用(2016)

2022-02-14 19:36:35

在Open Whisper Systems,过去四年我们一直在开发开源的“面向消费者”软件。我们想分享一些我们在实践中学到的东西。作为一名软件开发者,我羡慕作家、音乐家和电影制作人。与软件不同的是,当他们创造一些东西时,它真的完成了——永远。20年后,一张录制的专辑可能会完全一样,但软件必须改变。软件作为一个生态系统的一部分而存在,而这个生态系统正在移动。平台从底层改变,网络不断发展,安全威胁和对策不断变化,集体用户体验语言很少静止不动。随着更多的资金、时间和注意力进入生态系统,整个过程开始运行的速度就越快。所有这一切都意味着用户对社交和沟通功能的期望正在迅速演变。今天任何开发软件的人都知道,不可能停滞不前。我们早期对Signal所做的一件有争议的事情是将其构建为一项非联合服务。我们开发的任何协议都不需要集中化;完全有可能构建一个基于联邦信号协议的messenger,但我不再相信构建一个有竞争力的联邦messenger是可能的。在一些圈子里,这并不是一个流行的观点。当最近有人问我如何将一个无关的通信平台联合到信号网络中时,我告诉他们,我认为我们不太可能与我们无法控制的客户端和服务器联合。他们的反驳是:“这太愚蠢了,如果没有第三方定义的互操作协议,互联网能走多远?”我想了想。我们获得了IP的第一个生产版本,在过去20年中一直在尝试切换到IP的第二个生产版本,但成功有限。我们在1997年开始使用HTTP 1.1版,直到现在还停留在那里。类似地,SMTP、IRC、DNS、XMPP都在大约20世纪90年代末被冻结。为了回答他的问题,这就是互联网发展到了什么程度。直到90年代末。这已经让我们走了相当远的路,但不可否认的是,一旦你联合了你的协议,就很难做出改变。而现在,在应用程序层面上,在生态系统正在移动的世界中,静止不动的东西不会很好地运行。事实上,将联邦应用层协议分解为集中服务几乎是当今成功消费产品的必经之路。这就是Slack对IRC所做的,Facebook对电子邮件所做的,以及WhatsApp对XMPP所做的。在每一种情况下,联邦服务都会停留在时间上,而集中式服务能够迭代到现代世界和其他地方。因此,虽然我能够托管自己的电子邮件很好,但这也是为什么我的电子邮件没有端到端加密,而且可能永远不会加密的原因。相比之下,WhatsApp能够通过一次软件更新将端到端加密引入超过10亿用户。只要联邦意味着停滞,而集中意味着移动,联邦协议就会在当今要求移动的软件环境中存在问题。早些时候,我以为一旦信号速度下降,我们就会联合起来。现在我意识到,事情可能永远不会放缓,如果说有什么的话,整个景观的速度似乎在稳步增加。XMPP是联邦协议的一个例子,该协议宣称自己是“生活标准”尽管XMPP具有协议“扩展”的能力,但不可否认的是,XMPP在很大程度上仍然类似于一个对富媒体支持有限的同步协议,而富媒体实际上无法部署在移动设备上。如果XMPP是如此可扩展,为什么这些扩展没有迅速使其与现代世界同步?与任何联邦协议一样,除非每个人都应用扩展,否则扩展没有多大意义,在真正的联邦环境中,这几乎是不可能完成的任务。相反,我们拥有的是一个复杂的XEP沼泽,这些XEP并没有在任何地方得到一致的应用。这意味着严重的后果,因为有人选择使用不支持视频或其他任意功能的XMPP客户机或服务器不仅会影响他们,还会影响所有试图与他们交流的人。它创造了一种不确定的气氛,永远不知道事情是否会成功。在消费者领域,断开的客户端支持通常比完全没有客户端支持更糟糕,因为一致性对于创造引人注目的用户体验非常重要。例如,就连GitHub现在也存在一致性和控制方面的问题。他们引入了问题模板,但许多第三方GitHub客户端不支持它们,因此即使为Signal Android存储库创建了一个完整的问题模板,我们仍然会有人发布“它不起作用,请帮助”,因为他们的客户端甚至从未向他们展示过模板。这让我对GitHub感到恼火,尽管我使用的是官方的GitHub客户端。对于GitHub的竞争对手来说,这是一个潜在的机会,可以一致地显示问题模板。联邦的一个潜在好处是能够选择哪个提供者可以访问您的元数据。然而,作为一个自我托管我的电子邮件的人,这从来没有感觉到特别相关,因为我发送或接收的每封电子邮件似乎都有Gmail在它的另一端。联邦服务似乎总是围绕着一个大部分人使用的提供商联合在一起,在互联网上有一个小型分散的自托管长尾。这是有道理的,因为运行可靠的服务并不容易,但不幸的是,这是两个世界中最糟糕的结果。保护元数据需要在新的协议和软件上进行创新。只有在控制力更强而不是更少的集中化环境中,这些更改才有可能实现。正如在电子邮件等联邦协议中进行一致部署端到端加密的更改被证明是困难的一样,我们更有可能看到在更具控制力的集中化环境中出现增强的元数据保护。在某种程度上,联邦的吸引力正是因为它及时冻结了协议。当集中化的客户机和服务器推出对我们有利的功能时,这很好,但它们也可以轻松推出对我们不利的功能。联邦让我们对我们接受的更改有更多的集体控制权,但随之而来的是无法接受的适应能力。考虑到联邦服务似乎总是围绕着一个大部分人使用的提供者联合在一起,联邦就成了一种潜在的威胁。没有人真的想运行自己的服务器,但他们知道,如果他们当前的主机做了一些令人震惊的事情,使其值得付出努力,这是可能的。然而,在过去六年中,我们也看到在集中通信服务之间切换的用户成本大幅降低,特别是考虑到使用用户拥有的标识符(如电话号码)进行寻址的趋势。该设备的地址簿现在是社交网络,因此使用电话号码作为标识符,通过将用户的社交网络置于他们的控制之下,降低了切换成本。在某种程度上,移动设备上的通知中心已经成为所有通信应用程序的联合点,类似于旧的桌面IM客户端如何跨多个IM网络统一通信。这种影响在消息传递领域显而易见,市场领导者来来往往,新的热门应用不知从何而来,甚至最成功的玩家似乎也不得不继续迭代并尽快改进他们的服务。这种减少的用户摩擦已经开始将联邦服务带来的潜在威胁扩展到集中式服务。和以前一样,你可以切换主机,甚至决定运行自己的服务器,现在用户只需切换整个网络。在许多情况下,这一成本现在远低于将电子邮件地址更改为使用其他电子邮件提供商的成本。集中式网络的开放源代码基础设施现在提供了与联邦协议几乎相同的控制级别,而不放弃适应能力。如果一个拥有开放源代码基础设施的集中式提供商曾经做出过可怕的改变,那么那些不同意的人就会得到他们需要的软件来运行他们自己的替代方案。它可能没有联邦那么美丽,但在这一点上,它似乎将不得不这样做。