Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
We Distribute
  1. Home
  2. Technical Discussion
  3. Topic removal from a category/community

Topic removal from a category/community

Scheduled Pinned Locked Moved Technical Discussion
piefed
30 Posts 5 Posters 1.3k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • rimu@piefed.socialR This user is from outside of this forum
    rimu@piefed.socialR This user is from outside of this forum
    rimu@piefed.social
    wrote on last edited by
    #16

    Looks like for Mastodon we just do a bare Delete.

    julian@community.nodebb.orgJ 1 Reply Last reply
    0
    • rimu@piefed.socialR rimu@piefed.social

      Looks like for Mastodon we just do a bare Delete.

      julian@community.nodebb.orgJ This user is from outside of this forum
      julian@community.nodebb.orgJ This user is from outside of this forum
      julian@community.nodebb.org
      wrote on last edited by julian@community.nodebb.org
      #17

      rimu@piefed.social got it, thanks. How do you reconcile the Delete coming from outside your domain? I would figure Mastodon would drop those Deletes.

      Edit: that was confusing wording... I mean — how do you sign a Delete for an object that doesn't belong to your instance?

      1 Reply Last reply
      0
      • rimu@piefed.socialR This user is from outside of this forum
        rimu@piefed.socialR This user is from outside of this forum
        rimu@piefed.social
        wrote on last edited by
        #18

        We only federate the deletion if it is in one of our local communities.

        The activity is signed by the person who did it, so if Mastodon detects that the person deleting is not the author and doesn't know how to find out if someone is a moderator or not, that's their problem.

        Mastodon has been dropping the ball on groups support for years so I didn't even bother to find out if they handle it well - I bet they don't.

        silverpill@mitra.socialS 1 Reply Last reply
        0
        • rimu@piefed.socialR rimu@piefed.social

          We only federate the deletion if it is in one of our local communities.

          The activity is signed by the person who did it, so if Mastodon detects that the person deleting is not the author and doesn't know how to find out if someone is a moderator or not, that's their problem.

          Mastodon has been dropping the ball on groups support for years so I didn't even bother to find out if they handle it well - I bet they don't.

          silverpill@mitra.socialS This user is from outside of this forum
          silverpill@mitra.socialS This user is from outside of this forum
          silverpill@mitra.social
          wrote on last edited by
          #19

          @rimu

          so if Mastodon detects that the person deleting is not the author and doesn’t know how to find out if someone is a moderator or not, that’s their problem.

          It is not their problem. If your actor Deletes an object that is owned by a different server, then your implementation of ActivityPub standard is incorrect:

          Link Preview Image
          ActivityPub

          The ActivityPub protocol is a decentralized social networking protocol based upon the [ActivityStreams] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.

          favicon

          (www.w3.org)

          The side effect of receiving this is that (assuming the object is owned by the sending actor / server) the server receiving the delete activity SHOULD remove its representation of the object with the same id

          @julian

          julian@community.nodebb.orgJ 1 Reply Last reply
          0
          • silverpill@mitra.socialS silverpill@mitra.social

            @rimu

            so if Mastodon detects that the person deleting is not the author and doesn’t know how to find out if someone is a moderator or not, that’s their problem.

            It is not their problem. If your actor Deletes an object that is owned by a different server, then your implementation of ActivityPub standard is incorrect:

            Link Preview Image
            ActivityPub

            The ActivityPub protocol is a decentralized social networking protocol based upon the [ActivityStreams] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.

            favicon

            (www.w3.org)

            The side effect of receiving this is that (assuming the object is owned by the sending actor / server) the server receiving the delete activity SHOULD remove its representation of the object with the same id

            @julian

            julian@community.nodebb.orgJ This user is from outside of this forum
            julian@community.nodebb.orgJ This user is from outside of this forum
            julian@community.nodebb.org
            wrote on last edited by
            #20

            I think Announce(Delete(Object)) skirts around that, though. Maybe not if you're being technical about it, but the shape of the activity is different enough to mean something else in 1b12-land:

            • A community/group-actor announced a Delete
            • The object may or may not belong to the same domain as the community/group-actor or Delete actor
            • Verify that the community/group-actor and Delete actor are same-origin (might not need this if cross-instance moderation is a thing)
            • Verify that the Delete actor is a moderator of the community/group-actor as per 1b12
            1 Reply Last reply
            0
            • silverpill@mitra.socialS This user is from outside of this forum
              silverpill@mitra.socialS This user is from outside of this forum
              silverpill@mitra.social
              wrote on last edited by
              #21

              @julian @rimu No, when one object is embedded in another, it doesn't change its behavior. A Delete activity wrapped in Announce doesn't mean something else, it exists as an independent object that can be fetched by its id.

              The invalid Delete activity worked for Lemmy only because they didn't care about federation with non-forum software. But it can't work in the multi-app network without ugly hacks like checking remote server's NodeInfo.

              julian@activitypub.spaceJ 1 Reply Last reply
              0
              • silverpill@mitra.socialS silverpill@mitra.social

                @julian @rimu No, when one object is embedded in another, it doesn't change its behavior. A Delete activity wrapped in Announce doesn't mean something else, it exists as an independent object that can be fetched by its id.

                The invalid Delete activity worked for Lemmy only because they didn't care about federation with non-forum software. But it can't work in the multi-app network without ugly hacks like checking remote server's NodeInfo.

                julian@activitypub.spaceJ This user is from outside of this forum
                julian@activitypub.spaceJ This user is from outside of this forum
                julian@activitypub.space
                wrote on last edited by
                #22

                Perhaps resolvable contexts can be a solution for this then.

                I have been implementing topic deletion logic in NodeBB, and while I can send out Announce(Delete(Object)) where Object is the root-level post, it occasionally would send out Deletes where the sender is not the owner of the object. This is the 1b12-speaking logic.

                In 7888-speaking logic, Object would be the local context collection. A receiver would be able to resolve the context URL to the appropriate local representation and delete it as needed. This would also satisfy the "sender needs to own the object" constraint.

                1 Reply Last reply
                0
                • julian@activitypub.spaceJ This user is from outside of this forum
                  julian@activitypub.spaceJ This user is from outside of this forum
                  julian@activitypub.space
                  wrote on last edited by
                  #23

                  Hey rimu@piefed.social, I sent over this activity but I wasn't able to make crust delete that representation.

                  {
                    "id": "https://bb.devnull.land/post/2#activity/announce/delete/1759851369554",
                    "type": "Announce",
                    "actor": "https://bb.devnull.land/category/2",
                    "to": [
                      "https://www.w3.org/ns/activitystreams#Public"
                    ],
                    "cc": [
                      "https://bb.devnull.land/category/2/followers"
                    ],
                    "object": {
                      "id": "https://bb.devnull.land/topic/2#activity/delete/1759851369554",
                      "type": "Delete",
                      "actor": "https://bb.devnull.land/uid/1",
                      "to": [
                        "https://www.w3.org/ns/activitystreams#Public"
                      ],
                      "cc": [
                        "https://bb.devnull.land/category/2/followers"
                      ],
                      "origin": "https://bb.devnull.land/category/2",
                      "object": "https://bb.devnull.land/post/2"
                    }
                  }
                  

                  Am I missing something?

                  1 Reply Last reply
                  0
                  • silverpill@mitra.socialS This user is from outside of this forum
                    silverpill@mitra.socialS This user is from outside of this forum
                    silverpill@mitra.social
                    wrote on last edited by
                    #24

                    @julian

                    Delete(Context)? This is very unusual because other collections are not created or deleted, they are server-generated views.

                    I assume this problem arises when you create a topic for a remote post? Perhaps deletion of such topics shouldn't be federated?

                    Or you can generate

                    Announce(Remove(object: root, target: Context))
                    

                    It would be valid from the authorization point of view.

                    julian@community.nodebb.orgJ 1 Reply Last reply
                    0
                    • silverpill@mitra.socialS silverpill@mitra.social

                      @julian

                      Delete(Context)? This is very unusual because other collections are not created or deleted, they are server-generated views.

                      I assume this problem arises when you create a topic for a remote post? Perhaps deletion of such topics shouldn't be federated?

                      Or you can generate

                      Announce(Remove(object: root, target: Context))
                      

                      It would be valid from the authorization point of view.

                      julian@community.nodebb.orgJ This user is from outside of this forum
                      julian@community.nodebb.orgJ This user is from outside of this forum
                      julian@community.nodebb.org
                      wrote on last edited by julian@community.nodebb.org
                      #25

                      Well, the whole idea behind them being resolvable is so that when they are acted upon (by the context owner), they can be queried.

                      For example if I receive a Delete(Context), I'll resolve it to find the root level post, and from there find my local representation, and delete it, assuming the actor was allowed to delete it.

                      They're only server generated views per current usage... but why do they have to be constrained to that usage?

                      1 Reply Last reply
                      0
                      • silverpill@mitra.socialS This user is from outside of this forum
                        silverpill@mitra.socialS This user is from outside of this forum
                        silverpill@mitra.social
                        wrote on last edited by
                        #26

                        @julian Client generated collections are impractical. Collections are dynamic by nature, they can be paginated, filtered.
                        That's why there is no Create(Collection), Update(Collection) and Delete(Collection).

                        1 Reply Last reply
                        0
                        • julian@activitypub.spaceJ This user is from outside of this forum
                          julian@activitypub.spaceJ This user is from outside of this forum
                          julian@activitypub.space
                          wrote on last edited by
                          #27

                          rimu@piefed.social I think it might have been ignored because I don't serve a moderator collection as per 1b12.

                          I'll try to get that set up this week and test again 🙈

                          1 Reply Last reply
                          0
                          • rimu@piefed.socialR This user is from outside of this forum
                            rimu@piefed.socialR This user is from outside of this forum
                            rimu@piefed.social
                            wrote on last edited by
                            #28

                            Try doing a bare delete (no announce wrapper), with the actor being the moderator who deleted the post.

                            Federation

                            favicon

                            (join-lemmy.org)

                            julian@activitypub.spaceJ 1 Reply Last reply
                            0
                            • rimu@piefed.socialR rimu@piefed.social

                              Try doing a bare delete (no announce wrapper), with the actor being the moderator who deleted the post.

                              Federation

                              favicon

                              (join-lemmy.org)

                              julian@activitypub.spaceJ This user is from outside of this forum
                              julian@activitypub.spaceJ This user is from outside of this forum
                              julian@activitypub.space
                              wrote on last edited by
                              #29

                              Thanks Rimu. Will give this a shot.

                              Upon reflection, since Deletes aren't wrapped in an Announce, then I would recommend that any Move activity we use not be wrapped in Announce either.

                              1 Reply Last reply
                              0
                              • rimu@piefed.socialR This user is from outside of this forum
                                rimu@piefed.socialR This user is from outside of this forum
                                rimu@piefed.social
                                wrote on last edited by
                                #30

                                Yes I'm fine with that. It doesn't make much difference in the end.

                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                Powered by NodeBB Contributors
                                • First post
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • World
                                • Users
                                • Groups