Announce Activity

I read this discussion on boosts/announc: Quote Toots · Issue #12753 · mastodon/mastodon · GitHub . If I read it correctly, the issue is that a bad discussion culture can arise when people can share toots in combination with a comment. This is why people are against supporting boosts in combination with comments.

But I also thought of something completely different. I had looked at Announce Activity (ActivityPub) and wondered how that could be technically implemented without each software like Mastodon/ Friendica implementing their own variant.

In the ActivityPub vocabulary ( Activity Vocabulary (w3.org)) I find the following examples.

Boost/Share

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally announced that she had arrived at work",
  "type": "Announce",
  "actor": {
    "type": "Person",
    "id": "http://sally.example.org",
    "name": "Sally"
  },
  "object": {
    "type": "Arrive",
    "actor": "http://sally.example.org",
    "location": {
      "type": "Place",
      "name": "Work"
    }
  }
}

Like

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "summary": "Sally liked a note",
  "type": "Like",
  "actor": {
    "type": "Person",
    "name": "Sally"
  },
  "object": "http://example.org/notes/1"
}

My understanding is that

  "object": {
    "type": "Arrive",
    "actor": "http://sally.example.org",
    "location": {
      "type": "Place",
      "name": "Work"
    }

must be replaced by

"object": "http://example.org/notes/1"

if you want to boost the node http://example.org/notes/1. And then there is no property that could hold a comment. It is only a link to an object.

Do I understand this correctly?

To add text along with the quoted (Announced) post, you’d put it in the content field. I don’t know if any implementations support that, but I bet at least some do.

And object doesn’t necessarily have to be inlined to just the string id, the full object as in that example is definitely valid. Sadly some implementations only support string ids, not full objects, but that’s just them not fully complying with the standards.

1 Like

this is just one possible way of doing it… if you were okay with existing implementations falling back to just a regular reshare, without your comment being visible.

i’m not sure i understand the question. an Announce is an Announce. what “variant” would there be?

1 Like

There are a dozen ways of providing quoted posts in the fediverse. We’ve discussed this over a long period of time and settled on FEP-e232 (although “streams” still supports every known legacy variant, just as it does with groups).

2 Likes

This is exactly what I meant by variant: “There are several possibilities”.

By explanation, I just recently took a closer look at ActivityPub for the first time. I like to do this practically. So I set a goal to post articles I publish in Joomla to Fediverse. Then I realized that each service in the Fediverse (Mastodon, Friendica …) has its special features.

I understand the problem of finding the right middle between " regulate tight " and " flexibility ".

I opened this post because I was wondering while reading the discussion. I did not find anywhere the argument that an exchange between different members of the fediverse.party is not described in the ActivityPub protocol. If one service like Mastodon implements something it complicates communication across different services - Or is not supported elsewhere.

But, as I said, I am new and therefore may not have the right view of the problem.

Do you mean this: #14 - [TRACKING] FEP-e232: Object Links - fep - Codeberg.org ?

Well, as I said before, an Announce is an Announce. By which I mean, when you send an Announce, that is semantically a “reshare” of the original object. Your Announce activity gets added to the shares collection on that object.

If you would like to reshare something with an additional comment, then your options are:

Announce Note, but include additional content on the Announce.

In this case, most fedi projects don’t understand content on Announce, so your activity will “fall back” to just being a boost/retweet/etc of the original object/post. Your comment won’t be visible anywhere in those projects.

id: <some-reshare>
actor: <you>
type: Announce
content: "This is my comment"  # most projects will ignore this
object:
  id: <some-post>
  attributedTo: <someone>
  content: "Original post"

Create Note as usual, but insert a link and then tag that Link with extra metadata.

In this case, most fedi projects understand a Create Note to mean posting a status. This will “fall back” to being a status with a link effectively copypasted in. As a progressive enhancement, some projects like Foundkey will understand “object links” (a la FEP-e232) and open those links in-app rather than in a new browser tab. Additionally, if you use the right link relation, the link can be understood as a “quote post” according to Misskey semantics, and Foundkey will embed a preview of the linked post when rendering your own post.

id: <some-create>
actor: <you>
type: Create
object:
  id: <your-post>
  attributedTo: <you>
  content: "This is my comment. RE: <quoted-post>"
  tag:
    - href: <quoted-post>
      # per FEP-e232, we hint that this link can be fetched as an activitypub object
      mediaType: application/ld+json; profile="https://www.w3.org/ns/activitystreams"
      # for Foundkey, we hint that this is a "quote" as understood by Misskey
      rel: ["https://misskey-hub.net/ns#_misskey_quote"]

See FEP-e232: Object Links - #34 by trwnh for more

2 Likes