mastodon
mastodon copied to clipboard
Handle renotes with quote (quote boosts) from Misskey
Pitch
Please display renotes with quote as a reply to the quoted toot.
This is how the thread looks in Misskey. The quote-renote is added as a reply:
But in Mastodon, this reply never shows up.
Additionally, when a Mastodon user follows a Misskey user that sends a quote renote, it shows up like this:
Clicking on the link opens a new tab instead of going to the toot inside the client.
I don't know what activity Misskey sends on quote renotes, but i could provide a Misskey-account for testing if that helps.
Motivation
It would be nice to have consistent behaviour across platforms where possible. Some Mastodon users have expressed dismay when they discovered that they don't get notified when someone quote-renotes a toot of them.
Misskey sends a regular Note, I'm pretty sure. Functionally, it's no different than copying the public permalink to a post and pasting it into the status yourself. If you want to send someone a notification, then mention them. I'm not sure what, if anything, can be done on Mastodon's side.
$ curl -H 'Accept: application/activity+json' https://very.tastytea.de/notes/90jcghgict | jq
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
"sensitive": "as:sensitive",
"Hashtag": "as:Hashtag",
"quoteUrl": "as:quoteUrl",
"toot": "http://joinmastodon.org/ns#",
"Emoji": "toot:Emoji",
"featured": "toot:featured",
"discoverable": "toot:discoverable",
"schema": "http://schema.org#",
"PropertyValue": "schema:PropertyValue",
"value": "schema:value",
"misskey": "https://misskey-hub.net/ns#",
"_misskey_content": "misskey:_misskey_content",
"_misskey_quote": "misskey:_misskey_quote",
"_misskey_reaction": "misskey:_misskey_reaction",
"_misskey_votes": "misskey:_misskey_votes",
"_misskey_talk": "misskey:_misskey_talk",
"isCat": "misskey:isCat",
"vcard": "http://www.w3.org/2006/vcard/ns#"
}
],
"id": "https://very.tastytea.de/notes/90jcghgict",
"type": "Note",
"attributedTo": "https://very.tastytea.de/users/90el6o1oyu",
"summary": null,
"content": "<p><span>renote with quote from misskey<br><br>RE: </span><a href=\"https://mastodon.social/users/test9876/statuses/108339659909309827\">https://mastodon.social/users/test9876/statuses/108339659909309827</a></p>",
"_misskey_content": "renote with quote from misskey",
"_misskey_quote": "https://mastodon.social/users/test9876/statuses/108339659909309827",
"quoteUrl": "https://mastodon.social/users/test9876/statuses/108339659909309827",
"published": "2022-05-21T11:20:58.722Z",
"to": [
"https://very.tastytea.de/users/90el6o1oyu/followers"
],
"cc": [
"https://www.w3.org/ns/activitystreams#Public"
],
"inReplyTo": null,
"attachment": [],
"sensitive": false,
"tag": []
}
there's some incorrect stuff going on with the JSON-LD bits (for example, quoteUrl
is not adopted as part of the activtiypub namespace) but again, i think the onus should be on Misskey^ to add a Mention tag of the quoted post's author or something similar if they expect it to generate a notification. otherwise you're basically asking to reimplement webmentions
^ it might also be a good idea for misskey to consider using inReplyTo
so that it actually creates a thread and not an onion of nested links, but that's another topic...
Using inReplyTo
is in my opinion questionable at best, because a note can be a quote and a reply at the same time. see https://github.com/misskey-dev/misskey/issues/8722#issuecomment-1133845430
Implementing it as mentions also comes with some pitfalls because the quote itself can of course also contain mentions, and it becomes impossible to tell the "real" mentions and the quote "mentions" apart.
What would happen if we put the user as an entry in the cc
field without a mention?
Is a quote not supposed to be an Announce
of the quoted object
with a differing content
property? I could also see it as putting the URI of the quoted object into the attachment
property. This is the first time I get to see how this JSON looks and _misskey_quote
and quoteUrl
do not seem to be entirely in the spirit of the ActivityPub protocol.
As for reply semantics, quote posts are basically normal posts that contain a quote, therefore a quote post can be a reply to anything else, therefore I don't think inReplyTo
is appropriate for signifying the quote itself. If Announce
was used, they would count towards reblogs and go out as a reblog notification, which seems more appropriate.
Is a quote not supposed to be an
Announce
of the quotedobject
with a differingcontent
property?
I'm not aware of a (community) standard about how quotes are supposed to be formatted in ActivityStreams. Well, apart from how Misskey has been doing it for a while now, which also seems to be compatible with e.g. Fedibird.
Quote is already implemented in Mastodon forks such as Fedibird, which can be federated with Misskey. However, Fedibird does not notify quotes. https://github.com/misskey-dev/misskey/issues/8722#issuecomment-1133840430
I am not familiar with Mastodon's implementation of course, but assuming there is no support for this now, if Misskey started using Announce
it would just appear as renotes/boosts on Mastodon, which would degrade UX compared to the current state: Because content
contains a link to the note, it will be rendered as a very basic form of quoted text, which I have sometimes even seen used by Mastodon users.
I found an open merge request for pleroma to add quotes which also seems to use the kind of Create{ object: Note{ quoteUrl, ...}, ...}
format that Misskey uses.
Pleroma code from the merge request that I think is relevant
from https://git.pleroma.social/pleroma/pleroma/-/merge_requests/3616/diffs#diff-content-e1e070d28a19d7f586d78a2ae9d3b6369628b39a
def fix_quote_url(%{"quoteUrl" => quote_url} = object, options)
when not is_nil(quote_url) do
with {:ok, quoted_object} <- get_obj_helper(quote_url, options),
%Activity{} <- Activity.get_create_by_object_ap_id(quoted_object.data["id"]) do
Map.put(object, "quoteUrl", quoted_object.data["id"])
else
# ...
end
end
# ...
def handle_incoming(
%{"type" => "Create", "object" => %{"type" => objtype, "id" => obj_id}} = data,
options
)
when objtype in ~w{Question Answer ChatMessage Audio Video Event Article Note Page} do
fetch_options = Keyword.put(options, :depth, (options[:depth] || 0) + 1)
object =
data["object"]
# ...
|> fix_quote_url(fetch_options)
# ...
end
# ...
Please, not this. Quote tweet notifications and back-links are precisely one of the things that catalyses toxicity on Twitter making it such an awful place.
People use that to pick fights and force the other person to reply on their own turf. People use it to coordinate pile-ons by browsing the quotes. People may have expectations due to coming from Twitter, but the Fediverse is not supposed to be a drop-in replacement for it.
If this is implemented you can bet a bunch of instances will want to disable this feature, making the experience more inconsistent across instances, not more consistent.
@brocoli from my understanding the baseline is that Mastodon users should at least be notified that they have been quoted by users of other Fediverse software. Currently, Mastodon users will not know if they have been quoted, which in my opinion makes the problem worse.
I made a poll about this and over 80% want to get notified: https://very.tastytea.de/notes/90jdr3lxmu. It's not representative, of course and the sample size is rather small.
I saw the poll. If you present one in a way where the first logical leap people will have is "someone may be talking about me and I'm not notified about it", of course people will say they want to be notified. It's a natural type of anxiety to have.
It's also why Twitter has the feature: the anxiety around someone else talking about something you said is immediately engaging.
But having people engage with each other on the basis of anxiety is really bad for the ecosystem.
It's frankly better not to be notified at all. And the problem is worse in the Fediverse because you'll be giving tools for malicious actors to "fish out" others from their instances into their own, that may have very different moderation rules and people running it.
So if Misskey wants to do it that's fine, imho it's a mistake, but they do they, and having seen how this plays out in Twitter, I really don't like the idea of this feature being supported in Mastodon.
But I'd be interested if you asked your followers why they want to be notified, and what would they use that feature for. Same for the ability to see who quoted a toot.
@Johann150
What would happen if we put the user as an entry in the cc field without a mention?
It would be detected as a "limited" visibility post (a la circles, aspects, audiences, etc)
@Gargron
As for reply semantics, quote posts are basically normal posts that contain a quote, therefore a quote post can be a reply to anything else, therefore I don't think inReplyTo is appropriate for signifying the quote itself. If Announce was used, they would count towards reblogs and go out as a reblog notification, which seems more appropriate.
That's fine if we define a quote like you did. I think it's a bit unclear / ambiguous what exactly a "quote" is, versus a "quote renote". It makes sense to me to have an Announce
with content
added, and I think I saw a proposal back in 2020 to use [Create, Announce]
as a type for Tumblr-like reblogs, which are similar though perhaps not exactly the same (since Tumblr posts are meant to stand on their own and also add to the reblog count). I'm just opposed to the user experience of quoting a quote of a quote of a quote and ending up with an onion of nested links that someone has to click through to discover the original context. What @brocoli says is correct:
Please, not this. Quote tweet notifications and back-links are precisely one of the things that catalyses toxicity on Twitter making it such an awful place. People use that to pick fights and force the other person to reply on their own turf. People use it to coordinate pile-ons by browsing the quotes. People may have expectations due to coming from Twitter, but the Fediverse is not supposed to be a drop-in replacement for it.
In my view, the problem with simply copying Twitter "quote tweets" is that they are an objectively bad user experience, even when you put toxic behavior aside. Yes, they are used to dunk on people and other such things, but I would argue their main function is to strip context. By quote-reposting something, you are no longer creating a reply in context of the original conversation. You are starting a new conversation in a new context, one that is targeted at your followers and not at the original person. In this light, it is not surprising that the feature gets abused on Twitter.
Like, if people want to get notified when someone is quoting or linking to them, then we might as well add support for webmentions. As I said before, the basic ask of this feature request is to re-implement webmentions in ActivityPub -- the way that works, you send a webmention or something equivalent when you quote or link to someone, and the other person can have a setting on whether they want to be notified when someone webmentions them. In ActivityPub-land, the best tool we have is the Mention
(currently). The next best thing would be Announce
with content
, even accounting for the issue of falling back to a silent boost if content
is not supported on Announce
. Finally, the third option would be to add the quoted object in attachment
or tag
, and although this could be a little awkward, it probably better expresses the semantics of what is going on here (the quoted post is attached to your post, or you are tagging the Link
in content
in the same way you would be tagging a Mention
or Hashtag
)
It would be detected as a "limited" visibility post (a la circles, aspects, audiences, etc)
Even if the public scope is another cc
entry like in the example you posted above? Anyway I guess it would not generate any kind of notification.
I have a feeling there is a misunderstanding about what I think this issue is about and what others think this issue is about. My view is this:
All Fediverse servers I have used (including Mastodon) allow you to choose what notifications you want to receive. If you do not wish to receive notifications you can disable them. That is a reason why I think it would be nice to introduce a dedicated notification type for this. And is also a reason why the mention approach might not be the best idea, because notifications would be lumped in with "real" mentions. If users share the concerns you brought up above, and do not wish to receive this kind of notification, it would be easy to 1) allow them to disable those notifications or even 2) disable them by default.
For me personally it feels kind of wrong with the current state where it is basically "talking behind the backs" of Mastodon users. But if you think this is a bad idea all together I guess there is nothing more to talk about.
For me personally it feels kind of wrong with the current state where it is basically "talking behind the backs" of Mastodon users.
I mean, is it "talking behind your back" if I link to your post and add my own commentary, manually? Should that send a notification? I view that as basically the exact same question, just codified into a protocol as a feature.
On the IndieWeb, this use-case is handled by webmentions -- https://indieweb.org/Webmention
On the ActivityPub fediverse, this is not handled, and that is what we are discussing.
But if you think this is a bad idea all together I guess there is nothing more to talk about.
What I think is a bad idea is specifically the anti-pattern of quoting back-and-forth instead of replying. Having a native button in the UI that strips context and does nothing else is going to be a bad idea generally. This isn't to say that the whole concept of quoting someone should be thrown out -- just that it should be given due consideration to create a good user experience.
I think a lot of people would like to see "Quote Toots"
This thread is a good example of a few people attempting to speak for the entire Mastodon fediverse. Instead of polling users, people are stating their personal opinion as absolute fact. I have seen the userbase request this feature for a long time... I'm honestly shocked its not on the current roadmap.
I see no reason why this feature could not be implemented, and if a user doesn't want to be quote toot'd maybe have an option to disallow this at the toot level, or even account level.
Please don't let this feature request be yet another example of "why we cannot have nice things"
I'll also add: Notifications for this feature are a must, there should be no interaction that doesn't notify someone (with the ability to silence of course)
Mastodon speficially doesn't have QRTs because on Twitter the feature is mostly used for dunks and harassment. Linking to a toot is one thing (it gets shown in the link embed, btw), but when it's a first-class feature (that you can't block, how are you gonna stop someone from copying and pasting a link? on a different instance as well?) it just invites talking about someone to one's own audience rather than inviting a dialogue (which the reply feature does)
Mastodon speficially doesn't have QRTs because on Twitter the feature is mostly used for dunks and harassment. Linking to a toot is one thing (it gets shown in the link embed, btw), but when it's a first-class feature (that you can't block, how are you gonna stop someone from copying and pasting a link? on a different instance as well?) it just invites talking about someone to one's own audience rather than inviting a dialogue (which the reply feature does)
- Can you provide a source to document the claim that it is "mostly used for dunks and harassment"? I see people use QTR for many things that are not dunks nor harassment.
- You can just screenshot a toot (which many people do already) to work around the lack of this basic feature, and as a result no notification is sent to the user. This is objectively worse. And is an accessibility issue for users who are visually impaired.
- Can you provide any sources to back up the claim (outside of your personal opinion) that QTR does not "invite dialogue"?
Mastodons user base is growing, I think we should be asking the users what they want... Maybe a poll? Making feature-set choices based on the personal opinions of devs (with no data to back up their claims) seems like a great way to drive off new users.
I think Mastodon can at least partially support quote posts from other Fediverse platofrms by providing a link that can be opened inside the web app, similarly to user mentions, and by notifying the author of a quoted post. The quote preview can be omitted. If there's no preview, people will have to follow the link to understand the context, and that should alleviate some of the concerns expressed here.
There's a Fediverse Enhancement Proposal that describes how this can be implemented: https://codeberg.org/fediverse/fep/src/branch/main/feps/fep-e232.md (it's based on the discussion that happened here and in related Misskey issue).