Skip to content
0
  • Home
  • Piero Bosio
  • Blog
  • World
  • Fediverso
  • News
  • Categories
  • Old Web Site
  • Recent
  • Popular
  • Tags
  • Users
  • Home
  • Piero Bosio
  • Blog
  • World
  • Fediverso
  • News
  • Categories
  • Old Web Site
  • Recent
  • Popular
  • Tags
  • Users
Skins
  • Light
  • Brite
  • 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

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. Categories
  3. ActivityPub Protocol
  4. FEP-4f05: Soft Deletion

FEP-4f05: Soft Deletion

Scheduled Pinned Locked Moved ActivityPub Protocol
25 Posts 9 Posters 0 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.
  • julian@activitypub.spaceundefined This user is from outside of this forum
    julian@activitypub.spaceundefined This user is from outside of this forum
    julian@activitypub.space
    wrote on last edited by
    #16

    @claire@social.sitedethib.com I re-read the text of the FEP and noted the following:

    > When a Delete activity is encountered, the referenced object MAY be either the full object or a reference to one.
    >
    > If object is a reference, the server MUST request the object (via its id) from the origin server directly.

    Emphasis is mine. In situations where you choose to embed the full object in the activity, then you are not bound by the MUST to refetch the object.

    Now, when talking about hard deletes, you cannot literally embed a non-existent object, so a re-fetch would be necessary, although I am hoping that 404 handlers are a great deal faster.

    I like published. I can add that in to the FEP if it makes it easier to handle situations where multiple Deletes and Updates are encountered out-of-rder due to network congestion, parallel processing, etc.

    1 Reply Last reply
    0
    • claire@socialhub.activitypub.rocksundefined This user is from outside of this forum
      claire@socialhub.activitypub.rocksundefined This user is from outside of this forum
      claire@socialhub.activitypub.rocks
      wrote on last edited by
      #17

      \xsd:dateTime\ is required as per https://www.w3.org/TR/activitystreams-vocabulary/#dfn-published but i skimmed over the definition too fast, it definitely allows fractional seconds!

      julian2:

      Emphasis is mine. In situations where you choose to embed the full object in the activity, then you are not bound by the MUST to refetch the object.

      It appears I must have read too fast once again, and was confused by the “Unexpected responses” section.

      julian2:

      Now, when talking about hard deletes, you cannot literally embed a non-existent object, so a re-fetch would be necessary, although I am hoping that 404 handlers are a great deal faster.

      That can still be an issue, negative hits are still expensive and in general you may not want to cache them (to avoid an attacker targeting something that does not exist yet).

      1 Reply Last reply
      0
      • trwnh@socialhub.activitypub.rocksundefined This user is from outside of this forum
        trwnh@socialhub.activitypub.rocksundefined This user is from outside of this forum
        trwnh@socialhub.activitypub.rocks
        wrote on last edited by
        #18
        julian2:

        If object is a reference, the server MUST request the object (via its id) from the origin server directly.

        i think this requirement can be removed, as the behavior on receiving a Delete is up to the receiver and not the sender. that's also where the issue lies -- receivers assuming Delete is a permanent removal. any or all of the following behaviors on receiving a Delete are "valid" in some sense:

        • do nothing to the object, just store the activity
        • expunge object from HTTP cache
        • expunge object from AS2/RDF dataset
        • edit the object to say it is "deleted"
        • convert object to a Tombstone
        • prevent reuse of the object.id
        • fetch the object using HTTP GET and handle caching/refetching using HTTP cache control headers

        having a reference doesn't imply needing to fetch it if you already have information about it. if you don't already have information about it then you can also choose not to fetch on Delete activities. the point of having an id is that you can choose whether or not to obtain additional information! that's what linked data is founded on -- the linking. every link is in effect a boundary between two records of information.

        if the goal is to prevent receivers from completely purging an object, then you can't really do this. if the goal is to stop receivers from preventing reuse of the id, then recommend that they SHOULD NOT do this.

        more generally i would ask you to consider two different senses of "deletion":

        • Delete / Undo Delete
        • Update(object.formerType=object.type, object.type=Tombstone) / Update(object.type=object.formerType)

        a Tombstone is still an Object and can have all the properties of Object btw, so it's valid to have this:

        type: TombstoneformerType: Notecontent: "[deleted]"attributedTo: 

        or this:

        type: TombstoneformerType: Notecontent: "the text is still there but the account was deleted"attributedTo: type: Tombstone formerType: Person

        or this:

        type: TombstoneformerType: Notecontent: "the text is still there but the account was deleted"attributedTo: # GET someone HTTP/1.1# HTTP/1.1 404 Not Found
        julian@activitypub.spaceundefined 1 Reply Last reply
        0
        • trwnh@socialhub.activitypub.rocksundefined trwnh@socialhub.activitypub.rocks
          julian2:

          If object is a reference, the server MUST request the object (via its id) from the origin server directly.

          i think this requirement can be removed, as the behavior on receiving a Delete is up to the receiver and not the sender. that's also where the issue lies -- receivers assuming Delete is a permanent removal. any or all of the following behaviors on receiving a Delete are "valid" in some sense:

          • do nothing to the object, just store the activity
          • expunge object from HTTP cache
          • expunge object from AS2/RDF dataset
          • edit the object to say it is "deleted"
          • convert object to a Tombstone
          • prevent reuse of the object.id
          • fetch the object using HTTP GET and handle caching/refetching using HTTP cache control headers

          having a reference doesn't imply needing to fetch it if you already have information about it. if you don't already have information about it then you can also choose not to fetch on Delete activities. the point of having an id is that you can choose whether or not to obtain additional information! that's what linked data is founded on -- the linking. every link is in effect a boundary between two records of information.

          if the goal is to prevent receivers from completely purging an object, then you can't really do this. if the goal is to stop receivers from preventing reuse of the id, then recommend that they SHOULD NOT do this.

          more generally i would ask you to consider two different senses of "deletion":

          • Delete / Undo Delete
          • Update(object.formerType=object.type, object.type=Tombstone) / Update(object.type=object.formerType)

          a Tombstone is still an Object and can have all the properties of Object btw, so it's valid to have this:

          type: TombstoneformerType: Notecontent: "[deleted]"attributedTo: 

          or this:

          type: TombstoneformerType: Notecontent: "the text is still there but the account was deleted"attributedTo: type: Tombstone formerType: Person

          or this:

          type: TombstoneformerType: Notecontent: "the text is still there but the account was deleted"attributedTo: # GET someone HTTP/1.1# HTTP/1.1 404 Not Found
          julian@activitypub.spaceundefined This user is from outside of this forum
          julian@activitypub.spaceundefined This user is from outside of this forum
          julian@activitypub.space
          wrote last edited by julian@activitypub.space
          #19

          Okay, I am perfectly fine to relax the requirement from a MUST to a SHOULD.

          Does that resolve the thundering herd concern acceptably?

          Other solutions would entail:

          1. Setting explicit null as object (yes @trwnh@mastodon.social this is yet another example of a place where null makes sense!) if the object is hard deleted.
          2. Sending an ETag header with the Delete activity. When re-requesting, send that same value in If-Modified-Since and the receiver can opt to terminate execution early with an HTTP 304.
          1 Reply Last reply
          0
          • trwnh@mastodon.socialundefined This user is from outside of this forum
            trwnh@mastodon.socialundefined This user is from outside of this forum
            trwnh@mastodon.social
            wrote last edited by
            #20

            @julian how does null have anything to do with this? Delete null doesn't make sense

            julian@activitypub.spaceundefined 1 Reply Last reply
            0
            • trwnh@mastodon.socialundefined trwnh@mastodon.social

              @julian how does null have anything to do with this? Delete null doesn't make sense

              julian@activitypub.spaceundefined This user is from outside of this forum
              julian@activitypub.spaceundefined This user is from outside of this forum
              julian@activitypub.space
              wrote last edited by
              #21

              @trwnh@mastodon.social hm, you're right. I should stop thinking about FEPs after business hours.

              1 Reply Last reply
              0
              • trwnh@mastodon.socialundefined This user is from outside of this forum
                trwnh@mastodon.socialundefined This user is from outside of this forum
                trwnh@mastodon.social
                wrote last edited by
                #22

                @julian unrelated but i am also wondering why the mention changed from my socialhub account to my mastodon account 🤔

                julian@activitypub.spaceundefined 1 Reply Last reply
                0
                • trwnh@mastodon.socialundefined trwnh@mastodon.social

                  @julian unrelated but i am also wondering why the mention changed from my socialhub account to my mastodon account 🤔

                  julian@activitypub.spaceundefined This user is from outside of this forum
                  julian@activitypub.spaceundefined This user is from outside of this forum
                  julian@activitypub.space
                  wrote last edited by
                  #23

                  @trwnh@mastodon.social no particular reason, except I think mentions to SocialHun accounts don't work?

                  1 Reply Last reply
                  0
                  • trwnh@mastodon.socialundefined This user is from outside of this forum
                    trwnh@mastodon.socialundefined This user is from outside of this forum
                    trwnh@mastodon.social
                    wrote last edited by
                    #24

                    @julian :weary:

                    i can't keep doing replies in less than 500 characters lmao

                    julian@activitypub.spaceundefined 1 Reply Last reply
                    0
                    • trwnh@mastodon.socialundefined trwnh@mastodon.social

                      @julian :weary:

                      i can't keep doing replies in less than 500 characters lmao

                      julian@activitypub.spaceundefined This user is from outside of this forum
                      julian@activitypub.spaceundefined This user is from outside of this forum
                      julian@activitypub.space
                      wrote last edited by
                      #25

                      @trwnh@mastodon.social I forked this thread out into a new thread (so I don't think it'll keep showing up on SocialHub, but who the heck knows when federation is concerned lol)

                      As for 500 chars, perhaps it's high time you switched to an instance with looser character limits...

                      Except your content wouldn't migrate over wonk wonk

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


                      Feed RSS
                      FEP-4f05: Soft Deletion

                      Gli ultimi otto messaggi ricevuti dalla Federazione
                      • julian@activitypub.spaceundefined
                        julian@activitypub.space

                        @trwnh@mastodon.social I forked this thread out into a new thread (so I don't think it'll keep showing up on SocialHub, but who the heck knows when federation is concerned lol)

                        As for 500 chars, perhaps it's high time you switched to an instance with looser character limits...

                        Except your content wouldn't migrate over wonk wonk

                        read more

                      • trwnh@mastodon.socialundefined
                        trwnh@mastodon.social

                        @julian :weary:

                        i can't keep doing replies in less than 500 characters lmao

                        read more

                      • julian@activitypub.spaceundefined
                        julian@activitypub.space

                        @trwnh@mastodon.social no particular reason, except I think mentions to SocialHun accounts don't work?

                        read more

                      • trwnh@mastodon.socialundefined
                        trwnh@mastodon.social

                        @julian unrelated but i am also wondering why the mention changed from my socialhub account to my mastodon account 🤔

                        read more

                      • julian@activitypub.spaceundefined
                        julian@activitypub.space

                        @trwnh@mastodon.social hm, you're right. I should stop thinking about FEPs after business hours.

                        read more

                      • trwnh@mastodon.socialundefined
                        trwnh@mastodon.social

                        @julian how does null have anything to do with this? Delete null doesn't make sense

                        read more

                      • julian@activitypub.spaceundefined
                        julian@activitypub.space

                        Okay, I am perfectly fine to relax the requirement from a MUST to a SHOULD.

                        Does that resolve the thundering herd concern acceptably?

                        Other solutions would entail:

                        Setting explicit null as object (yes @trwnh@mastodon.social this is yet another example of a place where null makes sense!) if the object is hard deleted. Sending an ETag header with the Delete activity. When re-requesting, send that same value in If-Modified-Since and the receiver can opt to terminate execution early with an HTTP 304.
                        read more

                      • trwnh@socialhub.activitypub.rocksundefined
                        trwnh@socialhub.activitypub.rocks
                        julian2:

                        If object is a reference, the server MUST request the object (via its id) from the origin server directly.

                        i think this requirement can be removed, as the behavior on receiving a Delete is up to the receiver and not the sender. that's also where the issue lies -- receivers assuming Delete is a permanent removal. any or all of the following behaviors on receiving a Delete are "valid" in some sense:

                        do nothing to the object, just store the activityexpunge object from HTTP cacheexpunge object from AS2/RDF datasetedit the object to say it is "deleted"convert object to a Tombstoneprevent reuse of the object.idfetch the object using HTTP GET and handle caching/refetching using HTTP cache control headers

                        having a reference doesn't imply needing to fetch it if you already have information about it. if you don't already have information about it then you can also choose not to fetch on Delete activities. the point of having an id is that you can choose whether or not to obtain additional information! that's what linked data is founded on -- the linking. every link is in effect a boundary between two records of information.

                        if the goal is to prevent receivers from completely purging an object, then you can't really do this. if the goal is to stop receivers from preventing reuse of the id, then recommend that they SHOULD NOT do this.

                        more generally i would ask you to consider two different senses of "deletion":

                        Delete / Undo DeleteUpdate(object.formerType=object.type, object.type=Tombstone) / Update(object.type=object.formerType)

                        a Tombstone is still an Object and can have all the properties of Object btw, so it's valid to have this:

                        type: TombstoneformerType: Notecontent: "[deleted]"attributedTo:

                        or this:

                        type: TombstoneformerType: Notecontent: "the text is still there but the account was deleted"attributedTo: type: Tombstone formerType: Person

                        or this:

                        type: TombstoneformerType: Notecontent: "the text is still there but the account was deleted"attributedTo: # GET someone HTTP/1.1# HTTP/1.1 404 Not Found
                        read more
                      @pierobosio@soc.bosio.info
                      Running NodeBB v4.7.2 Contributors
                      Post suggeriti
                      • Login

                      • Login or register to search.
                      • First post
                        Last post