我们用7种语言写了25个母体桥 我们没有选择

2026年8月14日2 次浏览来源:Dev.to阅读原文

当你停止收集一个堆, 让每个协议选择一个给你。

每个工程队都有一个堆.

我们有七个,我们没有决定其中任何一个。

Nevai是一个自发托管的,由端到端的加密工作空间,建立在Matrix上.

其中一部分是一组桥梁——25个——连接Discord,Telegram,WhatsApp,Signal,iMessage,Message,Instagram,Slack,Google Chat,LINE,WeChat,KakaoTalk,Skype,GroupMe,SMS,电子邮件,IRC,XMPP,Zulip,Matter,Revolt,Mumble,QQ,X和LinkedIn在一个地方.

我们开始打算标准化。

我们最后得到了这个: 语言桥去 12 TypeScript 5 Python 4 JavaScript 1 Kotlin 1 PLpgSQL 1 Slice 1 没有人坐在一个房间里选择了这个分配.

这是你得到的 当协议决定。

在协议被逆向工程WhatsApp,Signal,iMessage,Messenter,Instagram,Telegram,X,WeChat,QQ,Skype,LinkedIn,电子邮件中获胜.

十二道桥梁,原因每次都是一样的:这些协议的成熟的库都用"去"来写.

这不是说去成为更好的语言。

这是关于十年反向工程工作恰好生活的地方的说法。

如果您想要在不运行浏览器会话的情况下说出WhatsApp的协议,请使用存在的内容,而存在的内容是Go。看看边缘周围的漏出的内容,图片会变得更清晰:信号是86% Go和13% C — C是libsignal,你不会重新执行libsignal。 iMessage为96%Go和3%Object-C——因为iMessage运行在macOS上,在某些时候,你必须用自己的语言与操作系统交谈.

这些百分比是诚实的。

桥梁主要是你的代码 和少量的其他人的, 而小的金额通常是最重要的部分。

Python在API无聊的谷歌聊天,Zulip,KakaoTalk,LINE中获胜.

记录了HTTP APIs,JSON in和JSON出道,不需要协议考古.

这里没有业绩论证。

这些桥梁没有吞吐量限制;它们正在等待别人的费率限制。

重要的是,当API改变时,你能够多快地改变它们, 而对于Python来说,你能够轻松地获胜。

其中两种是混合的——LINE为55%Python和44%JavaScript,KakaoTalk为87%Python和12%JavaScript.

这是客户端的工作, 当协议的一部分只在网络应用中存在时, 您无法避免 。

TypeScript在事件模型已经适合IRC,XMPP,Revolt,GroupMe,Slack的地方获胜.

围绕已经是事件流的协议的五个桥梁.

矩阵是一个事件流。

阻碍错配接近于零,因此代码大多是翻译而不是架构.

Revolt是其中最干净的:100% TypeScript,没有逃生舱.

当桥的两边就事件的内容达成一致时,你只能写出有趣的部分.

而后所有三座桥上无所取舍的都是外出者,每座桥上都是有具体原因的外出者.

简讯为克特林73%.

短信不是网络协议,你连接, 这是手机做的事情。

唯一能诚实地坐的地方是Android 剩下的27%是去,因为母体方面仍然是母体方面.

最关键的是86%的PLpgSQL.

存储程序——因为观察自办Matterm的最可靠方式是与其Postgres数据库交谈,而不是对一个非为此设计的API进行投票.

Mumble是64%的切片。

Slice是ZeroC冰的界面定义语言.

这不是别人选择的语言。

这是语言Mumble的控制协议被定义在其中,所以想桥接Mumble,就写出Slice.

规则我们最后 我们尝试了标准化早期。

它使三座桥梁变得更糟,没有任何桥梁更好——我们在适配器周围写适配器,以保持我们为了自己的舒适而选择的语言。

现在的规则很简单:你正在连接的平台选择语言,你接受它。

代价是真实的。 7种语言表示7个工具链,7个依赖故事,在一桥中流利的贡献者是n中的初学者

分享