FEP-8b32はJSONベースの署名を埋め込みオブジェクトで上手く動作させるために`object`タームの定義をオーバーライドしてセマンティクスにも手を入れているけど(<https://codeberg.org/fediverse/fep/src/branch/main/fep/8b32/fep-8b32.md#nested-objects>)、Activity StreamsオブジェクトをRDFとして扱っている実装(`rdf-pub`がそうだっけ?)との互換性が気になっている
FEP-8b32はJSONベースの署名を埋め込みオブジェクトで上手く動作させるために`object`タームの定義をオーバーライドしてセマンティクスにも手を入れているけど(<https://codeberg.org/fediverse/fep/src/branch/main/fep/8b32/fep-8b32.md#nested-objects>)、Activity StreamsオブジェクトをRDFとして扱っている実装(`rdf-pub`がそうだっけ?)との互換性が気になっている
This account is not set to public on notestock.
This account is not set to public on notestock.
手続きマクロのUIテストの結果が手元とCIで食い違っていて首を傾げているけど、まあ実用上は困らなそうなので取りあえずはヨシッ(?)
UIテスト、当然ながらツールチェーンを更新するたびに結果がコロコロ変わりがちなのがつらい。しかしいつの間にか全く想定していない出力になったりしても困るので、いずれにせよ継続的にテストを回す必要はあるのだけど
まあ`trybuild`のおかげで追従作業がかなり楽にはなった。`compiletest_rs`のときは毎回手作業でテストを書き換えていたからなあ
This account is not set to public on notestock.
Mastodonの`toot:indexable`とかは(デフォルトで検索可能と解するのが一般的である)Webの慣行と相性が悪いと思うけど、一方でフォロワー以外のユーザによる検索タイムラインにも含まないという仕様については、いわゆる非収載/未収載/ホーム「公開範囲」を「公開タイムラインに含めない」ものとして扱う慣習を踏まえればある種の一貫性はあるように思う(それに倣うべきかは別として)
「公開範囲」を鉤括弧で囲んでいるのは、「公開範囲」/「可視性」というのはActivityPub/Activity Streamsで定められているわけでもない概念だからですね。Activity Streamsにあるのはアクターやそのコレクションを対象としたaudience targetingであって、"public"/"unlisted"/"limited"/"direct"といった有限通りの列挙型的な「公開範囲」ではないので(早口)(過激派)
This account is not set to public on notestock.
しかしaudience targetingを検索可能性に流用するのはやはり標準で明示的に定められた仕様ではないし、そうなると(著作権法施行規則第四条の四で`robots.txt`に与えられているような)法的な効力を持たせるのも難しそうだし、本当なら`fedibird:searchableBy`のような専用の仕組みを整備するのが良いのだろうけど
s/(?<=一方で)/「非収載」のオブジェクトを/
(推敲のつもりで文節を並び替えているうちに前後が繋がらなくなってしまっていた)
This account is not set to public on notestock.
This account is not set to public on notestock.
`Emoji`が標準化されていないとはいっても、オブジェクトの帰属を`id`のauthorityで判断するのは普通に普遍的な解釈だと思うけどなあ。
アクターのホストと`Emoji`オブジェクトのホストが食い違うときに無効なものと判定するならまだ分かるけど、当該の`Emoji`オブジェクトをアクターのホストのものとして処理する(というのが現行のMisskeyの仕様という認識で合っている?)のはかなりアクロバティックなように思える
FEP-5e53: Opt-out Preference Signals - Standards / Fediverse Enhancement Proposals - SocialHub
https://socialhub.activitypub.rocks/t/fep-5e53-opt-out-preference-signals/4323/6
そういえば`X-Robots-Tag`をActivityPubに輸入しようという提案もあるのだった
というか少なくともFedibirdはローカルのアクターによるリモートの絵文字リアクションへの「相乗り」の`Like`アクティビティの`tag`にリモートの`Emoji`オブジェクトを全て埋め込んでいるようだけど、これは(C2Sでなく連合の場合は)本来なら単にURIで良いはずだよね。
仮に埋め込みでないと上手く相互運用できないというなら、それは相手のサーバが(`id`をfetchし直さず埋め込まれた内容をそのまま信用するなどの)怪しい処理をしているということに他ならないわけだし
あのMetaだってActivityPub対応を進めているのだから、もはやActivityPubに対応していないプラットフォームはDMA違反扱いで良いのでは(適当)
Early Access Federation for Self-Hosters | Bluesky
https://docs.bsky.app/blog/self-host-federation
> Unlike a Mastodon instance, it does not need to function as a full-fledged social media service
お、喧嘩売っとんのか?(?)
別にActivity Streamsだってオブジェクトを静的にホストすることは出来るわけですけど〜? <small style="font-size: xx-small">LDNを購読する代わりに静的な`Collection`をクロールできるような実装はまだ一般的でないけど</small>
Pub/subを管理することに比べて定期的にクロールするというのはそこまで難しいものでないだろうから、本当に単に機運がないからやっていないだけなのでは
ワードミュート等のフィルタリングの仕組みといわゆる検索避けを両立するには検索されたくないという意志を表示する手段は不可欠だと思うので、Mastodonの方式に従うかは別として何らかのオプトアウトの仕組みは欲しいよね
`toot:indexable`は粒度が粗すぎて個人的には使いづらいと感じている。個別実装のインタフェースとしてアカウント単位の設定しか提供しないのは良いとしても、多様な実装から利用されることを想定した連合上の表現としては`fedibird:searchableBy`くらいの柔軟性が欲しいよね
まあ連合上でオブジェクト単位で設定可能にした場合、アカウント単位で設定を変更したい場合にどうするんだという問題があるけど。というか`toot:indexable` aka. FEP-5febがアクター単位の設定になっているのがまさにその理由なのだよな(<https://socialhub.activitypub.rocks/t/fep-5feb-search-indexing-consent-for-actors/3550/10>)
それはそれとしてブーリアンでなくaudience targetingの表現を流用するくらいはできたのではという気はするけど。個別の実装として「フォロワー限定」のような検索範囲に対応したくないなら検索不能にフォールバックすれば良いわけで
`toot`拡張、当然っちゃ当然ではあるけど、全体的にMastodonの実装詳細に影響されすぎの感がある。
例えば`manuallyApprovesFollowers`とかも、ActivityPubでは「フォロー承認制」相当の挙動がデフォルトなのだからそこは`automaticallyApprovesFollowers`のようなプロパティを生やすべきところだろという感じだし(細かい表現にうるさいオタク)。あ、これは`toot:`名前空間でなく`as:`名前空間に直接生やしてしまった拡張プロパティだったか
@mei23 Fedibirdの場合はこんな感じですね(一部略):
```json
{
"id": "https://fedibird.com/emoji_reactions/113101768896873277",
"type": "Like",
"content": ":blobsignya:",
"object": "https://fedibird.com/users/tesaguri/statuses/112989776912649991",
"tag": [
{
"id": "https://misskey.m544.net/emojis/blobsignya",
"type": "Emoji",
"name": ":blobsignya:",
"icon": { /* … */ }
}
]
}
``` [参照]
@mei23 私もFedibirdの実装を詳しく追っているわけではないですが、`Emoji`オブジェクトに`id`があるならそのURIの同一性をもってリモートのものと同一の絵文字であることが判定できるのではないでしょうか
@mei23 その場合はそのURIをfetchすれば良いのではないでしょうか。<https://github.com/kmycode/mastodon/security/advisories/GHSA-c7p6-c688-fhgp>のような脆弱性のリスクを避けるためにはいずれにしても`id`をfetchする必要はあるでしょうし
まあ、いちいち実装前にFEPを提案して相互運用性を検証しながら地道に仕様を固めたりしなくても、とりあえず実装してユーザ数の力で既成事実化すれば他の実装が追従してくれるのでユーザ数が正義なのだろう(炎上)
一応補足しておくと、`toot:indexable`は実装後にFEPを出している(FEP-5feb)。一方で`fediverse:creator`などは……はい。Claire氏やa氏などとその他のメンバーで温度感が違いすぎるといったところだろうか