投票結果のUpdateアクティビティで指定される正しいactorは?

notestockを作っていて気が付いたのですが、投票結果のUpdateが配信されてくるじゃないですか。
そのactorが、MisskeyとMastodonで形式が違ったので、どちらが正しいのだろうと仕様を探してみたのですが、はっきりとしたものが見つけられず、一応確認したいと思って立ててみました。

https://www.w3.org/TR/activitystreams-core/#actors を読むとApplication | Group | Organization | Person | Serviceを表すと書かれているので、アプリケーションやサービスだと解釈すると、Mastodonのように投票元のアドレスでも良いのかなと思ったりもしたのですが、どうしてもMisskeyの表現の方が合っている感じがしてしまうのです。
この辺りの明確な定義って、どこかで決まっていたりしますでしょうか?

  • MisskeyのUpdateアクティビティ

actorはCreateの時と同じく、投稿者のアドレス

array (
'@context' => 
array (
    0 => 'https://www.w3.org/ns/activitystreams',
    1 => 'https://w3id.org/security/v1',
    2 => 
    array (
    'Hashtag' => 'as:Hashtag',
    ),
),
'id' => 'https://misskey.io/users/7rlaxboxxh#updates/1561198030279',
'actor' => 'https://misskey.io/users/7rlaxboxxh',
'type' => 'Update',
'to' => 
array (
    0 => 'https://www.w3.org/ns/activitystreams#Public',
),
'object' => 
array (
    'id' => 'https://misskey.io/notes/7uax9g8mu6',
    'type' => 'Question',
    (略)
    ),
)
  • MastodonのUpdateアクティビティ

actorは投票の元となった投稿アドレス

array (
'@context' => 
array (
    0 => 'https://www.w3.org/ns/activitystreams',
    1 => 
    array (
    (略)
    ),
),
'id' => 'https://mstdn.nere9.help/users/osapon/statuses/102314688882500419#updates/1561198518',
'type' => 'Update',
'actor' => 'https://mstdn.nere9.help/users/osapon/statuses/102314688882500419',
'to' => 
array (
    0 => 'https://mstdn.nere9.help/users/osapon/followers',
),
'object' => 
array (
    'id' => 'https://mstdn.nere9.help/users/osapon/statuses/102314688882500419',
    'type' => 'Question',
    (略)
    ),
)
1 Like
$ curl -LSsH'Accept: application/activity+json' https://mstdn.nere9.help/users/osapon/statuses/102314688882500419 | jq -r .type
Question

なので Mastodon の実装だと Actor として invalid な気がしますね。Mastodon 側に修正してもらうのも検討の余地があると思います。

1 Like

訊いてみたところ、バグみたいです。 https://github.com/tootsuite/mastodon/issues/11185

2 Likes

直ったみたいです。 https://github.com/tootsuite/mastodon/pull/11194