Skip to content

Piero Bosio Social Web Site Personale Logo Fediverso

Social Forum federato con il resto del mondo. Non contano le istanze, contano le persone

Deleting a post vs deleting an entire comment tree

Technical Discussion
65 15 69
  • @trwnh @julian This is a trust and safety issue, so it's more than just "do what you will". People post things that may endanger themselves or others, and when the details are repeated in the discussion tree deleting the original post is ineffective. Servers that handle this badly can and should be sanctioned - so yes, collectively we can and probably will enforce behaviour. It's pretty important that the intent is explicit.

    @mat @julian i understand the situation you're describing, but what kind of notification are you trying to send regarding this? are there any expected behaviors from your audience? there is a far larger problem here: you don't have any consistency guarantees within the distributed system that is the fediverse, precisely because everyone has a different understanding. what are you trying to get your peers to understand?

    typically, publishers can Delete, and forum mods can Remove from the thread.

  • @mat @julian i understand the situation you're describing, but what kind of notification are you trying to send regarding this? are there any expected behaviors from your audience? there is a far larger problem here: you don't have any consistency guarantees within the distributed system that is the fediverse, precisely because everyone has a different understanding. what are you trying to get your peers to understand?

    typically, publishers can Delete, and forum mods can Remove from the thread.

    @mat @julian if the redaction is coming from the author, they can send a Delete to anywhere they expect to have stored a copy.

    if the redaction is coming from the aggregator, they can send a Remove to anywhere relevant.

    but these are always going to be best-effort, because of 2 main reasons:

    - you don't have a way to track everyone who has a copy.
    - your peers might not agree with what "badly" means.

    generally, the answer to "how do i delete a tree" is "you can't", because trees aren't real.

  • @mat @julian if the redaction is coming from the author, they can send a Delete to anywhere they expect to have stored a copy.

    if the redaction is coming from the aggregator, they can send a Remove to anywhere relevant.

    but these are always going to be best-effort, because of 2 main reasons:

    - you don't have a way to track everyone who has a copy.
    - your peers might not agree with what "badly" means.

    generally, the answer to "how do i delete a tree" is "you can't", because trees aren't real.

    @mat @julian for something that exists outside your authority, the only thing you can do is refuse to acknowledge it. i can't delete stuff from other people, and other people can't remove stuff from my thread. if they delete something and i don't remove it, then i have a broken link. if they don't delete something and i remove it, then you can't access it unless you discover it some other way. you can navigate from the offending post to the thread, but the thread will not show the offending post

  • @mat @julian if the redaction is coming from the author, they can send a Delete to anywhere they expect to have stored a copy.

    if the redaction is coming from the aggregator, they can send a Remove to anywhere relevant.

    but these are always going to be best-effort, because of 2 main reasons:

    - you don't have a way to track everyone who has a copy.
    - your peers might not agree with what "badly" means.

    generally, the answer to "how do i delete a tree" is "you can't", because trees aren't real.

    @trwnh @julian Yes everything will be best effort. In this situation it's valuable to send a message "please hide the tree under this post", using whatever vocabulary. When it's working, peers will hide posts that the original author never even saw. Perhaps some people will still see parts of the tree, but the fewer the better. "You can't do it perfectly" is importantly different from "you can't".

    The point is, the current situation is ambiguous on a technical level. I send a delete message, but there's no way for a receiver to know my intent: did I want just that post deleted, or the entire tree?

    I absolutely can enforce that all my peers agree on what "badly" means, by defederating from servers that disagree. The predictable problem here is that when I start doing that, everyone's gonna end up in a fight about what the spec means.

    I don't really mind whether the spec says instances SHOULD or MAY hide the reply tree, or if it adds a field to specify one or the other, but it should be explicit. There's a real need here, but if the answer is MAY, then the need should be addressed some other way, such as reply control.

  • @trwnh @julian Yes everything will be best effort. In this situation it's valuable to send a message "please hide the tree under this post", using whatever vocabulary. When it's working, peers will hide posts that the original author never even saw. Perhaps some people will still see parts of the tree, but the fewer the better. "You can't do it perfectly" is importantly different from "you can't".

    The point is, the current situation is ambiguous on a technical level. I send a delete message, but there's no way for a receiver to know my intent: did I want just that post deleted, or the entire tree?

    I absolutely can enforce that all my peers agree on what "badly" means, by defederating from servers that disagree. The predictable problem here is that when I start doing that, everyone's gonna end up in a fight about what the spec means.

    I don't really mind whether the spec says instances SHOULD or MAY hide the reply tree, or if it adds a field to specify one or the other, but it should be explicit. There's a real need here, but if the answer is MAY, then the need should be addressed some other way, such as reply control.

    @mat @julian if the intent is "please hide the tree under this post", then Remove(object=[n posts],target=thread) is the most straightforward way to say that in a single statement: "removed n posts from this thread"

    this is something that isn't currently widely supported, but it should be. the main challenge is that not everyone understands Remove, and not everyone is equipped to handle batches. it can be overcome, but also is a more general issue.

  • @mat @julian if the intent is "please hide the tree under this post", then Remove(object=[n posts],target=thread) is the most straightforward way to say that in a single statement: "removed n posts from this thread"

    this is something that isn't currently widely supported, but it should be. the main challenge is that not everyone understands Remove, and not everyone is equipped to handle batches. it can be overcome, but also is a more general issue.

    @mat @julian i think that "defederate everyone who disagrees" will likely result in isolated clusters of each software only federating with other instances of the same software. maybe friendica and misskey can reach some limited consensus among themselves, but are friendica and misskey admins prepared to defederate every mastodon/pixelfed/pleroma/etc server over this?

  • @mat @julian i think that "defederate everyone who disagrees" will likely result in isolated clusters of each software only federating with other instances of the same software. maybe friendica and misskey can reach some limited consensus among themselves, but are friendica and misskey admins prepared to defederate every mastodon/pixelfed/pleroma/etc server over this?

    @mat @julian one of my... "favorite"... examples of this kind of breakdown is that there is no specified way to remove a follower. if you accept someone's follow, then how do you revert? do you Undo Accept, do you Reject Follow, do you Remove from followers? even when two peers agree on a method (say Reject Follow at any point), they might still fail to agree for other reasons. one nasty bug between misskey and pleroma is that misskey generates ids for Follows that pleroma considers invalid.

  • @mat @julian if the intent is "please hide the tree under this post", then Remove(object=[n posts],target=thread) is the most straightforward way to say that in a single statement: "removed n posts from this thread"

    this is something that isn't currently widely supported, but it should be. the main challenge is that not everyone understands Remove, and not everyone is equipped to handle batches. it can be overcome, but also is a more general issue.

    trwnh@mastodon.social said in Deleting a post vs deleting an entire comment tree:
    > Remove(object=[n posts],target=thread)

    That would indeed be the most explicit, but that isn't needed from threadiverse because that information is already contained when you set object to the context itself.

    It's even resolvable! So there's no need to send your own array of items that might be out of date by the time it is delivered.

    Hence why I advocate for Remove(Context)

  • @julian what does Remove(Context) mean here?

  • @julian what does Remove(Context) mean here?

    trwnh@mastodon.social it signals that the actor is removing the context from the targeted audience.

    The audience can optionally announce it, and receivers synchronizing with that audience (per 1b12) should follow suit and remove the context as well.

  • @julian like removing a whole thread from the forum? Remove(object=thread, target=forum)? this seems like something altogether different than removing posts from a thread.

    removing threads from a forum is possible but if the thread is owned by the forum then the forum can also delete them.

    the part that differs between impls is whether Delete(thing that is a context) should do anything to objects where context = the Delete.object, right? i think it makes the most sense to just orphan them.

  • @julian like removing a whole thread from the forum? Remove(object=thread, target=forum)? this seems like something altogether different than removing posts from a thread.

    removing threads from a forum is possible but if the thread is owned by the forum then the forum can also delete them.

    the part that differs between impls is whether Delete(thing that is a context) should do anything to objects where context = the Delete.object, right? i think it makes the most sense to just orphan them.

    trwnh@mastodon.social specifically however, is that you're not deleting the context. Just removing it.

    NodeBB has the concept of a context not belonging to an audience (the "uncategorized" pseudo category.) in those specific situations, contexts would be removed from the audience, not deleted.

    Lemmy and Piefed don't have these concepts, so they simply delete them. So therein lies some of the confusion I believe.

  • @julian the confusing thing to me, though, is that both Delete and Remove already don't imply anything about posts in the thread if the thread is deleted/removed from the forum.

    by default, if you Delete a thread, the forum might still have a broken link to the now-deleted thread, and the posts also have broken links to the thread.

    by default, if you Remove a thread from the forum, the posts still exist within the thread.

  • @julian the confusing thing to me, though, is that both Delete and Remove already don't imply anything about posts in the thread if the thread is deleted/removed from the forum.

    by default, if you Delete a thread, the forum might still have a broken link to the now-deleted thread, and the posts also have broken links to the thread.

    by default, if you Remove a thread from the forum, the posts still exist within the thread.

    @julian if the intent is to signal what happens when nodebb moves a thread to "uncategorized", then i think the simplest thing is for nodebb to treat "uncategorized" as a forum in itself, still. you already assign them an id of -1, so you are in effect treating the "uncategorized" category as a category still.

  • @julian if the intent is to signal what happens when nodebb moves a thread to "uncategorized", then i think the simplest thing is for nodebb to treat "uncategorized" as a forum in itself, still. you already assign them an id of -1, so you are in effect treating the "uncategorized" category as a category still.

    @julian i'd say the confusion is primarily that we've shifted topic around several different things and i'm still not sure which is the intended topic of the discussion :x

    - deleting posts that are in a thread
    - removing posts from a thread
    - implications for downstream posts in a thread when some ancestor in the reply chain is deleted/removed
    - deleting a thread that is in a forum
    - removing a thread from a forum
    - moving a thread to the "uncategorized" forum
    - ...?


Gli ultimi otto messaggi ricevuti dalla Federazione
  • @reiver i think the disjunction between Object and Link was actually unnecessary. https://github.com/w3c/activitystreams/issues/666

    i also think there's too much emphasis on types when there really shouldn't be -- it's the *properties* that you end up using almost all of the time. pretty much the only types that actually matter are the Activity types (because you can't infer those).

    read more

  • @haitchfive

    I don't think it was me, but — it seems interesting.

    https://github.com/ha1tch/quertfy

    .

    read more

  • @reiver Did you and I discuss queryfy a while ago, or was it one of my other projects?

    Just wondering whether I owe you a heads up since queryfy has been bumped up to v0.3.0

    read more

  • With ActivityPub / ActivityStreams...

    To me, it feels like there should have been something that is a common parent of both 'Object' and 'Link'.

    That just had the "name", "nameMap", and "preview" fields (along with "id" and "type, of course) — since that is what 'Object' and 'Link' share in common.

    I'll just call this common parent: 'Entity'.

    ...

    It could have even been an opportunity to talk about how to handle unknown types.

    read more

  • @soapdog@toot.cafe hmm... just thinking aloud here.

    You posit in another post that the network effects inflate exponentially:

    > Push models are resource hogs that approach exponential growth in a large network like the fediverse

    That's not true. If you post a message then it sends a copy to each follower. That's linear growth. If you collapse recipients via shared inboxes you can reduce that further.

    If you're referring to the torrent of requests that happen if your post is shared (the "thundering herd" problem) then that's actually a PULL happening from those requesting instances!

    Secondly, in a pull model of AP, you would need to continually poll servers of all your followers so as to approach a real-time effect. You'd be polling servers over and over again, and many of them would have nothing new, with so much wasted traffic.

    If your expectations include semi real-time updates, the push model is much more performant, in my humble opinion.

    read more

  • @evan @mariusor @silverpill i think we probably need to revisit the user story of creating multiple objects at once, or more accurately, the user story of minting and binding multiple identifiers at once.

    read more

  • read more

  • @evan @mariusor @silverpill re: ids though the RDF ecosystem (and jsonld) doesn't use "null", it uses blank node identifiers (those prefixed with _: are special cased by the prefix expansion algorithm). this can allow for "transient" activities or "anonymous" objects (and the graph data model auto assigns _:b1, _:b2 and so on when "id" is missing; the canonicalization algorithm assigns _:c14n0 and _:c14n1 and so on)

    this is maybe not the best way to create replies collections though...

    read more
Post suggeriti
  • 0 Votes
    4 Posts
    19 Views
    We're not currently doing anything around spam because it's not really a specification issue. There has been a few projects in this space, but when I've tested them they've left a lot to be desired. I can't remember specific names off top of head now though because it's been at least 6 months since I did that reaearch
  • 0 Votes
    1 Posts
    12 Views
    Hello FediverseIf everything works out according to plan, when I hit publish on this post it will show up in the #Fediverse. After a year of on-and-off attempts, to implement #ActivityPub on this website, with no success, I have hopefully cracked it! Well, when I say “I have hopefully cracked it,” what I mean is @pfefferle@mastodon.social and the #WordPress “open office hours” program, have cracked it. It turns out; if you have a problem with the WordPress ActivityPub plugin, the best thing to do is disable other plugins and, though a process of elimination, see if one of them is the issue. So big thanks to Mathias and WordPress for your help on this.Now this is working and I am broadcasting out into the Fediverse, I feel like I should modify my content a little to appeal to all of you woke, leftists, godless, communists 🙂 out there. For a while I was far too smitten with the every little #Sustainability initiative, every little carbon reduction program, and every other bit of  #GreenWashing that was put out there by brands. Full confession I actually believed that ElonMusk wanted to save the planet! Yeh I know, I was naive…While I do continue to applaud any actions that a corporation takes, that materially helps either people or planet, it’s clear that problems are systemic. We need corporations to shift from Shareholder Primacy to Stakeholder Capitalism, valuing environmental and social impact alongside profit. Or try someting completely different. Right now, if there is a more sustainable or ethical brand choice to be had, we should always take it, but we must understand, that we are not “saving the planet” with those choices, just minimising our impact. Nebula TV channel, Our Changing Climate,  has this excellent video on the subject of Ethical Consumerism.It turns out, that whoever first pointed out “Corporations are Psychopaths” was mostly correct – How a corporation is designed to function, putting shareholders before people and planet, is psychopathic behaviour. (Psychopathic behaviour includes a lack of empathy and remorse, superficial charm, manipulation, and a disregard for social norms and the rights of others.) The only solution is to rewrite corporate charters and incorporation acts and include specific legal provisions that mandate environmental and social responsibility, shifting the core purpose of business beyond mere profit maximisation. Ultimately Corporations and their leaders are never going to fully act in the best interests of people and planet, because that’s not what they were created to do.So the plan, for 2026, is to be posting more content here that challenges both brands and the whole system. To shine a light on the negative impacts to people and planet that brands are having. And to share more content about organisations and companies working on regeneration and decarbonisation.Please follow and share your thoughts and ideas below.#activitypub #branding #corporations #fediverse #sustaiability #sustainability #wordpress
  • 0 Votes
    1 Posts
    12 Views
    #nextcloud and #syncthing and #deltachat are the real revolutionary technologies of recent. I guess #activitypub too
  • 0 Votes
    2 Posts
    17 Views
    Super stoked that Mastodon is rolling this out after many months of testing. That even a modicum of effort was put in to address the social failings of quote posting (as implemented on X/Twitter) is already a huge win for online public discourse.