hachyderm.io is one of the many independent Mastodon servers you can use to participate in the fediverse.
Hachyderm is a safe space, LGBTQIA+ and BLM, primarily comprised of tech industry professionals world wide. Note that many non-user account types have restrictions - please see our About page.

Administered by:

Server stats:

9.4K
active users

Emelia 👸🏻

Am wondering if it'd make sense to have a dedicated Reply activity, such that a reply becomes Reply(Note) instead of Create(Note)

Where the Reply activity has the target & is sent to that server only, before being forwarded?

Would this make the protocol clearer for implementers?

So I raised this at the end of SWICG Issue Triage, and the consensus there was that we don't need an explicit Reply activity, as there's "any object can have inReplyTo" and "inReplyTo" doesn't necessarily mean "add to the object's replies collection — both are necessary here, activities that aren't in the replies collection but are inReplyTo would be treated as "other replies" and software may choose to hide them

@thisismissem Perhaps a silly question: would deleting the reply then send a Delete(Note) or Delete(Reply(Note)), and how would the delete be forwarded?

@Two9A I'd suspect just Delete(Note), and updates would be Update(Note), since those don't necessarily need special handling, afaict

@thisismissem Maybe it would, if it was the only construct they had to deal with.

If they have to work with a range of other implementations, some which support Reply(Note) and others which only accept Create(Note), then IMHO it'll just muddy the waters.

The joys of backwards compatibility...

@FenTiger was specifically thinking Reply(Note) would be used in combination with inbox forwarding, so you'd only address it to the replied to server, but the note would have the broadcast addressing

@thisismissem Well, if you mean that replies get sent back to the thread's originator at first and then distributed more widely from there - yes, I think this would be much clearer.

It would also allow the originator to enforce various policies (signature scheme permitting).

Tried to get a constrained conversation model into ActivityPub for over a decade. Finally settled on this:

https://fediversity.site/help/develop/en/Containers

I didn't create an FEP specifically for this because it's just a minor tweak to a couple of existing FEPs.

This provides a mechanism to easily implement reply controls, moderation, groups, private groups, conversation completion, relayed deliveries, circles and much more. And it's all generic ActivityPub and co-exists with microblog software. I added a little indicator in the UI so you can see at a glance if the conversation you're participating in is safe or not.
fediversity.siteHelp

@mikedev @FenTiger Would you mind if I make a FEP based on this document?

@silverpill Not sure if you meant to tag me here or not... This is entirely @mikedev's work so it's not really my call.

@mikedev draft: https://codeberg.org/silverpill/feps/src/branch/main/171b/fep-171b.md

It is based on the original text, but I added several clarifications, and also some new requirements:

- Compatibility with FEP-7888
- The recommended type of collection is Context
- Using FEP-c7d3 framework for authentication

But it still should be compatible with your implementation. If it will diverge in the future, I'll pick a different name

Codeberg.orgfeps/171b/fep-171b.md at mainfeps - My FEPs
I can foresee a lot of confusion over the mingling of '@context', 'context', and 'Context'. Do you have a recommended LD namespace for the latter, and should it be a type with multiple properties (['OrderedCollection', 'Context'])?  It wasn't obvious from the document.

Otherwise that looks good.

@mikedev

I would prefer to use a single type, but ['OrderedCollection', 'Context'] is also an option. The type will be defined in w3id.org/fep namespace with full URI being https://w3id.org/fep/171b/Context (assuming this idea survives the community review)

Summary card of repository fediverse/fep
Codeberg.orgfep/fep/888d/fep-888d.md at mainfep - Fediverse Enhancement Proposals

@thisismissem@hachyderm.io there's no functional difference though no? I think @trwnh@mastodon.social's 7888 already discusses that flow and it works ok with Create...

@julian @trwnh yeah, the idea here was just to more clearly signal intent maybe.

@thisismissem @julian the one potential advantage of having a dedicated Reply activity is that it allows for quick pattern-matching at the activity level (similar to Like/Announce), but it comes at a semantic cost of reifying replies as an activity rather than as metadata or as a link relation. which i don't think they should be dedicated activities.

@trwnh @julian there's also potentially different delivery semantics, where you only deliver to your local server and to the inReplyTo's server, and it's up to them to announce

Just to say this again and again: I don't think that ActivityPub / FEPs / (whatever else there is) do enough to explain how to handle replies, and who gets to moderate them.

So yes, a Reply activity would be a way to do it. However, I don't think it would be enough to just rename the Create activity to Reply. What I would like to see is something along the lines:

  • Alice replies to Bob with a Reply activity
  • This results in Alice giving/yielding/... Bob the ability to moderate, i.e. delete, the reply
  • Furthermore, it will be up to Bob to distribute Alice's reply.

Getting there is complicated! It will probably require some incompatibilities to the current Fediverse. However, I believe it would be worth it.

@helge I would say give bob the power to delete, but because bob has exclusive permission to broadcast it, the reply would only exist on alice's server until bob broadcast it, likely via an Add to the replies collection — at least that's how I was thinking of it?