3

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

 2 years ago
source link: https://z-rui.github.io/post/2021/08/instant-messaging/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

Sun Aug 22, 2021

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

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

即时通讯没有广为接受的标准化方案。现实情况是,由商业公司开发一套专有(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偏大:如果协议过于复杂,则合规的实现难度较大,会影响接受度。另外,这个协议过于重视历史记录,一般会在服务器端保存会话的完整历史。这可能是技术上的必要,但绝不是应用上的必要。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK