Concrntは分散マイクロブログ基盤です。
ユーザーのアイデンティティとするためには、第三者からの検閲・復旧不能なアカウントの凍結処理が行われるような中央集権型のSNSでは、安心してアイデンティティを構築することができません。 大切に育てたアカウントが突然凍結され復旧不可能になるのは、到底許されるべきではなく、一切許容できることではありません。
しかし、サーバーが物理的に存在している以上、サーバーの運営者はそのサーバーが設置されている国の法律に従う必要がありますし、運営者も人間であるため、「凍結が一切できない」というのは現実的ではありません。
Concrntは、このジレンマを解消します。
Concrntは、独自のプロトコルを用いて、アカウントが移行可能なように設計されています。つまり、最初にアカウントを作成したサーバーで自分のアカウントが凍結されたとしても、自分のアカウントを別のサーバーに引越しするだけで、凍結前と同じ過去の投稿・フレンド関係を維持したまま、新しいサーバーでアカウントを再開することができます。
Concrntは公開鍵暗号を用いて自己のアイデンティティを証明します。 サーバーには一切機密情報を渡さず、アカウントのセキュリティはユーザー自身が責任を持って管理します。
web上で動作するクライアント実装のうちの1つ、concrnt.world があります!
理不尽な凍結の恐れがあり、アカウントが凍結された場合、そのインターネット人格の死を意味します。
アカウントの引越し機能はありますが、引越し前に凍結された場合打つ手がなくなってしまいます。 また、主要なActivityPub対応SNSはローカルタイムラインという概念がありますが、これは外のユーザーが閲覧・参加できるものではないので、結局それぞれのサーバーでアカウントを作り直すことになります。 Concrntでは、各サーバーに話題ベースのコミュニティタイムラインを好きな数だけ作成することができ、他のサーバーのユーザーも閲覧・参加できます。
秘密鍵を用いて自身のアイデンティティを証明する素晴らしい仕組みですが、リレーサーバーをうまく選ぶ必要があります。 またリレーサーバーが自分のデータを保持してくれるか、そして削除してくれるかは保証されません。 (こういった要件を要求しない使い方であれば、非常によく動作します。) 本質的な分散型であるため、逆に非本質だが便利(非暗号化メッセージの可視性コントロールなど)は実装されないような印象を受けます。
Blueskyは最近活発になってきているプロジェクトであるためまだ詳細はわかりませんが、Concrntと非常に似ています。 BlueskyはTwitterと同様、「世界の全ての情報を共有可能にする」といったミッションで作られているように思います。一方で、Concrntは「コミュニティを中心とし、世界とはゆるく繋がる」ことをミッションとしています。 このミッションの違いにより、Blueskyは巨大なIndexサーバーを建て、フィードを生成するアーキテクチャをとっている一方で、Concrntは単一のサーバーだけを用いて近所の情報を軽量に・リアルタイムに取得するためのアーキテクチャを取っています。
Concrntのとっているアーキテクチャ戦略は、Twitterのように無数のユーザーが好きなユーザーを好きなだけフォローできるといった超巨大なシステムまでスケールすることはできない可能性があります。 巨大なホームタイムラインを1つ構築するのではなく、ある程度の大きさのリストをいくつか作成し、それらを切り替えて使うことを前提としているためです。
というのも、Concrntは世界と濃厚に繋がることを主目的においておらず、コミュニティタイムラインをベースとした関係を構築することを主目的においており、それに最適化されています。 これにより、Indexサーバーのような巨大なサーバーを自前で作らずとも、各ドメインが独立して情報をコントロールできるようになっています。
また、Concrntは「自分のアイデンティティは自分で守る」をコンセプトにしています。 一方、現実問題で自分の身を守るためには、ある程度の知識と技術が必要です。つまり、ある程度の使いにくさ・複雑さがあるということです。
そういった意味では、他人に自分を守ってもらいつつ、凍結されないように運営のご機嫌伺いをする中央集権型SNSの方が、一般の人にとっては安心できるかもしれません。
詳細なドキュメントサイトはこちら: concrnt square
PRを作成する場合は基本的に先にissueを作成し、その可否のコンセンサスを取ることをお勧めします。(concurrentは現在heavilyに開発されており、その方針上入れられない変更であることがあります。)
$ claude mcp add concrnt \
-- python -m otcore.mcp_server <graph>