gnusocial や mastodon の哲学

Mastodon が急に話題になってきた。 しかし、その哲学についてはあまり理解されていないように感じる。

Mastodon や GNU Social は、単なる「ポスト twitter 」ではない。 この記事では、 twitter の根本的な問題や、それに対する Mastodon 等の思想を解説する。

キーワードだけ先に書いておこう。

federation (連合)

decentralization (脱中央集権)

オープン (オープンソース、オープンな仕様)

長い文章を読みたくない人のためのまとめ でも、できれば本文も読んでほしいです。 Mastodon や GNU Social などでは、どこか 信頼できる運営者のインスタンス(サーバ)にひとつアカウントを作って 、そこから他のインスタンスのアカウントをフォローすることができます。 (インスタンスはグループのような意味を持つものではなく、単に自分の情報がどこで管理されるかを決めるものにすぎません。) 無理して複数のインスタンスにアカウントを取る必要はありません。 自分用のインスタンス(サーバ)を立てて そこに自分のアカウントを作るのが、一番安心かも。 これならインスタンス管理者による情報の悪用等を心配する必要もありません。 個人の(自分の)インスタンスで 他人の登録を受け付ける必要はありません 。 自分のアカウントだけ置いて使うことができます。

、そこから他のインスタンスのアカウントをフォローすることができます。 (インスタンスはグループのような意味を持つものではなく、単に自分の情報がどこで管理されるかを決めるものにすぎません。) 無理して複数のインスタンスにアカウントを取る必要はありません。 Mastodon や GNU Social では、自分のサーバ (VPS 、自宅サーバ、 etc...) にサービスを立てることができます。

Mastodon や GNU Social などが重視しているのは、 ユーザの自由 です。 これが twitter 等との大きな違いです。

です。 これが twitter 等との大きな違いです。 IRC に似ていますが、大きな違いとしては notice がすべてサーバに保存されること です。 IRC はクライアント(や proxy) にしかログが残りませんが、 GNU Social や Mastodon は マイクロブログサービス なので、サーバ側にデータを保存する仕組みになっています。

です。 IRC はクライアント(や proxy) にしかログが残りませんが、 GNU Social や Mastodon は なので、サーバ側にデータを保存する仕組みになっています。 その他の疑問についてはよく見る質問を参照してください。

twitter の問題 twitter には、以下のような問題がある。 twitter が落ちるとみんな死ぬ 仕組みからして仕方ないけど、そうは言っても致命的

ツイートのデータが(基本的に) twitter 社のサーバにしか残らない 外部サービスでの保存や自分のツイートのダウンロードはできるが、「昔TLに流れてきたはずのあのツイートが見付からない」という事例には無力

悪意ある第三者により、アカウントの凍結やツイートの削除の強制などの制限や弾圧を受けることがある えっちな絵を書く人たちが「ツイレディ」と呼ばれる過激派にスパム報告されまくって凍結される事例とか 違法ではないはずの画像の投稿でも規約違反扱いされたり 運営者による検閲や規制があったら、避ける手段は存在しない

仕様が twitter 社の一存で決まる ユーザの意見は(おそらく、普通は)取り入れられない 開発者は黙って追従するしかない なんならサードパーティのクライアント開発者を締め出したりもする

仕様のみならず、実装(ソースコード)も公開されない 会社なので仕方ないところもあるが、そうはいってもプロプライエタリ たとえば公式の twitter に問題があったとき、ユーザが修正する手段はない 無論改造もできない

これらの問題は、つまるところマイクロブロギングサービスがtwitter という単一のサービスに依存しているところに原因がある。 プラットフォームを単一の運営者が管理していて(中央集権)、逆らえないため、自由が制限されているのである。 そういった自由を SNS のユーザが取り戻すための思想が、 federated social web だ。

Federated social web はどう問題を解決するか federation とは「連合」である。 federated social web とは、 SNS のサーバを各々が持ったり複数用意することで不要な制約を受けないようにし、それでいてサーバ間で連携することで巨大なひとつの SNS として利用できるようにするという思想であり、またその思想が目指すネットワークサービスのことである。 この思想は、先に挙げた twitter の問題を以下のように解決する。 問題 解決 twitter が落ちると皆死ぬ サーバはコミュニティや個人で別々になっており、道連れで死んだり断絶が発生することはない ツイートが twitter のサーバにしか残らない notice (ツイート相当の情報)は、受信者のアカウントのあるサーバ全てで複製して保存される。 発信者のサーバが死んでも、受信者のサーバには情報が残るので、リンクが切れて参照が潰れることは避けられる。 自分の notice だけでなく、自分の TL に流れてきたすべての notice が、受信者のサーバに保存される。 悪意ある第三者により、アカウントの凍結やツイートの削除の強制などの制限や弾圧を受けることがある サーバの運営者のポリシーによる。 たとえば政治的な主張を発信するなら、政治的な主張を弾圧しないようなインスタンス(サーバ)でアカウントを用意すればいい。 えっちな画像を投稿したければ、そういった画像に対して理解があり過剰に反応しない運営者のサーバにアカウントを用意すればいい。 他人を完全に信用しなくとも、自分でインスタンスを運営し、自分でそこにアカウントを作ることもできる。 これなら、検閲や BAN もない。 自分のアカウント専用のインスタンスにしてしまえば、他人が法的にヤバい書き込みをして云々という問題も避けやすくなるし、問題がある投稿を自分でサーバから消すこともできる。 仕様が twitter 社の一存で決まる 国際的な組織 (W3C 等)に管理されたオープンな(公開されていて閲覧に制限のない)仕様が定められている。 議論も行われる。 仕様のみならず、実装(ソースコード)も公開されない オープンソースである。 実装の詳細も公開されるし、もし不満があれば改造して使ったりすることもできる。 プラグイン等の機能もある場合があり、 twitter 連携などいろいろな機能の追加もできる。

その他の実装など GNU Social と互換 要するに OStatus を実装しているもの。 Mastodon は "GNU Social-compatible" であるが、このような実装はいくつか存在する。 GNU Social GNU が開発している本家。 プラグインでの拡張(たとえば twitter 連携など)ができる。 リポジトリは git.gnu.io 。 Mastodon 最近話題になっている実装。 TweetDeck 風の UI が特徴？ 新しい実装なので、内部も結構洗練されてるのではないかと思う。 リポジトリは GitHub 。 Diaspora 名前しか知らない。 リポジトリは GitHub 。 GNU Social と非互換 OStatus (や ActivityPub) とは違うプロトコルで実装されているが、やはり federated social web を目指して作られたサービスやソフトウェアもある。 matrix こちらはプロトコルが新規に設計されており、 OStatus より洗練されている。 (とはいえ、それをライトユーザが実感するかは別の話だが。) json ベースの通信や、ビデオチャット等との統合、人間のユーザ以外の IoT デバイスからの利用等も見据えた拡張性の高くシンプルな仕様など、純粋なマイクロブログサービスとは多少目標が異なっている。 リポジトリは GitHub 。 (個人的には、リファレンス実装 (synapse) が Python2 なのがちょっと悲しい。)

おまけ: 言葉の違い 同じプロトコル (OStatus) を使っているのに、何故かサービス毎に使っている用語が違ったりするので、比較表を載せておきます。 twitter GNU Social GNU Social (Qvitter plugin) Mastodon tweet (ツイート) notice (ノーティス) quip (クイップ) toot (トゥート) retweet (リツイート) repeat (リピート) requip (リクイップ) boost (ブースト) follow (フォロー) subscribe (サブスクライブ) follow (フォロー) follow (フォロー) なんだかなぁ。 Qvitterの何が嫌かって、例えば投稿された物を元々"notice"だった奴を"quip"というような、インフラに乗っかっておいてその文化を分断しに行く姿勢が嫌い — @obsoletestandard@js4.in/alttw 2017-03-04 21:17:40 , https://js4.in/alttw/notice/5192