集中化 vs 碎片化 – 谈即时通讯方案

“海内存知己,天涯若比邻。”信息技术使得后半句真正地成为了现实。人与人之间的联系不仅摆脱了空间的隔阂,在时间上也几乎没有障碍,此所谓“即时通讯”。

具体而言,即时通讯指的是一类特定的软件服务,这类服务允许用户注册账号,并在互联网上向其他账号发送信息。信息的接收方可以即时发表回应。你一言我一语,俗称“聊天”,因此即时通讯软件也被称为聊天软件。

即时通讯没有广为接受的标准化方案。现实情况是,由商业公司开发一套专有(proprietary)的解决方案,并免费地提供给用户使用。不同的服务提供商之间的用户不可以互相通讯。

这样的现状有很多缺点。首先,社交性质类软件,流行的主要条件并非技术上的优越性,而是用户基础。用户对服务提供商不具备选择权,只能被动地接受服务提供商的所谓“服务条款”以及隐私权政策,他们的权利便受到此类条款的限制。

使用这类即时通讯服务,不可避免地会有用户的隐私被传输至服务器端。服务提供商是否能够妥善处理,存在重大的疑问。极坏的情况,用户隐私可能会被出售。一般的情况,服务提供商有可能分析用户行为,并对其推送具备针对性的广告。再退一步,即使服务提供商完全合规运营,服务器也存在被入侵而导致数据泄露的隐患。这些问题,是专有解决方案集中化的本质决定的。

所谓“隐私”,对于即时通讯而言,最主要的是通讯内容。现有的解决方案求助于密码学,推出了端到端加密(end-to-end encryption)的方案,防止通讯内容被通讯方以外的人(包括服务提供商)获知。加密通讯现在有一些争议,例如,执法部门是否有权调取即时通讯的内容?此类公共议题应进行更大范围的讨论,指望技术手段给出完美答卷是不现实的。

不同服务之间不能互联互通也是一个大问题。从商业公司的角度出发,他们没有很多理由实现互联互通:要实现此功能,徒增工作量,反而给竞争对手提供方便,真是得不偿失。因此,许多业务内容相似的服务进行同质化竞争,但却彼此封闭,造成了一定程度的“碎片化”。从用户角度而言,为了与不同的人通信,不得已需要在多家服务提供商注册,增加使用和学习负担之余,更是增加了隐私泄露风险。

试想,如果现时所有的网站必须在指定一家服务提供商注册,并使用它提供的工具进行开发,或者电子邮件只能在同一个域名内通讯,那么将会是多么的不方便!

集中化的缺点可以部分由自托管(self-hosting)来弥补,即类似于WordPress的解决方案:用户既可以使用WordPress.com的托管方案,也可以在自己的服务器上配置WordPress服务。后者将所有数据保留在用户自己的服务器,就解决了服务提供商的风险。另一方面,用户需要付出服务器资源,并且需要自己保障服务器的安全运行。自托管一般要求服务器软件为开源(open source)软件,否则难以确保可信度。开源软件能否获得足够经济支持保证其开发质量和延续性,则是一个值得考虑的问题。

在我看来,最本质的解决方案应是放弃客户端-服务器(client-server)模型,而采用点对点(peer-to-peer)模型。即时通讯,从本质上讲,就应当是点对点的,服务器并不起重要作用。只不过,完全依靠点对点,可能无法实现许多用户早已习惯的即时通讯功能。例如,对方离线时,消息暂存于服务器,对方才能在再次上线时收到。再例如,移动端的推送通知(push notifications)功能,不依赖服务器的情况下较难解决。(此问题属于移动端操作系统未对点对点服务做充分考量,也是移动端操作系统集中化的缺点之一。)

碎片化的问题,则可以考虑通过标准化来解决。只不过,社交软件现已是商业公司获取用户壁垒的利器,也是重要的摇钱树,因此是否能实现标准化,存在重大的疑问。相对而言,开源软件更有可能实现标准化。另一方面,标准的变动需要各方认同,比较缓慢,有可能阻碍新功能的引入,不利于适应快速变化的用户需求。例如IRC协议,是一个很早就已标准化的即时通讯协议,但是功能比较羸弱,标准修改的过程也比较缓慢,因此逐渐地与时代脱节。

我考察了几个开源的即时通讯协议,并非寄希望于他们能够成为主流,而是想看是否有合我意的方案。

  • 点对点的协议比较吸引我,但是,如果用户体验无法与一般即时通讯软件比肩,则难以被接纳。
  • matrix.org提供的邦联式(federated)解决方案看上去比较有前景,官方提供的参考实现功能也比较完备。我自己也创建了一个自托管服务器,用户体验尚可。我对它的意见主要在于scope偏大:如果协议过于复杂,则合规的实现难度较大,会影响接受度。另外,这个协议过于重视历史记录,一般会在服务器端保存会话的完整历史。这可能是技术上的必要,但绝不是应用上的必要。

分享