Salta al contenuto
0
  • Home
  • Piero Bosio
  • Blog
  • Mondo
  • Fediverso
  • News
  • Categorie
  • Old Web Site
  • Recenti
  • Popolare
  • Tag
  • Utenti
  • Home
  • Piero Bosio
  • Blog
  • Mondo
  • Fediverso
  • News
  • Categorie
  • Old Web Site
  • Recenti
  • Popolare
  • Tag
  • Utenti
Skin
  • Chiaro
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Scuro
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Predefinito (Cerulean)
  • Nessuna skin
Collassa

Piero Bosio Social Web Site Personale Logo Fediverso

Social Forum federato con il resto del mondo. Non contano le istanze, contano le persone
  1. Home
  2. Categorie
  3. Technical Discussion
  4. Deleting a post vs deleting an entire comment tree

Deleting a post vs deleting an entire comment tree

Pianificato Fissato Bloccato Spostato Technical Discussion
deletionthreadiverseactivitypub
65 Post 15 Autori 126 Visualizzazioni
  • Da Vecchi a Nuovi
  • Da Nuovi a Vecchi
  • Più Voti
Rispondi
  • Risposta alla discussione
Effettua l'accesso per rispondere
Questa discussione è stata eliminata. Solo gli utenti con diritti di gestione possono vederla.
  • julian@activitypub.spaceundefined Questo utente è esterno a questo forum
    julian@activitypub.spaceundefined Questo utente è esterno a questo forum
    julian@activitypub.space
    scritto su ultima modifica di
    #1

    For context:

    • Two big threadiverse implementors (and probably mbin) currently federate Announce(Delete(Object)) for deletion of content — all synchronized communities follow suit and delete the content as well.
    • If that object is the root-level node, and it is deleted, everything below it is also deleted.
    • Lemmy and Piefed are investigating the possibility of changing this behaviour so that the action deletes the object itself only, and the reply tree stays.

    We're in the middle of discussing how best to communicate this. With Delete(Object) behaviour shifting to deleting the single object only, there are two options to delete the entire tree/thread:

    1. Delete(Object) with a new property with_replies or similar
    2. Remove(Context), where Context is a new url that refers to the entire tree

    Thoughts? We're discussing this tomorrow at ForumWG but it'd be nice to get some eyes on it beforehand.

    cc rimu@piefed.social nutomic@lemmy.ml melroy@kbin.melroy.org bentigorlich@gehirneimer.de

    1 Risposta Ultima Risposta
    3
    • thisismissem@activitypub.spaceundefined Questo utente è esterno a questo forum
      thisismissem@activitypub.spaceundefined Questo utente è esterno a questo forum
      thisismissem@activitypub.space
      scritto su ultima modifica di
      #2

      What if instead of doing the Announce, the requestor of the object did a like Subscribe? i.e., "I've had this object federated to me (either by user-lookup or boost from another server), you don't know I know about this object, so I'd like to inform you so that you can send me updates on this object in the future"

      1 Risposta Ultima Risposta
      1
      • thisismissem@activitypub.spaceundefined Questo utente è esterno a questo forum
        thisismissem@activitypub.spaceundefined Questo utente è esterno a questo forum
        thisismissem@activitypub.space
        scritto su ultima modifica di
        #3

        julian said in Deleting a post vs deleting an entire comment tree:
        > If that object is the root-level node, and it is deleted, everything below it is also deleted.

        Why would everything below be deleted? Would it not simply become orphaned?

        1 Risposta Ultima Risposta
        1
        • jdp23@neuromatch.socialundefined Questo utente è esterno a questo forum
          jdp23@neuromatch.socialundefined Questo utente è esterno a questo forum
          jdp23@neuromatch.social
          scritto su ultima modifica di
          #4

          On most forums (and forum-inspired social networks like the old tribe.net or Facebook groups), the first post represents the root of the thread, so when you delete it it deletes the entire thread.

          Misskey and *key forks are like this too. Ask me how I know! loslob.

          @thisismissem

          1 Risposta Ultima Risposta
          0
          • flamingos@feddit.ukundefined Questo utente è esterno a questo forum
            flamingos@feddit.ukundefined Questo utente è esterno a questo forum
            flamingos@feddit.uk
            scritto su ultima modifica di
            #5

            I've got a PR for removing an entire comment thread for Lemmy mostly ready, I just need to write the tests and decide on how this exact problem should work, so the timing is honestly impeccable. The things I've been debating between are:

            1. Same as option 1, a new property like removeChildren;
            2. Make the target of the Delete an array. I'm honestly 50/50 on whether this is actually spec compliant, it's not clear to me that it isn't;
            3. Just sending out an individual Delete for every Object. I like this option the least, but it is very easy to implement and needs no changes in other software to work.
            rimu@piefed.socialundefined nutomic@lemmy.mlundefined 2 Risposte Ultima Risposta
            0
            • flamingos@feddit.ukundefined flamingos@feddit.uk

              I've got a PR for removing an entire comment thread for Lemmy mostly ready, I just need to write the tests and decide on how this exact problem should work, so the timing is honestly impeccable. The things I've been debating between are:

              1. Same as option 1, a new property like removeChildren;
              2. Make the target of the Delete an array. I'm honestly 50/50 on whether this is actually spec compliant, it's not clear to me that it isn't;
              3. Just sending out an individual Delete for every Object. I like this option the least, but it is very easy to implement and needs no changes in other software to work.
              rimu@piefed.socialundefined Questo utente è esterno a questo forum
              rimu@piefed.socialundefined Questo utente è esterno a questo forum
              rimu@piefed.social
              scritto su ultima modifica di
              #6

              Either of those first two sound fine.

              1 Risposta Ultima Risposta
              0
              • tofeo@mstdn.socialundefined Questo utente è esterno a questo forum
                tofeo@mstdn.socialundefined Questo utente è esterno a questo forum
                tofeo@mstdn.social
                scritto su ultima modifica di
                #7

                @julian @rimu @nutomic @melroy @BentiGorlich

                #hubzilla and #friendica had always have the discussion tree

                jupiter_rowland@hub.netzgemeinde.euundefined 1 Risposta Ultima Risposta
                0
                • helge@mymath.rocksundefined Questo utente è esterno a questo forum
                  helge@mymath.rocksundefined Questo utente è esterno a questo forum
                  helge@mymath.rocks
                  scritto su ultima modifica di
                  #8

                  Can you clarify a bit what this means?

                  I'm imaging the following scenario, i.e. Given gherkin steps,

                  • Alice on her own server Abel.
                  • Bob on the forum server Forum.
                  • Alice created a post in a category of Forum. Let's call it "1000 reasons to hug cows". id http://abel.example/alice/post.
                  • Bob, a million other trolls, replies with "To tip them over! lol!". Bob's post has id http://forum.example/bob/post/id.

                  The When block is simple. Alice deletes her post, it's a root post (with lots of stupid replies). This means a Delete activity is send for the object with http://abel.example/alice/post.

                  Now, what does this imply? Obviously, we have "The forum sends an Announce(Delete).". But do we also have:

                  • The forum sends a Delete(http://forum.example/bob/post/id) as Bob?
                  • The forum sends a Announce(Delete(http://forum.example/bob/post/id)) as the forum?

                  How does the forum handle posts not made by its users? It obviously cannot delete them! So is there like an Undo(Announce(Create(Object))) or a Remove(Object)?

                  1 Risposta Ultima Risposta
                  0
                  • mariusor@metalhead.clubundefined Questo utente è esterno a questo forum
                    mariusor@metalhead.clubundefined Questo utente è esterno a questo forum
                    mariusor@metalhead.club
                    scritto su ultima modifica di
                    #9

                    @thisismissem not even orphaned, a delete leaves behind a tombstone object which should still be dereferenceable from anywhere else.

                    thisismissem@activitypub.spaceundefined 1 Risposta Ultima Risposta
                    1
                    • mariusor@metalhead.clubundefined Questo utente è esterno a questo forum
                      mariusor@metalhead.clubundefined Questo utente è esterno a questo forum
                      mariusor@metalhead.club
                      scritto su ultima modifica di
                      #10

                      @julian @rimu @nutomic @melroy @BentiGorlich

                      I'm still confused that so many people have thought that using Announce as a solution for something which is at its core, an addressing problem is a good way to do it.

                      I guess I might not be aware of some subtleties, but why doesn't the original Delete reach all the interested parties? Why is there a need for Announce-ing it in the first place?

                      nutomic@lemmy.mlundefined 1 Risposta Ultima Risposta
                      0
                      • mariusor@metalhead.clubundefined mariusor@metalhead.club

                        @julian @rimu @nutomic @melroy @BentiGorlich

                        I'm still confused that so many people have thought that using Announce as a solution for something which is at its core, an addressing problem is a good way to do it.

                        I guess I might not be aware of some subtleties, but why doesn't the original Delete reach all the interested parties? Why is there a need for Announce-ing it in the first place?

                        nutomic@lemmy.mlundefined Questo utente è esterno a questo forum
                        nutomic@lemmy.mlundefined Questo utente è esterno a questo forum
                        nutomic@lemmy.ml
                        scritto su ultima modifica di
                        #11

                        Lets say you have a user on instance alpha, and a community on instance beta, with followers on various other instances. The user makes a post in the community, but how can he know who the community followers are to send it directly to them? And how could the followers trust that an activity sent directly was actually approved by the community?

                        Another solution for this would be inbox forwarding, but by now its too late to change the behaviour of all existing platforms.

                        mariusor@metalhead.clubundefined 1 Risposta Ultima Risposta
                        0
                        • nutomic@lemmy.mlundefined Questo utente è esterno a questo forum
                          nutomic@lemmy.mlundefined Questo utente è esterno a questo forum
                          nutomic@lemmy.ml
                          scritto su ultima modifica di
                          #12

                          If that object is the root-level node, and it is deleted, everything below it is also deleted.

                          This is not exactly true. When Lemmy receives Delete/Object for a (top level) post, it only marks the post itself as deleted. The replies are not marked as deleted in the database, but are (currently) hidden in the UI. For 1.0 this behaviour is already changed in the API and UI so that deleted posts are removed from listings, but accessible by direct link so that comments can be viewed. This doesnt involve any change to federation and is an implementation detail.

                          Adding a new activity type for each such implementation detail is not feasible, and we cannot support all of them. So to maximize compatibility you should definitely keep using Delete(Object), and add a new property if you need to be explicit about it.

                          1 Risposta Ultima Risposta
                          1
                          • flamingos@feddit.ukundefined flamingos@feddit.uk

                            I've got a PR for removing an entire comment thread for Lemmy mostly ready, I just need to write the tests and decide on how this exact problem should work, so the timing is honestly impeccable. The things I've been debating between are:

                            1. Same as option 1, a new property like removeChildren;
                            2. Make the target of the Delete an array. I'm honestly 50/50 on whether this is actually spec compliant, it's not clear to me that it isn't;
                            3. Just sending out an individual Delete for every Object. I like this option the least, but it is very easy to implement and needs no changes in other software to work.
                            nutomic@lemmy.mlundefined Questo utente è esterno a questo forum
                            nutomic@lemmy.mlundefined Questo utente è esterno a questo forum
                            nutomic@lemmy.ml
                            scritto su ultima modifica di
                            #13

                            This is slightly different from OP as you are talking about deleting a reply (ie Note) with children, while OP is about deleting a top-level post with children. Nevertheless both can be represented in the same way over federation.

                            Just sending out an individual Delete for every Object. I like this option the least, but it is very easy to implement and needs no changes in other software to work.

                            This would be terrible for performance when removing dozens or hundreds of comments at once. Rule of thumb should be one activity for one user action.

                            Make the target of the Delete an array. I’m honestly 50/50 on whether this is actually spec compliant, it’s not clear to me that it isn’t;

                            The problem with this is that some platforms might get the idea to delete multiple unrelated comments with a single activity, or even comments in different posts. Handling that would make the receiving logic unnecessarily complicated, and would also make it complicated to combine the modlog entries.

                            Same as option 1, a new property like removeChildren;

                            This is the simplest and best option.

                            thisismissem@hachyderm.ioundefined julian@activitypub.spaceundefined 2 Risposte Ultima Risposta
                            0
                            • nutomic@lemmy.mlundefined nutomic@lemmy.ml

                              This is slightly different from OP as you are talking about deleting a reply (ie Note) with children, while OP is about deleting a top-level post with children. Nevertheless both can be represented in the same way over federation.

                              Just sending out an individual Delete for every Object. I like this option the least, but it is very easy to implement and needs no changes in other software to work.

                              This would be terrible for performance when removing dozens or hundreds of comments at once. Rule of thumb should be one activity for one user action.

                              Make the target of the Delete an array. I’m honestly 50/50 on whether this is actually spec compliant, it’s not clear to me that it isn’t;

                              The problem with this is that some platforms might get the idea to delete multiple unrelated comments with a single activity, or even comments in different posts. Handling that would make the receiving logic unnecessarily complicated, and would also make it complicated to combine the modlog entries.

                              Same as option 1, a new property like removeChildren;

                              This is the simplest and best option.

                              thisismissem@hachyderm.ioundefined Questo utente è esterno a questo forum
                              thisismissem@hachyderm.ioundefined Questo utente è esterno a questo forum
                              thisismissem@hachyderm.io
                              scritto su ultima modifica di
                              #14

                              @nutomic > Make the target of the Delete an array

                              It technically is because of JSON-LD (everything can be an array), however, software may not support it because it's pretty common for devs to treat AP as JSON instead of JSON-LD, so doing an assessment of compatibility would be suggested

                              trwnh@mastodon.socialundefined 1 Risposta Ultima Risposta
                              1
                              • tofeo@mstdn.socialundefined tofeo@mstdn.social

                                @julian @rimu @nutomic @melroy @BentiGorlich

                                #hubzilla and #friendica had always have the discussion tree

                                jupiter_rowland@hub.netzgemeinde.euundefined Questo utente è esterno a questo forum
                                jupiter_rowland@hub.netzgemeinde.euundefined Questo utente è esterno a questo forum
                                jupiter_rowland@hub.netzgemeinde.eu
                                scritto su ultima modifica di
                                #15
                                @tofeo  :verified: @julian ...where "always" means "since before there was even Mastodon".

                                A side-effect of their model, present at least on Hubzilla and Hubzilla's descendants, including still existing (streams) and Forte, is that comments/replies cannot exist in a stream without a) a parent and b) a start post. On all of them, including Friendica, it isn't a post if it replies to something, very much unlike Mastodon where a thread is a bunch of posts.

                                Depending on whom you ask, a conversation looks either like this:
                                • Post
                                  • Comment
                                    • Comment
                                      • Comment
                                  • Comment
                                    • Comment
                                      • Comment
                                or like this:
                                1 Risposta Ultima Risposta
                                0
                                • nutomic@lemmy.mlundefined nutomic@lemmy.ml

                                  Lets say you have a user on instance alpha, and a community on instance beta, with followers on various other instances. The user makes a post in the community, but how can he know who the community followers are to send it directly to them? And how could the followers trust that an activity sent directly was actually approved by the community?

                                  Another solution for this would be inbox forwarding, but by now its too late to change the behaviour of all existing platforms.

                                  mariusor@metalhead.clubundefined Questo utente è esterno a questo forum
                                  mariusor@metalhead.clubundefined Questo utente è esterno a questo forum
                                  mariusor@metalhead.club
                                  scritto su ultima modifica di
                                  #16

                                  @nutomic I solved this by having an the instance be an actor that is an intermediary for all operations. All activities get CC'ed to the followers of the user actor, and of the instance actor. (replace instance with community/group, whatever you use as an aggregate element for your implementation)

                                  This should cover all interested parties imho.

                                  The potential downside is that instances need to explicitly operate between themselves with follow operations (which conveniently also solves the problem of unwanted interactions with less savory corners of the fediverse).

                                  Like I said, a problem of addressing. :P

                                  mariusor@metalhead.clubundefined nutomic@lemmy.mlundefined 2 Risposte Ultima Risposta
                                  0
                                  • mariusor@metalhead.clubundefined mariusor@metalhead.club

                                    @nutomic I solved this by having an the instance be an actor that is an intermediary for all operations. All activities get CC'ed to the followers of the user actor, and of the instance actor. (replace instance with community/group, whatever you use as an aggregate element for your implementation)

                                    This should cover all interested parties imho.

                                    The potential downside is that instances need to explicitly operate between themselves with follow operations (which conveniently also solves the problem of unwanted interactions with less savory corners of the fediverse).

                                    Like I said, a problem of addressing. :P

                                    mariusor@metalhead.clubundefined Questo utente è esterno a questo forum
                                    mariusor@metalhead.clubundefined Questo utente è esterno a questo forum
                                    mariusor@metalhead.club
                                    scritto su ultima modifica di
                                    #17

                                    @nutomic I realize this explanation probably skips a lot of information that's clear to me from my context, but I'll try to answer if anyone has any questions.

                                    1 Risposta Ultima Risposta
                                    0
                                    • mariusor@metalhead.clubundefined mariusor@metalhead.club

                                      @thisismissem not even orphaned, a delete leaves behind a tombstone object which should still be dereferenceable from anywhere else.

                                      thisismissem@activitypub.spaceundefined Questo utente è esterno a questo forum
                                      thisismissem@activitypub.spaceundefined Questo utente è esterno a questo forum
                                      thisismissem@activitypub.space
                                      scritto su ultima modifica di
                                      #18

                                      mariusor@metalhead.club that works too!

                                      1 Risposta Ultima Risposta
                                      0
                                      • julian@activitypub.spaceundefined Questo utente è esterno a questo forum
                                        julian@activitypub.spaceundefined Questo utente è esterno a questo forum
                                        julian@activitypub.space
                                        scritto su ultima modifica di
                                        #19

                                        thisismissem seems I misspoke, as Nutomic's reply above clarifies: the tree stays but is effectively orphaned. Lemmy v1.0 will allow the reply tree to be accessed post-deletion.

                                        The original query does still remain the same: what would be the best way forward to explicitly signal the deletion (or technically, the removal) of an entire reply tree?

                                        cc jdp23@neuromatch.social mariusor@metalhead.club

                                        1 Risposta Ultima Risposta
                                        0
                                        • mariusor@metalhead.clubundefined Questo utente è esterno a questo forum
                                          mariusor@metalhead.clubundefined Questo utente è esterno a questo forum
                                          mariusor@metalhead.club
                                          scritto su ultima modifica di
                                          #20

                                          @julian @jdp23 well, a Delete can be operated on an array of objects. :D

                                          Send one with all the objects that are affected from the local instance (and probably you must keep in mind that not all replies might be).

                                          julian@activitypub.spaceundefined 1 Risposta Ultima Risposta
                                          0

                                          Ciao! Sembra che tu sia interessato a questa conversazione, ma non hai ancora un account.

                                          Stanco di dover scorrere gli stessi post a ogni visita? Quando registri un account, tornerai sempre esattamente dove eri rimasto e potrai scegliere di essere avvisato delle nuove risposte (tramite email o notifica push). Potrai anche salvare segnalibri e votare i post per mostrare il tuo apprezzamento agli altri membri della comunità.

                                          Con il tuo contributo, questo post potrebbe essere ancora migliore 💗

                                          Registrati Accedi
                                          Rispondi
                                          • Risposta alla discussione
                                          Effettua l'accesso per rispondere
                                          • Da Vecchi a Nuovi
                                          • Da Nuovi a Vecchi
                                          • Più Voti


                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          Feed RSS
                                          Deleting a post vs deleting an entire comment tree
                                          @pierobosio@soc.bosio.info
                                          V4.10.1 Contributors
                                          • Accedi

                                          • Accedi o registrati per effettuare la ricerca.
                                          • Primo post
                                            Ultimo post