banner
zu1k

zu1k

A boy dreaming of traveling around the world.

談談 Mastodon、Fediverse 和 ActivityPub

mastodon.webp

埃隆・馬斯克 440 億美元拿下 Twitter 後就開始大刀闊斧進行改革,他要做推特 2.0,但沒想到他的舉措竟然是大量裁員,施行專政。接下來的一系列舉措使 Twitter 俨然已經成為某些人自我行銷和推廣的個人發布平台,想必是之前通過 Twitter 割虛擬貨幣韭菜割爽了。我想未來老馬利用 Twitter 宣傳進入政界也不足為奇。於是很多人便開始考慮脫離專制的 Twitter 平台,尋找一個更加開放自由、權力更加分散的平台,Mastodon 憑藉多年的技術積累、好看的 UI 和類 Twitter 的互動邏輯,一舉躍入眾人的視野。

Mastodon#

Mastodon 又叫長毛象,我是 21 年左右在某個論壇看到 "草莓縣"(cmx.im) 從而接觸並了解了 Mastodon。Mastodon 從 16 年就開始開發,在我第一次接觸它的時候 UI 就已經很美觀了,其在 22 年進入大眾視野並受到大家喜愛我一點也感到奇怪,這麼長時間的積累使 Mastodon 的成功成為歷史的必然。

Mastodon 開源、去中心化 (聯邦制) 的特性決定了任何個人和組織都可以搭建自己的 Mastodon 實例,從而加入到這個社交網絡中來,人們既可以按照愛好、觀念聚集在某個實例中,同時又可以與其他實例的用戶進行各種互動,這種小邦大連的社交模式真的深得人心。

簡單來說,作為用戶,你可以從眾多實例中根據喜好選擇其中一個,註冊帳號,然後你就可以像推特一樣發嘟 (類比推特的發推),關注其他用戶,查看時間線。與推特不同的一點是,如果你關注的用戶註冊在其他實例,那你就需要通過用戶名加域名的方式來定位他。這有一點需要注意,在不同的實例中可能有多個用戶有相同的用戶名,所以實例的域名也是非常重要的一部分。因此,如果你想要打造個人品牌,就需要考慮防止有人通過一比一複製你的用戶名、頭像、介紹等信息來冒充你,也許提供 GPG 公鑰是個不錯的選擇,貌似目前 Mastodon 沒有集成成熟的解決方案來避免冒充問題。

據我所知國內部分高校組建了一個自己的小聯邦,這個小聯邦中每個學校都是一個獨立的 Mastodon 實例,每個學校的實例都由本校學生獨立自治,同時加入這個高校聯邦的所有實例之間又可以互相交互。這個小聯邦叫 閉社,感興趣的同學可以關注一下,搭建自己學校的實例並加入其中。

Fediverse#

其實 Mastodon 並不是唯一的 Fediverse,Fediverse 這個詞也不是 Mastodon 首創,早在 2008 年就有人提出了這個概念,並構想社交和內容發布平台要滿足獨立托管、通過標準化協議通訊等概念。仔細想想,這些概念是不是跟 Email 很像?Email 可是在互聯網發明之初就流行的協議,看起來互聯網的發展過程也是輪回的,分久必合 (商業公司中心化體驗好)、合久必分 (去中心化自由、自治)。這裡我推薦閱讀這篇文章: Mastodon, the rise of the Fediverse

目前最流行的 Fediverse 當屬社交領域的 Mastodon 和即時通訊領域的 Matrix。據我了解,Matrix 的技術生態更加繁榮,有眾多服務端和客戶端的實現,同時也可以對接 Slack、Discord、Telegram、QQ、WeChat 等眾多通訊 APP,但是目前看起來非技術愛好者用的並不多,大部分用戶都是開發者和技術愛好者。而 Mastodon 的客戶端雖有很多,但服務端只有官方一個實現,稱不上技術生態繁榮,但是用戶卻遍地開花,特別是普通非技術用戶。這種現象需要引起思考,技術雖可以改變世界,但技術並不是唯一,更好的 UI、更好的互動、更好的體驗,這些才是帶來產品發展的外部動力的基礎。

目前我的主要社交媒體還是 Twitter,正在慢慢向 Mastodon 轉,主要是有很多要關注的人他們並沒有在 Mastodon 宇宙安家。即時通訊方面除開熟人通訊必要的 QQ 和微信,陌生人通訊我正在逐漸放棄 Telegram,因為 Telegram 也正在變得封閉、專制、商業化,我在很多 Matrix 實例上都有匿名帳戶,但是我的朋友並不願意來到 Matrix 網絡,因此目前我的陌生人通訊主力是郵箱,我會對外公開我的郵箱地址,任何人都可以給我發郵件交流。

除了上面提到的兩個 Fediverse,還有一些其他的 Fediverse 平台並不為大眾所知,覆蓋了通訊、社交、圖片、音樂、視頻等眾多領域,大家可以通過以下網站探索:

對了,我還要著重提一個,Rust 語言開發的論壇 Fediverse,Lemmy,可以用來替代 Reddit、HackerNews,輕量好用。

ActivityPub 協議#

剛剛提到了 Fediverse 需要標準化協議來進行通訊,而 Mastodon 基於的協議便是 ActivityPub 協議,這個協議歷史比 Mastodon 早,並且已經被 W3C
在 2018 年推薦作為標準

這個協議規範了去中心化社交網絡交互細節的各方面,包括用戶的互動 (收發信息、關注、喜歡),還有活動 (就是內容、推文、嘟文) 的發布、更新、刪除、喜歡、屏蔽等等。

如果各個平台都遵循相同的協議,那使用不同平台的用戶就可以在同一 Fediverse 中互動,舉個例子,我可以在 Mastodon 和 Pixelfed 這兩個不同的平台之間進行一些簡單的互動。

我測試用 Pixelfed 平台的帳號 (@[email protected]) 關注我的 Mastodon 帳號 (@[email protected]),可以成功搜索到用戶,顯示頭像、簡介、關注量等信息,可以成功關注。在 Mastodon 平台也可以即時收到被關注的通知,同時可以通過 Mastodon 查看 Pixelfed 的帳號信息。

Pixelfed 账号关注 Mastodon 账号

但是我在 Pixelfed 發布的內容,從 Mastodon 卻無法看到,這說明兩個應用雖然都使用 ActivityPub 協議,但是其在內容封裝方面有自己專屬的子協議,這些子協議之間並不互相兼容,只有那些公共的兼容的協議才能跨應用使用,例如帳戶信息、關注這類。

同時我還嘗試使用 Mastodon 查看 Lemmy 的用戶,可以看到用戶信息,發布的部分內容可以看到,有一些出入,說明這兩者之間也是有不兼容的地方。

Mastodon 查看 Lemmy 用户

通過 Lemmy 的 issue 和 PR 列表我看到 Lemmy 正在做與 Mastodon 的兼容工作,這很偉大,支持!

同時,一位 GitHub 的員工開發了一個有意思的東西,ActivityPub to Mastodon bridge。pub 的目的不是托管 ActivityPub 社區,而是旨在使擁有自己域並因此控制其身份的人能夠參與 Fediverse,這意味著你無需搭建 Mastodon 就可以用自己的域名加入到 Mastodon 聯邦中了,這就很方便了,輕量好用啊。

Mastodon 性能問題#

Mastodon 目前官方實現使用 Ruby 語言,Ruby 依靠 Rails 框架用來開發 Web 應用簡直是不要太快捷,非常適合頻繁變化的需求。但是 Ruby 本身的性能並不樂觀,去年 Shopify 使用 Rust 開發 YJIT 順利合入 Ruby 上游,並隨 Ruby 3.2 版本正式發布,這將 Ruby 的性能提升了約 40%,但是 Ruby 的性能仍無法與目前流行的 JavaScript 比肩 (主要是 V8 引擎的功勞),更不要提 Golang 和 Rust 了。而我經過搜索發現,竟無 Golang 和 Rust 的服務端實現,即使有也已經停止了開發,這使 Mastodon 如何支撐即將到來的上億用戶量?如何與 Twitter 競爭?當然,目前已有的實例都沒有這麼多的用戶量,等未來有這個性能需求的時候,自然會有商業公司出錢出力來解決這個問題。

不過我倒是不希望這一天的到來,如果某一個 Mastodon 實例的用戶量上千萬,這其實就成了另外一個 "Twitter",大量用戶聚集在商業公司運營的單一或幾個主流實例上,那聯邦制、分佈式等概念實際上也就名存實亡了。不要忘記我們逃離 Twitter 來到 Mastodon 的初心啊!

不過雖然這麼說,我還是希望 Mastodon 性能能夠更好一點,同時我也看到了一些優化 Mastodon 性能的努力。隨著 Mastodon 實例數量的增多,單個 Mastodon 實例往往需要連接眾多其他實例來進行互動,這帶來了巨大的網絡性能壓力,使得想要自行搭建 Mastodon 實例的小夥伴不得不花更多錢在伺服器費用上。這極大概率會導致部分實例脫離 Fediverse,形成自己封閉的,僅有幾個節點的小聯邦,這應該並不是我們想要看到的。我已經看到了有人開發了 ActivityPub relay Relay 列表,中繼伺服器與大量實例連接,聚合內容,然後提供給中小型伺服器,從而使中小型伺服器無需連接大量實例就可以實現相同規模的信息獲取。

國外的社交和通訊正在變天,有上天的,有擺脫大公司的。而國內因為各種法律條款的限制,一般人根本沒有權力做社交和通訊,會不會就錯過這一波改變呢?讓我們拭目以待吧。

原文鏈接:https://zu1k.com/posts/tutorials/p2p/fediverse/

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。