Citiverse
  • trwnh@mastodon.socialT
    63
    0

    @julian @rimu @nutomic @silverpill well, you typically have no authority over "children", so you can't actually delete them. you can treat them as deleted locally (equivalent to garbage collection for orphan references), but as far as the outside world is concerned, you just deleted one object.

    i think people should be more aware that orphaned references can and will happen. i'd personally leave them be. link rot is a thing, and those links aren't necessarily invalid, they're just stale.

  • trwnh@mastodon.socialT
    63
    0

    @julian @rimu @nutomic @silverpill put another way, there is no difference between a link that doesn't resolve because the resource was deleted and a link that doesn't resolve because the server was down or a link that doesn't resolve because you don't have authorization to see it. it's just a link that doesn't resolve, as far as you're concerned.

    the same thing applies to moderation, not just deletion. a direct link might resolve, but the link is omitted from a curated view.

    Link Preview Image
  • trwnh@mastodon.socialT
    63
    0

    @julian @rimu @nutomic @silverpill essentially the difference between the two actions only exists internally, not externally.

    whether to use a Delete or a Remove is a separate issue of semantics and authority.

    whether to use an array of objects is a separate issue of batching and partial failure. semantically, there is no issue. "john deleted 10 posts" makes sense as a statement.

  • julian@activitypub.spaceJ
    159
    0

    trwnh@mastodon.social nobody's deleting anything. We're only dealing with removing content.

    (Which I now realize I worded incorrectly in OP, heh)

    That it's a Delete is incidental (and unfortunate wording)

  • trwnh@mastodon.socialT
    63
    0

    @julian you used the word Delete throughout, so i used the same word. either way, you might consider a policy of treating a context deletion as orphaning all items in the context and then you can optionally garbage-collect them. or not. it's up to you, really!

  • julian@activitypub.spaceJ
    159
    0

    trwnh@mastodon.social yes that's the point. I can't enforce behaviour from anyone but we can signal intent.

    That's all this discussion is about. Whether we should Remove(Context) or Delete(Object)+with_replies.

  • trwnh@mastodon.socialT
    63
    0

    @julian with_replies doesn't make sense, but neither does Remove(Context). if the intent is to signal "we locally cleared our cache" then i'm not sure that's relevant to anyone else?

  • mariusor@metalhead.clubM
    30
    0

    @trwnh I'm not sure how much time you spent thinking about this, but I have and I *do* think that it makes sense, thank you for your input. Also it does not violate any constraints in the specification, though if you know of one I'd love to hear it.

    The advantage of having all ancestors there is that the object can be disseminated to all the instances in that list, and be added to all the replies collections of its ancestors. As such when you retrieve any of those ancestor replies collections you have the full thread from their point downwards and you don't need to fetch other replies collections up the chain.

    @julian @helge

  • trwnh@mastodon.socialT
    63
    0

    @mariusor @julian @helge i'm saying you should define an "ancestors" property for this instead of misusing "inReplyTo". if i am responding to specific posts, i am not necessarily responding to something 20 recursive replies upward.

  • mariusor@metalhead.clubM
    30
    0

    @trwnh ok, that's a valid opinion to have, but I disagree with it, and as long as you can't offer me a specification quote which contradicts my point of view "misuse" is just like your opinion, man.

    Also, please stop reply guying every time I offer my input to somebody else.

    @julian @helge

  • trwnh@mastodon.socialT
    63
    0

    @mariusor @julian @helge i got here via a discussion on activitypub.space, not via your profile.

    in any case, per https://www.w3.org/TR/activitystreams-vocabulary/#dfn-inreplyto

    > Indicates one or more entities for which this object is considered a response.

    if A says something and B responds to what A said, then C responds to what B said, it is not universally true that C is always responding to A as well.

    A: What's your favorite pie?
    B: I like apple pie.
    😄 Hey B, wanna try my apple pie this weekend?

    C is not a response to A.

  • mariusor@metalhead.clubM
    30
    0

    @trwnh I dislike to have to get into the semantics of what "a reply" is, but from my point of view the definition matches any downstream element in a discussion. Why? Because in a discussion context matters, both on a comprehension level and on the pragmatic ActivityPub level, as we can see from the work the threadiverse does. So yes, it's not an immediate reply to its ancestors but it is in the "reply chain" of its ancestors, and that is sufficient for me.

    If your worry is about how to deal with this programmatically, check JWZ's message threading algorithm, which gives good solutions even with multiple ancestors.

    @julian @helge

  • mariusor@metalhead.clubM
    30
    0

    @trwnh an example
    for threading based on multiple elements for inReplyTo (using vanilla JavaScript): https://git.sr.ht/~mariusor/oni/tree/master/item/src/js/items-threading.js

    This is my last contribution to this discussion, with apologies for the spamming to all that have been dragged into it inadvertently.

    @julian @helge

  • trwnh@mastodon.socialT
    63
    0

    @mariusor @julian @helge

    i'd rather have an actual context for tracking context. from the point of view of being understood, if you said "What's your favorite pie?" and i said "Julian is invited to my house this weekend", then this is a non sequitur.

    a real example of multi-reply:

    inReplyTo: [
    - AT&T tells the FTC it is a common carrier and the FTC has no jurisdiction
    - AT&T tells the FCC that it is not a common carrier and is not subject to net neutrality
    ]
    content: AT&T is doublespeaking

  • mat@friendica.exon.nameM
    2
    0
    @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.
  • trwnh@mastodon.socialT
    63
    0

    @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.

  • trwnh@mastodon.socialT
    63
    0

    @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@mastodon.socialT
    63
    0

    @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@friendica.exon.nameM
    2
    0

    @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@mastodon.socialT
    63
    0

    @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.


Citiverse è un progetto che si basa su NodeBB ed è federato! | Categorie federate | Chat | 📱 Installa web app o APK | 🧡 Donazioni | Privacy Policy

Il server utilizzato è quello di Webdock, in Danimarca. Se volete provarlo potete ottenere il 20% di sconto con questo link e noi riceveremo un aiuto sotto forma di credito da usare proprio per mantenere Citiverse.