努力中低コストのフェディバース ノードを自己ホストするために、GoToSocial から始めましたが、後で に変更することにしました。 Mastodon との互換性を高めます。 この移行にはいくつかの課題があり、既存の Web フレームワークがリンクされたデータ サービスおよび製品に対して適切に設計されているかどうかについて興味をそそられました。コミュニティ内の他のノードで、GoToSocial を 24 時間実行した後でも、ノードへのハイパーリンクがすでに多数存在していました。 GoToSocial から Mastodon に移行する際にこれらのハイパーリンクを完全に維持するには、よく知られているデータの移行と再処理、Mastodon の延長、および/またはフロントエンド Web サーバーへのハンドブック リダイレクトの追加が必要になります。
昔ながらの識別子としての数字や文字列よりも、Linked Data のコア ビュー、ひいては Activity Pub は、すべての識別子は URI であり、解決されると、識別された情報を返します。 これは、recordsdata の 1 つの共有 (ソーシャル メディアの投稿など) が他の 1 つの共有 (ユーザーなど) を参照する場合、その参照は URI によるものであり、任意の識別子によるものではなく、その URI をたどることによってそれがアスペクトするエンティティであることを意味します。
実例
典型的な Web ユーティリティでは、次のものをスパイします:
// 役職 { "id": 38274923842,
“知らせる”: “Lorem ipsum dolor sit amet” , “ユーザー” :
1024, }
// ユーザー 1024 {
“id”
:
1024 , “名前”: 「ダン・パーマー」 }
Linked Data ユーティリティでは、これはさまざまな凝視ファンシーとして可能性があります…
// 役職
{ “ID”: 」 https ://instance.social/posts/38274923842″, "知らせる": "Lorem ipsum dolor sit amet" ,
“ユーザー”: 」https://instance.social /users/1024″, } // ユーザー 1024 { “id”: "https://instance.social/users/1024"
,
"名前": 「ダン・パーマー」 }
これについての優勢な正直なところは、関係をたどるのに余分な記録データが必要ないということです。 これは正確なリンクであり、ハイパーリンクは適切に定義されたセマンティクスを取得します。 消費者は、探している情報の URI を設定するプログラムを知りたくありません。 これは、サーバーが異種であるが、すべてが同じ仕様を実装しているフェデレーテッド プログラムの明確な救済策です。リンクされたデータ、そしてそれを凝視するのは巨大で、Activity Pub の最近の機能で判断します。
REST風およびリンクトデータ関数のURI
リンクトデータ固有仕様はその
部品 URI win のセマンティクスがなくなりました。 つまり、
/users/dan の区別はありません および /929ee2ad/6a4f/42a3/b2af/4a739599c340.1ここで、典型的な REST っぽい API との意見の相違を宣言します。任意の識別子を使用します。 これらのプログラムでは、クライアント
must 通知を要求する URI として古い学校になるように、識別子とそれらがパスにもたらす工夫を実現します。
/users/123 などの URI には利点があります。 – それらは本質的にデバッグ可能であり、主に構造に基づいて監視を構築することで、パフォーマンスまたは使用状況の分析に関する洞察を得ることができ、開発者にとって素晴らしいものです。 これらの原因により、リンクト・データ・プログラムに関連することさえあります. 彼らが勝つ限り、ルーティングの事実のソースとは思われません.
悲しいことに、ほとんどすべてのWebフレームワークは、 REST-っぽい は、パトロンが URI を構築する場所で機能し、主にルート セグメントに基づいてルーターのビューを取得します。 フェイズ ファンシー /users/:int
リンクトデータ機能の課題は、ユーザー コレクションのコントローラーにルーティングされ、その後、データベースからクエリを実行するために全体的に整数に一致します。 これは、REST-ish に対して適切に機能します。 API ですが、統合された Linked Data プログラムによって機能しなくなります。
プログラム間で移行する場合、この区別が舞台となります。 URI 構造のセマンティクスはプログラム間で異なるため、外部プログラムが以前の URI 構造へのポインターをよそよそしく取得するため、移行はデータを転送するほど簡単ではありません.
このシナリオプログラム全体間の移行に制限されなくなりましたが、既存のマシン内で要件が交互に変わると、ガスが発生する可能性があります。 また、リンクされたデータ関数に制限されなくなりましたが、Web 上で以前に適切に識別されたシナリオです
コード自体を扱うエンジニアにとって、これは苦痛のポイントですが、もはや乗り越えられません。 それにもかかわらず、機能と設定を扱う非エンジニアにとっては、実際の Mastodon や WordPress の管理者に相当するものであり、これはおそらくあまり気にする必要はありません.
Activity Pub が必要とするため、連合サーバー (つまり、他のサーバーに通知するためのデータを格納するサーバー) に URI を識別子として格納する場合、1 回の機会でその URI 構造を単に変更することはできません。 これを行うと、フェデレーションが破壊され、データが不整合に変更されます。 投稿は、おそらく URI を見つけたときに利用できない可能性がありますが、おそらくキャッシュされていません。 ユーザーはコミュニティから離れますが、他のユーザーはよそよそしくフォローすることさえできます。 混沌が続くでしょう.
2
,
As
どんな些細なことでも は、Activity Pub のリンクされたデータ オブジェクトです – すべての投稿、ユーザー、描写、投票、リンク、うなり声を上げ、他の人をロードします-取り組むには正確な数が多すぎます. 典型的な 1 人のユーザーは、これらのハイパーリンクを 12 か月ごとに何万も生成することさえできます。可能性はなくなりました。 (2) あらゆる規模で実行可能である可能性がこれ以上高くない可能性があり、(3) 事実を明らかにするには、よく知られた工学的努力が必要です。
代替ソリューション
現代の Web フレームワークが究極でない場合Activity Pub サーバーと同等のリンクされたデータ機能については、おそらくこれらの要因に対処するフレームワークの余地があります。 リンクされたデータのフレームワークの主要なデバイスは、URI をアトミック識別子として扱う可能性があり、完全に不透明な識別子であっても可能性があります.
この形式のマシンでは、おそらく 2 つのリトマス評価:
任意のドキュメントをフレームワークにインポートして、継続的にサポートできますか (「クールな URI は代替されません」).
これらの要件は、フレームワークがおそらく 主にベースに通知、ギリギリ
ルートより主にベースとなる – URI で通知を検索し、その後コードを呼び出してそれに基づいて動作します
情報が主にベースであることは、前述の可能性の範囲内で、すべての要求に対するデータベース クエリを意味します。 (3)、しかし、この機能をフレームワーク段階に昇格させることにより、おそらくより多くの最適化が適用され、単一の苦境で正確性が保証され、おそらくこれらの余分なクエリの影響が減少します.
これにはいくつかの連鎖反応があります。 RPC 流の API を勝ち取るにはかなりの発展が必要ですが、おそらくこれで安心でしょうか? おそらく、ページ分割されたコレクションに関する要因が存在するでしょう (どのようにページ分割がパラメーターの動作を監視しているのでしょうか?)、しかし、これはすでに Activity Pub と同等の仕様を持つアリーナであり、いいえ 最初/最後/後続/前のページに URI 以外のページネーションを保持する機能を定義しました。 (私は、このようなフレームワークが空想的に見えるものとそれに関連する課題を探っています。)
ユニークな解決策?
おそらく、最近のフレームワークは車輪の再発明を行っている可能性があります。 この影響を処理するときに一般的に到達する結論の 1 つは、少なくとも典型的な Web ユーティリティと比較して、サーバーは必然的に非常に簡単であるということです。 おそらく、気晴らしのポイントはきちんとした クライアント
である必要があります。 、サーバーは主にデータの小売業者でなければなりません。
その可能性は、解決策が triple-retailer を事実の情報源として (おそらく許可のメタデータを使用して)。 Activity Pub の実装は、提供されている URI からのリライトを獲得するためのリライトを備えたトリプルリテーラーよりもおそらく数分高くなります。 データの構造は、おそらく仕様によって大部分が定義されます。 (これは私が実際に深く掘り下げていない、または製造業の古い学校であるレンタルですが、おそらくそれ以上のものがあるでしょう。)
たいへんその瞬間、Web フレームワークは、リンクされたデータ機能にとって一般的に不快である可能性が高い方法で動作します。 これは、これらのプログラムの構築、挿入、移行、および管理に課題をもたらします。
Activity Pub が主流になると、この結果は、壊れたハイパーリンクのように、親しいユーザーが気付くように変更されることさえあります。
フレームワークを構築するためのリンクされたデータの方法論は、これらの要因を緩和することさえできますが、この大きな影響を味わうには、より多くの作業が必要です。フレームワークの形式と、そのような機能を設定するための正当な機能である可能性があるかどうか.