在使用 Mastodon 之前,我先看了看它的文档,发现它的理念跟 SoLiD(缩写自Social Linked Data,意为社交互联数据)很像,以为它是基于 SoLiD 协议做的工程实践,后面发现它是基于 ActivityPub 协议实现的,这让我有点好奇,ActivityPub 究竟与 SoLiD 有什么关系。
先简单介绍一下 SoLiD ,它是由大名鼎鼎的 Tim bernerts-lee 领导的分布式网络平台项目,它存在的意义跟 ActivityPub 所做的事情比较像,就是让每个人拥有自己数据的所有权,当然在这一点上,SoLiD 做得更加彻底一些。
在 SoLiD 协议中,每个用户拥有一个 Pod ,大家可以理解为一个「网盘」,这个「网盘」里存着用户所有的数据,比如「个人介绍」、「联系方式」、「信用卡信息」、「聊天记录」、「社交网络关系」等等。这些数据是如何产生并与互联网中的应用和其他用户进行交互的呢?要了解这个问题,需要明白一个应用是怎么获取到你的信息,并让你也能触达到其他人的信息的。
这里我们拿微博举例。假如微博是基于 SoLiD 协议开发的,那么在你登录微博时,它会让通过网页链接你的 Pod ,并声明哪些需要你授权哪一类数据(在微博中,很明显,你的博文、评论和好友关系需要被授权)。通过你的授权后,你就可以进入到微博的时间线了,它会向你展示你好友 Pod 里的博文、评论数据。当你发微博时,你不再是为微博服务器贡献数据,而是向你的 Pod 里写入一条数据,微博服务器不再存储任何和你个人相关的东西。假如你还想用你的隐私数据赚些钱花也可以,你可以授权微博使用你的信息,为你做定制化广告或推送内容,因为它使用了你的数据,所以你可以要求微博付费给你。
举微博的例子意在说明,SoLiD 协议会让用户的数据跟网络应用完全分开,并通过一种叫 RDF 的东西与网络中的服务、用户进行互联。
这是一个美好的愿景,很显然目前 SoLiD 协议的进展并不顺利,一是目前的科技寡头完全没有理由把自己辛辛苦苦搏出来的数据霸权让渡给每一个劳苦大众;二是 SoLiD 本身应用的技术过于复杂,学习曲线陡峭,目前为止还没有特别好的工程实践出现在大众的视野。
说回 Mastodon ,我在搭建 Mastodon 实例的时候看了它的文档,当时就在思考,假如 Mastodon 是基于 SoLiD 协议开发的,那么用户就完全不用考虑在不同实例间迁移账号的问题了,因为数据始终在用户手中。我作为一个普通开发者,当然不认为这个点子只有我能想到,于是我去 SoLiD 社区和 ActivityPub 社区转了一圈儿,果然发现国外的大神开发者们已经在讨论如何让 Solid 和 ActivityPub 兼容并互相促进了。
令人惊喜的是 ActivityPub 传输数据的格式是 JSON-LD ,这里的 LD 就是 SoLiD 中的 Lid ,也就是 Linked Data ,世界上不可能有这么巧的事嘛!一查资料,果不其然, JSON-LD 其实是 RDF( Linked Data 的数据结构 )的一种实现,只不过它的结构更适用于 Web 应用间的数据传输。
在我看来,SoLiD 和 ActivityPub 之间并没有本质区别。ActivityPub 是 SoLiD 的子集,两者都是基于 Linked Data。只不过它们的目的不一样,ActivityPub 的目的是将 Twitter 分布式化,而 SoLid 的目的是将整个互联网的交互方式分布式化。
真希望自己能有看到 SoLiD 成为主流的一天,让自己成为自己,而不是谁的数据奴隶。
alive.bar 服务器地理位置吐嘈
在alive.bar注册了一个小号,然后体验到了无限转圈,图片加载不出来等诸多糟糕的体验。这些糟糕体验的根源是 alive.bar 不恰当的服务器地理位置选择。alive.bar 将服务器放置于新加坡毫无疑问是一个错误的选择。
使用全局ping工具[1] 测试之后,可以看出选址于新加坡。对于国内平均ping有近250ms,绝对称不上快。本地使用mtr测试(图一),ping值近400ms,且丢包率高达30%
追踪一下路由[2],可以发现电信绕日本,联通绕美国,只有移动走香港直连新加坡。对于国内大多数用户来说,选择Digitalocean 新加坡服务器,并不是一个好的选择。
选址于新加坡,对于实例互通来说也不是一个太好的选择。大多数长毛象实例位于美国与欧洲,但新加坡距两地都有不小的距离,ping值美国150+ms,欧洲200+ms。
[1] https://tools.ipip.net/ping.php
[2] https://tools.ipip.net/traceroute.php
这是一个战略性注册的小号。