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. General Discussion
  3. Why did #ActivityPub create special behaviors such as Like, Announce and Block (and the Undo variants) instead of using Add to or Remove from the associated Collection objects?

Why did #ActivityPub create special behaviors such as Like, Announce and Block (and the Undo variants) instead of using Add to or Remove from the associated Collection objects?

Scheduled Pinned Locked Moved General Discussion
activitypub
33 Posts 8 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.
  • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

    @eyeinthesky @smallcircles because the activity isn't just about the change of the collection, but also notifying the other party our social intention. It could have required Like + Add, but that feels cumbersome and developers love side-effects.

    eyeinthesky@mastodon.socialE This user is from outside of this forum
    eyeinthesky@mastodon.socialE This user is from outside of this forum
    eyeinthesky@mastodon.social
    wrote last edited by
    #4

    @thisismissem @smallcircles I know feelings will vary, but it doesn’t feel cumbersome to me. It seems more logically consistent and less functionally redundant. Side-effects can still be defined for specific target collections. What do you recommend for extension collection management?

    thisismissem@hachyderm.ioT 1 Reply Last reply
    0
    • eyeinthesky@mastodon.socialE eyeinthesky@mastodon.social

      @thisismissem @smallcircles I know feelings will vary, but it doesn’t feel cumbersome to me. It seems more logically consistent and less functionally redundant. Side-effects can still be defined for specific target collections. What do you recommend for extension collection management?

      thisismissem@hachyderm.ioT This user is from outside of this forum
      thisismissem@hachyderm.ioT This user is from outside of this forum
      thisismissem@hachyderm.io
      wrote last edited by
      #5

      @eyeinthesky @smallcircles yeah, there's those that like side-effects and those that dislike side-effects. Both are valid, AP just chose side effects.

      I'm not sure I understand your question

      eyeinthesky@mastodon.socialE 1 Reply Last reply
      0
      • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

        @eyeinthesky @smallcircles yeah, there's those that like side-effects and those that dislike side-effects. Both are valid, AP just chose side effects.

        I'm not sure I understand your question

        eyeinthesky@mastodon.socialE This user is from outside of this forum
        eyeinthesky@mastodon.socialE This user is from outside of this forum
        eyeinthesky@mastodon.social
        wrote last edited by
        #6

        @thisismissem @smallcircles If I define an extension that uses a collection, should I define a special activity for managing the collection instead of using Add/Remove?

        thisismissem@hachyderm.ioT 1 Reply Last reply
        0
        • eyeinthesky@mastodon.socialE eyeinthesky@mastodon.social

          @thisismissem @smallcircles If I define an extension that uses a collection, should I define a special activity for managing the collection instead of using Add/Remove?

          thisismissem@hachyderm.ioT This user is from outside of this forum
          thisismissem@hachyderm.ioT This user is from outside of this forum
          thisismissem@hachyderm.io
          wrote last edited by
          #7

          @eyeinthesky @smallcircles you could, but you don't necessarily have to. Depends if adding to that collection has a social action besides the add I think.

          Say I have a boops collection which contains actors I've booped. I could have a Boop activity with a side effect (because I want them to know I've booped them), or I could not, and just notify them that I added their Actor to this Collection.

          1 Reply Last reply
          0
          • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

            @eyeinthesky @smallcircles because the activity isn't just about the change of the collection, but also notifying the other party our social intention. It could have required Like + Add, but that feels cumbersome and developers love side-effects.

            eyeinthesky@mastodon.socialE This user is from outside of this forum
            eyeinthesky@mastodon.socialE This user is from outside of this forum
            eyeinthesky@mastodon.social
            wrote last edited by
            #8

            @thisismissem @smallcircles The weird thing about Like+side_effects vs Add(Like activity to “likes collections”) is that the side effect is Add Like to “likes collection”. lol They are both one inbox activity.

            thisismissem@hachyderm.ioT trwnh@mastodon.socialT 2 Replies Last reply
            0
            • eyeinthesky@mastodon.socialE eyeinthesky@mastodon.social

              @thisismissem @smallcircles The weird thing about Like+side_effects vs Add(Like activity to “likes collections”) is that the side effect is Add Like to “likes collection”. lol They are both one inbox activity.

              thisismissem@hachyderm.ioT This user is from outside of this forum
              thisismissem@hachyderm.ioT This user is from outside of this forum
              thisismissem@hachyderm.io
              wrote last edited by
              #9

              @eyeinthesky @smallcircles that's the thing though! The likes collection doesn't contain activities, it contains objects.

              thisismissem@hachyderm.ioT eyeinthesky@mastodon.socialE trwnh@mastodon.socialT 3 Replies Last reply
              0
              • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

                @eyeinthesky @smallcircles that's the thing though! The likes collection doesn't contain activities, it contains objects.

                thisismissem@hachyderm.ioT This user is from outside of this forum
                thisismissem@hachyderm.ioT This user is from outside of this forum
                thisismissem@hachyderm.io
                wrote last edited by
                #10

                @eyeinthesky @smallcircles and how do I infer social meaning from you adding an object to a collection? I could only do that if I was adding an activity to a collection

                thisismissem@hachyderm.ioT eyeinthesky@mastodon.socialE 2 Replies Last reply
                0
                • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

                  @eyeinthesky @smallcircles and how do I infer social meaning from you adding an object to a collection? I could only do that if I was adding an activity to a collection

                  thisismissem@hachyderm.ioT This user is from outside of this forum
                  thisismissem@hachyderm.ioT This user is from outside of this forum
                  thisismissem@hachyderm.io
                  wrote last edited by
                  #11

                  @eyeinthesky @smallcircles (funnily enough, in AT Protocol, we only have collections we add records to, all the social layer is defined by applications above, which receive all the changes to records and infer meaning from that)

                  smallcircles@social.coopS 1 Reply Last reply
                  0
                  • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

                    @eyeinthesky @smallcircles and how do I infer social meaning from you adding an object to a collection? I could only do that if I was adding an activity to a collection

                    eyeinthesky@mastodon.socialE This user is from outside of this forum
                    eyeinthesky@mastodon.socialE This user is from outside of this forum
                    eyeinthesky@mastodon.social
                    wrote last edited by
                    #12

                    @thisismissem @smallcircles I’m not sure how you define “social meaning”, but if you Add a Boop to my boops collection you socially booped me. I suppose a Boop activity is needed either way, but overloading the meaning to include implicit collection management seems dubious to me.

                    thisismissem@hachyderm.ioT 1 Reply Last reply
                    0
                    • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

                      @eyeinthesky @smallcircles that's the thing though! The likes collection doesn't contain activities, it contains objects.

                      eyeinthesky@mastodon.socialE This user is from outside of this forum
                      eyeinthesky@mastodon.socialE This user is from outside of this forum
                      eyeinthesky@mastodon.social
                      wrote last edited by
                      #13

                      @thisismissem @smallcircles Per the AP spec… “The side effect of receiving this in an inbox is that the server SHOULD increment the object's count of likes by adding the received **activity** to the likes collection if this collection is present.” (emphasis mine)

                      thisismissem@hachyderm.ioT 1 Reply Last reply
                      0
                      • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

                        @eyeinthesky @smallcircles (funnily enough, in AT Protocol, we only have collections we add records to, all the social layer is defined by applications above, which receive all the changes to records and infer meaning from that)

                        smallcircles@social.coopS This user is from outside of this forum
                        smallcircles@social.coopS This user is from outside of this forum
                        smallcircles@social.coop
                        wrote last edited by
                        #14

                        @thisismissem @eyeinthesky

                        I just responded in the other thread about #ForgeFed way of dealing with Issues and PR's, emphasizing the actor model in the #ActivityPub specs.

                        Guess it depends on the nature of your extension and its desired functionality how you model things, but ForgeFed chose to have a dedicated actor, a TicketTracker, to manage the collection. Big advantage is that it become a truly encapsulated service with its own business logic, fronted by an AP actor for interoperable network communication.

                        🫧 socialcoding.. (@smallcircles@social.coop)

                        @thisismissem@hachyderm.io @deadsuperhero@social.wedistribute.org I was looking at #ForgeFed which is a very sizable #ActivityPub extension (constituting the "Code forge" app domain in app-centric view, but arguably "Software development" top-level business domain in a service-oriented fedi). The way that things are modeled here adheres more to the actor model where there's a Factory actor, which in turn creates resource actors that expose various sub-domains. For instance for the management of Issues and PR's there's a TicketTracker actor to obtain via a Factory actor on a forge instance. Though I'm not sure whether I'd modeled that in similar fashion, it is a fascinating direction where we focus much more on good protocol extension design. All in all AS/AP offers a very granular foundation that allows for very interesting architectures, if only we dare explore them and do not dogmatically stick to some engrained notion how "social media" ought to be. I see #SocialMedia as but a small subset of #SocialNetworking.

                        favicon

                        social.coop (social.coop)

                        thisismissem@hachyderm.ioT 1 Reply Last reply
                        0
                        • eyeinthesky@mastodon.socialE eyeinthesky@mastodon.social

                          @thisismissem @smallcircles I’m not sure how you define “social meaning”, but if you Add a Boop to my boops collection you socially booped me. I suppose a Boop activity is needed either way, but overloading the meaning to include implicit collection management seems dubious to me.

                          thisismissem@hachyderm.ioT This user is from outside of this forum
                          thisismissem@hachyderm.ioT This user is from outside of this forum
                          thisismissem@hachyderm.io
                          wrote last edited by
                          #15

                          @eyeinthesky @smallcircles yeah, and this is a side effect of the activity (e.g., Like) adding to both my likes collection and the likes collection on your post.

                          So would my add be targeting two collections with an Activity?

                          What about Announce? That's add to my outbox, add to my boosts collection, and add to your post's boost collection.

                          1 Reply Last reply
                          0
                          • eyeinthesky@mastodon.socialE eyeinthesky@mastodon.social

                            @thisismissem @smallcircles Per the AP spec… “The side effect of receiving this in an inbox is that the server SHOULD increment the object's count of likes by adding the received **activity** to the likes collection if this collection is present.” (emphasis mine)

                            thisismissem@hachyderm.ioT This user is from outside of this forum
                            thisismissem@hachyderm.ioT This user is from outside of this forum
                            thisismissem@hachyderm.io
                            wrote last edited by
                            #16

                            @eyeinthesky @smallcircles I suspect this is incorrect. I am pretty sure the likes collection contains only objects, not the activities.

                            @evan was there an erratum for this? I feel like there was?

                            eyeinthesky@mastodon.socialE 1 Reply Last reply
                            0
                            • smallcircles@social.coopS smallcircles@social.coop

                              @thisismissem @eyeinthesky

                              I just responded in the other thread about #ForgeFed way of dealing with Issues and PR's, emphasizing the actor model in the #ActivityPub specs.

                              Guess it depends on the nature of your extension and its desired functionality how you model things, but ForgeFed chose to have a dedicated actor, a TicketTracker, to manage the collection. Big advantage is that it become a truly encapsulated service with its own business logic, fronted by an AP actor for interoperable network communication.

                              🫧 socialcoding.. (@smallcircles@social.coop)

                              @thisismissem@hachyderm.io @deadsuperhero@social.wedistribute.org I was looking at #ForgeFed which is a very sizable #ActivityPub extension (constituting the "Code forge" app domain in app-centric view, but arguably "Software development" top-level business domain in a service-oriented fedi). The way that things are modeled here adheres more to the actor model where there's a Factory actor, which in turn creates resource actors that expose various sub-domains. For instance for the management of Issues and PR's there's a TicketTracker actor to obtain via a Factory actor on a forge instance. Though I'm not sure whether I'd modeled that in similar fashion, it is a fascinating direction where we focus much more on good protocol extension design. All in all AS/AP offers a very granular foundation that allows for very interesting architectures, if only we dare explore them and do not dogmatically stick to some engrained notion how "social media" ought to be. I see #SocialMedia as but a small subset of #SocialNetworking.

                              favicon

                              social.coop (social.coop)

                              thisismissem@hachyderm.ioT This user is from outside of this forum
                              thisismissem@hachyderm.ioT This user is from outside of this forum
                              thisismissem@hachyderm.io
                              wrote last edited by
                              #17

                              @smallcircles @eyeinthesky yeah, making everything an Actor is certainly a choice, and you could do that

                              smallcircles@social.coopS 1 Reply Last reply
                              0
                              • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

                                @eyeinthesky @smallcircles I suspect this is incorrect. I am pretty sure the likes collection contains only objects, not the activities.

                                @evan was there an erratum for this? I feel like there was?

                                eyeinthesky@mastodon.socialE This user is from outside of this forum
                                eyeinthesky@mastodon.socialE This user is from outside of this forum
                                eyeinthesky@mastodon.social
                                wrote last edited by
                                #18

                                @thisismissem @smallcircles @evan It makes sense to me. Someone liked a local object. We wouldn’t add the liked object to the liked object “likes” collection (it would be the same object). It seems that only the activity (and collection count) is interesting. Maybe you are thinking about the “liked” collection? (Different topic, but it seems that this *should* be a collection of activities too. Dropping the activity loses info such as the Like timestamp.)

                                1 Reply Last reply
                                0
                                • thisismissem@hachyderm.ioT thisismissem@hachyderm.io

                                  @smallcircles @eyeinthesky yeah, making everything an Actor is certainly a choice, and you could do that

                                  smallcircles@social.coopS This user is from outside of this forum
                                  smallcircles@social.coopS This user is from outside of this forum
                                  smallcircles@social.coop
                                  wrote last edited by
                                  #19

                                  @thisismissem @eyeinthesky

                                  I think we underrated the power of the actor model and the extent we can incorporate it on the #ActivityPub fediverse. Somehow we got eternally stuck in talking about HTTP plumbing and core protocol capabilities that we never fleshed out thoroughly in order to be able to just focus on the higher-level concerns of app and service modeling.

                                  Actor systems based on loosely-coupled event-driven architecture, delegation, supervision, supervision strategies, inbox strategies, let-it-fail, actors fronting domain aggregates, service-orientation, etc.

                                  smallcircles@social.coopS 1 Reply Last reply
                                  0
                                  • smallcircles@social.coopS smallcircles@social.coop

                                    @thisismissem @eyeinthesky

                                    I think we underrated the power of the actor model and the extent we can incorporate it on the #ActivityPub fediverse. Somehow we got eternally stuck in talking about HTTP plumbing and core protocol capabilities that we never fleshed out thoroughly in order to be able to just focus on the higher-level concerns of app and service modeling.

                                    Actor systems based on loosely-coupled event-driven architecture, delegation, supervision, supervision strategies, inbox strategies, let-it-fail, actors fronting domain aggregates, service-orientation, etc.

                                    smallcircles@social.coopS This user is from outside of this forum
                                    smallcircles@social.coopS This user is from outside of this forum
                                    smallcircles@social.coop
                                    wrote last edited by
                                    #20

                                    @thisismissem @eyeinthesky

                                    The biggest folly imho is this idea of "let's cram every domain into #ActivityStreams somehow". Flatten everything and project it onto this small set of social primitives that AS defines.

                                    It is once more a choice of pragmatism: "Hey, I've seen it working with Mastodon, so I copied that. And #LinkedData extension mechanism is a handwaved horror show".

                                    So understandable perhaps that we did it. But now we must overcome this trend which has taken stubborn root and drags the ecosystem down.

                                    thisismissem@hachyderm.ioT 1 Reply Last reply
                                    0
                                    • eyeinthesky@mastodon.socialE eyeinthesky@mastodon.social

                                      Why did #ActivityPub create special behaviors such as Like, Announce and Block (and the Undo variants) instead of using Add to or Remove from the associated Collection objects? I have a similar question for outbox and inbox POST, which is an implicit Add to those collections. When adding support for extended collections, is an new collection-specific Activity preferred over Add/Remove? FWIW, I see Mastodon uses Add/Remove for pinned and featured posts.

                                      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 last edited by
                                      #21

                                      @eyeinthesky I think Add / Remove should be used for extended collections. Like, Announce etc look like legacy / tech debt to me.

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

                                        @eyeinthesky I think Add / Remove should be used for extended collections. Like, Announce etc look like legacy / tech debt to me.

                                        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 last edited by
                                        #22

                                        @silverpill@mitra.social add and remove feel more like building blocks than actual activities.

                                        It would never capture the nuance of many of the activities that it would purportedly represent.

                                        silverpill@mitra.socialS eyeinthesky@mastodon.socialE 2 Replies Last reply
                                        0
                                        • julian@activitypub.spaceJ julian@activitypub.space

                                          @silverpill@mitra.social add and remove feel more like building blocks than actual activities.

                                          It would never capture the nuance of many of the activities that it would purportedly represent.

                                          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 last edited by
                                          #23

                                          @julian @thisismissem @eyeinthesky @mariusor @smallcircles

                                          Yes, they are building blocks, together with Create, Update and Delete. Everything else can be constructed from them.

                                          silverpill@mitra.socialS 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