オープンソース
Matrixでの一週間
A Week in Matrix (piegames.de)
要約
この記事は、Matrixという分散型コミュニケーションプラットフォームで、開発者が直面した一週間の技術的な問題と解決策を記録したものです。スペースでの通知設定ミス、ポリシーリストによる誤ったBAN、スペース内のルーム表示問題、Draupnirボットの連邦化問題、ルームの同期ずれ、ホームサーバーのDNS問題、そしてMatrix Foundationのプロモーションと現実のギャップについて詳細に記述されています。
全文翻訳
目次
A Monday in Matrix
A Tuesday in Matrix
A Wednesday in Matrix
A Thursday in Matrix
A Friday in Matrix
A Saturday in Matrix
A Sunday in Matrix
A Monday in Matrix
ユーザーが誤ってMatrixスペースのルームでチャットしてしまい、そのスペースの全メンバーに通知が届いてしまいました。Matrixスペースは通常のルームであり、スペースをサポートしない古いクライアントのフォールバックとして、完全に通常のチャットルームとしてレンダリングされます。一方で、スペースをサポートする新しいクライアントは、人々がそこでチャットを開始すると非常に混乱するUIを表示します。なぜなら、それは起こるべきではないからです。(しかし、ほとんどのクライアントはスペースの権限を調整して、そこでチャットすることを禁止していません。それは簡単すぎるでしょう。)
私はElement Webでスペースを通常のルームとして表示する方法を見つけ出し(デベロッパーツールにあります)、自分自身に管理者権限を与え、スペースルームでのチャットを禁止するようにルームの権限を調整しました。
A Tuesday in Matrix
ユーザーがフォーラムで不審なBANについて報告し、MatrixスペースからBANされたが理由が全く分からないとのことでした。ユーザーハンドルに対するDraupnirのクエリは何も興味深いものを示しませんでした。いくつかの試行錯誤の後、代わりにユーザーハンドルのドメインでDraupnirをクエリしました。実際、1つのエントリが見つかりました。
!foQLZposNt3iEpkl5O:example.org m.policy.rule.server (m.ban): … (スパム)
どうやら、私たちのスペースが購読しているモデレーションリストの誰かが、ユーザーのドメイン(単一ユーザーの個人インスタンスのようです)をBANしたようです。
私はルーム !foQLZposNt3iEpkl5O:example.org には参加していません。これはBANの発信元であるポリシー ルームだと推測しますが、Matrixは残念ながらそのタイトルを教えてくれません。しかし、公開されているようなので、参加して確認してみます。私のホームサーバーは参加時に少し苦労し、WARN conduwuit_api::client::sync::v3::joined: timeline for newly joined room is empty と表示されましたが、その後、別のサーバーにタイムラインのバックフィルを要求し、その後、クライアントを「キャッシュをクリアして再読み込み」するだけで済みます(これにより、 incidentally、すべてのチャットが未読としてマークされるため、後で手動でクリアする必要があります)。そして、私は参加できました。
このルームは、モデレーターとモデレーションボットの両方から発信されたm.policy.rule.userタイプのメッセージでいっぱいの、コミュニティで共有されているポリシー ルームの1つであり、しばしば非常に露骨なユーザー名で人々やサーバーをBANしています。影響を受けたユーザーのドメインを検索しましたが、Elementはm.messagesタイプのメッセージのみを検索するため、検索結果は空白でした。検索が機能しない場合の通常の回避策は、チャットをHTMLとしてエクスポートし、関連メッセージがエクスポート範囲内にあることを期待してgrepで処理することです。幸いなことに、ルームのエクスポートにはすべてのメッセージタイプが含まれており、ドメインでgrepすると7つのヒットが得られました。影響を受けたユーザーのホームサーバーが、過去に誤ってオープン登録を許可していたことが判明しました。予想される結果です。この情報を得るのに約40分かかりました。最大でも20分で済むはずでした。
追記:2週間後、そのユーザーから再び連絡があり、まだBANに苦労しているとのことです。私が見ることができるのは、彼らのドメインがまだBANリストにあることだけです。BANリストへのローカルオーバーライドを作成する簡単な方法が見つからないため、私たちができることはほとんどなく、リスト全体から購読を解除するしかありません。これは、コミュニティ全体をスパムや悪用に対して脆弱にする可能性があります。
A Wednesday in Matrix
新しい人を私たちのMatrixスペースにオンボーディングしている際、そのスペースに「提案」されているにもかかわらず、あるルームが見えないようです。その人が手動でそのルームに参加した後、スペースのルームリストに表示されるようになります。この問題は、異なるホームサーバー上のさまざまなアカウントから再現可能です。ルームをスペースから削除して再度追加しても、解決しないようです。ルームにテューブストーンを適用して再作成しても、解決策にはならないようです。しかし、スペース管理者の1人がルームに参加すると、スペースのルームリストに再び表示されるようになります。彼らが再び離れると、ルームは再び消えます。
私たちは明らかな回避策を受け入れ、先に進みます。
A Thursday in Matrix
定期的なサーバーメンテナンスの後、Draupnirが管理コマンドに応答しなくなりました。サーバーログによると、Draupnirはコマンドを正常に処理しているようです。長時間のデバッグセッションの結果、Draupnirのホームサーバー(そこにある唯一のアカウント)とのアウトバウンド連邦化の問題であることが判明しました。さらにデバッグすると、Draupnirのホームサーバーとのアウトバウンド連邦化の問題であることが判明しました。さらにデバッグすると、Dendriteのデフォルト設定で、理由もなくすべてのEgress IPv6トラフィックがドロップされていることが明らかになりました。この問題の発見とデバッグには合計1ヶ月以上かかり、その間、コミュニティスペースはモデレーションボットによる保護なしの状態でした。この期間中にポルノやゴアのスパムの波に襲われなかったことを非常に幸運に思います。
Dendriteは現在、ホームサーバーとしてはやや非推奨(deprecated)です。少なくとも開発の主な焦点ではないようで、最近のコミットは依存関係の更新のみです。数年前、サーバーがセットアップされたとき、Synapseよりもデプロイとメンテナンスが容易で、最初の第2世代ホームサーバー実装の明るい未来が約束されていたため、Dendriteを選択するのは良い決断だと思われました。残念ながら、Matrixホームサーバー実装間の移行は、満足のいく解決策のない問題のままなので、私たちはゆっくりと腐敗していく基盤に stuck しています。
A Friday in Matrix
ユーザーが誤ってMatrixスペースのルームでチャットしてしまい、そのスペースの全メンバーに通知が届いてしまいました。またです。数ヶ月前に私が権限を設定したにもかかわらず、前回と同じルームです。確認しに行くと、権限がいつの間にかリセットされていました。いくつかのテストで、ルームが同期ずれを起こしているように見えることが確認されました。なぜなら、私が権限変更を再度適用しても、他のホームサーバー上の人々には表示されず、彼らがスペースルームでチャットを続けることを可能にするからです。
このような「スプリットブレイン」状態のMatrixルームは、一部のユーザーがそのルームでチャットすることを許可され、そのメッセージが権限変更を受け取っていない他のホームサーバーに伝播する可能性があることを意味します。しかし、それらを受け取ったホームサーバーは、それらのメッセージをソフトフェイルし、チャットをスプリットの反対側から見えなくします。
このルームはすでにルームバージョンアップの時期を過ぎているので、当面はこれ以上の調査は行わないことにしました。
A Saturday in Matrix
私のホームサーバーは数日間、連邦化が低下していました。根本原因はそれほど重要ではありませんが、DNS(当然ながら)に関連するもので、サーバー解決に失敗し、サーバーがピアに間違ったデフォルトポートで接続する原因となり、方向性のある通信の破綻につながりました。問題は特定されるとすぐに修正されましたが、残念ながらホームサーバーはその後、正常に動作を再開しませんでした。
残念ながら、途中で何かが同期ずれを起こし、サーバーは、あるアカウントが特定のルームに参加していないと認識するようになりました。幸いなことに、これはボットアカウントだったので、ルームからキックして再招待することで問題は解決しました。しかしそれでも、私は疑問に思います。私のホームサーバーが彼らを「忘れて」しまったために、私が意図せずにゴースト化している他のユーザーは何人いるのでしょうか?
A Sunday in Matrix
Matrix FoundationのMastodonアカウントが、Matrixを非常に幸せに使っているというユーザーのトゥートを再びブーストしました。そのユーザーは、数人以上のグループチャットに参加したことがなく、主に1対1のDMを使用し、スペースが何であるかを知らないようです。もし彼らがセルフホストしているなら、おそらくSynapseサーバーとElementクライアントを使用しているのでしょうが、ほとんどの場合、matrix.orgサイロで幸せに過ごしているだけでしょう。
私は彼らのために幸せになりたいのですが、タイムラインにブーストされる幸せな話と、このエコシステムで実際のコミュニティを運営する私の個人的な現実との stark なコントラストに、ガスライティングされているような感覚を拭えません。
あるレベルでは、これは理にかなっています。ツールの良さは、大きく依存します