angus
(Angus McLeod)
1
Tags に ActivityPub サポートを追加する方法、つまり Tags を ActivityPub アクターとして許可する方法を計画しています。ActivityPub サポートを備えたモデルには、レコード固有のカスタムストレージが必要です。これを実現する 1 つの方法は、カスタムフィールドを使用することです。たとえば、
同じ結果を達成するための他の方法もありますが、カスタムフィールドはおそらく最も簡単な方法であり、ActivityPub プラグインと、おそらく Discourse 自体の両方のデータモデルと最も一貫性があるでしょう。
そのため、まず Tags にカスタムフィールド サポートを追加することへの関心を測りたいと思います。これについては、discourse/discourse に PR を作成できます。
cc @pmusaraj
「いいね!」 3
angus
(Angus McLeod)
2
これをPRしました。タグリストのシリアライズも、情報の編集(タグ情報UIでの編集)も必要ないため、これは最も基本的な実装であることに注意してください。
「いいね!」 1
tgxworld
(Alan Tan)
3
@sam これについてどう思いますか?社内ではカスタムフィールドの使用をしばらくの間積極的に抑制してきたため、タグにこれを開放することにはあまり乗り気ではありません。
sam
(Sam Saffron)
4
残念ながら、私は一般的に反対です。これは、後々あまりにも多くの苦痛と苦しみをもたらすだけです。
@angus ここに tag_id 列を持つ新しいテーブルを追加するだけではだめですか?
「いいね!」 1
angus
(Angus McLeod)
5
はい、できます。
カスタムフィールドの魅力は、プラグインレジストリやプラグインAPIのような、定義済みの統合構造を持っていることだと思います。コアモデルとの安定した統合方法があることは、私の観点からはカスタム統合を独自に開発するよりも望ましいです。
カスタムフィールドについておっしゃっていることは理解しています。それらの問題は、どちらにしても存在すると言えるでしょう。タグカスタムフィールドが存在するかどうかは、それらの問題を変えることはありません。
しかし、他の選択肢もありますので、ご自由になさってください 
「いいね!」 3
sam
(Sam Saffron)
6
カスタムフィールドの問題は、時間の経過とともに、それらが非常に柔軟になりすぎ、人々がBLOBに巨大で複雑な構造を格納する傾向があることです。
この方法の「公式な」マッピングを求めていることは、完全に理解できます。
質問をあなたに戻しますが…具体的に何を話していますか?
- ディスコースがタグを表示するたびに、特別なものを表示する必要がありますか?(タグが表示される場所がたくさんあるため、これは最適化するのが大変です)
- これはタグページだけですか?
- これは管理者が設定するバックグラウンドタスクだけですか?
そこから始めましょうか?具体的に何をしたいですか?さまざまなユーザーは何を見ますか?など…
「いいね!」 2
angus
(Angus McLeod)
7
タグに関連付けられた ActivityPub データを、ActivityPub アクターの役割を果たすタグとして保存します。discourse/discourse のクライアントのどの部分にもシリアライズする必要はありません。ユーザーは通常の discourse/discourse クライアントのどの部分でもこのデータを見ることはありません。データは、プラグインが専用のプラグイン管理ルートで管理する他のデータと共に、管理クライアントにシリアライズされます。おっしゃる通り、既存の discourse/discourse タグルート(またはサイトシリアライザー)でのシリアライズは、様々な理由で困難であり、試したくないことなので、プリロードや編集可能な API メソッドを追加しませんでした。
安定した API を利用できることに加えて、ActivityPub プラグインでこれらが好ましい理由は、プラグインが ActivityPub アクティビティを discourse_activity_pub_* テーブルという別のデータモデルセットに保存し、それが定義されたプラグイン API とコアモデルのカスタムフィールドを介して discourse/discourse と統合されるためです。ここには、Discourse と ActivityPub の懸念事項を適切に分離するために、意図的な冗長性がいくつかあります。Discourse と ActivityPub には、関連しているが異なる概念とデータモデルのシリーズがあるため、ActivityPub データと discourse/discourse データの明確な区別を維持することは、大規模で複雑なプラグインの明瞭さ(そして正気)を保つために必要です。カスタムフィールドを統合ポイントとして使用することは、その分離をクリーンで安定した状態に保つのに非常に役立ちます。
これについての簡単な説明は、プラグインの README にあります。
「いいね!」 2
pmusaraj
(Penar Musaraj)
9
遅れて申し訳ありません、@angus。タグのカスタムフィールドなしでActivityPubにタグサポートを追加することはできますか?
現在、カテゴリに使用しているデータモデルとは一貫性がありませんが、これが私たちの好ましいアプローチです。コアにタグのカスタムフィールドサポートを追加するということは、コアでタグの完全サポートへの扉を開くことになります。あなたのPRはこれを含んでいませんが、次の開発者がその扉をもう少し開くように促すでしょう。
「いいね!」 1
angus
(Angus McLeod)
10
心配いりません。ご配慮に感謝します。別の方法を見つけます。
「いいね!」 1