Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
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

NodeBB

  1. Home
  2. General Discussion
  3. Recently, there was a discussion about generic #ActivityPub servers.

Recently, there was a discussion about generic #ActivityPub servers.

Scheduled Pinned Locked Moved General Discussion
activitypubfepc2s
27 Posts 7 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.
  • 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
    #21

    @silverpill @raphael @julian @mariusor

    Yes, I agree. Though I would rather see a generic server having much less functionality than a Mastodon API exposes, since much of that is app-specific, Microblogging domain already. The generic server should make Mastodon possible as a solution design modeled on top of its #ActivityPub networking layer.

    In such a way where we can finally consider the protocol layer to be robust, and are able to treat it as a black box, and are not confronted with all its implementation details when we are doing a solution design.

    I think we are probably on the same page, but..

    > If you want to go beyond Mastodon API capabilities, you need a truly generic server. Something akin to Nostr relay.

    This I would reformulate as:

    "If you want to go beyond an app-centric fediverse bound to a Microblogging domain, then you need a generic server conformant to the ActivityPub specification."

    Which also indicates I think we need to aggregate puzzle pieces into an AP 2.0

    smallcircles@social.coopS 1 Reply Last reply
    1
    0
    • silverpill@mitra.socialS silverpill@mitra.social

      @raphael

      what Vocata did

      This project is often brought up as an example of a generic server, but it never reached production stage. The last commit was in 2023.

      It is one thing to have an idea and build a prototype, and a completely different thing to build an application that is secure and interoperates with the rest of the network.

      @mariusor

      trwnh@mastodon.socialT This user is from outside of this forum
      trwnh@mastodon.socialT This user is from outside of this forum
      trwnh@mastodon.social
      wrote last edited by
      #22

      @silverpill @raphael @mariusor

      > neither is it an interesting concept

      > interoperates with the rest of the network

      look, we clearly have different goals here. your goal is to interoperate with the mastodon network. my goal is to publish activities to my website. mastodon doesn't even support all the activities defined in AS2-Vocab. a generic server supports *any* activity, even those not defined by AS2. the network i want to interoperate with isn't mastodon, it's the web.

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

        @silverpill @raphael @julian @mariusor

        Yes, I agree. Though I would rather see a generic server having much less functionality than a Mastodon API exposes, since much of that is app-specific, Microblogging domain already. The generic server should make Mastodon possible as a solution design modeled on top of its #ActivityPub networking layer.

        In such a way where we can finally consider the protocol layer to be robust, and are able to treat it as a black box, and are not confronted with all its implementation details when we are doing a solution design.

        I think we are probably on the same page, but..

        > If you want to go beyond Mastodon API capabilities, you need a truly generic server. Something akin to Nostr relay.

        This I would reformulate as:

        "If you want to go beyond an app-centric fediverse bound to a Microblogging domain, then you need a generic server conformant to the ActivityPub specification."

        Which also indicates I think we need to aggregate puzzle pieces into an AP 2.0

        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
        #23

        @silverpill @raphael @julian @mariusor

        Btw, damn we should've caused this entire discussion thread to somehow flow to #SocialHub to have it in the archives. Instead of on "now you see me, now you don't" channel. Peekaboo. 🫣

        https://social.coop/@smallcircles/116141469199837056

        Here today, gone tomorrow, who made notes? The post-facto interoperability leaders did. Those who happened to be around at the right time to hear things being said on the grapevine.

        We need a proper Grassroots standardization process, and a Grassroots open standard that is able to healthily evolve. The good organization of this is just as important as the technical robustness of the protocol, which is the solution artifact at the end of the open standards cocreation pipeline.

        1 Reply Last reply
        0
        • benpate@mastodon.socialB benpate@mastodon.social

          @silverpill @mariusor @trwnh

          I e*love* this idea- especially in principle. I say that because I’m having a hard time wrapping my head around this and how it would be used in practice.

          Do you think you could post an example workflow (or three) to demonstrate how this would work?

          I get that objects could be added to client-defined collections (very cool) but if object/collection IDs don’t have predefined semantics, how will I know where to look to get the data I need?

          trwnh@mastodon.socialT This user is from outside of this forum
          trwnh@mastodon.socialT This user is from outside of this forum
          trwnh@mastodon.social
          wrote last edited by
          #24

          @benpate @silverpill @mariusor none of the IDs should have any semantics; from the outside, there is no distinction between a client managed or server managed collection. likes/shares/etc could be managed by a "client" like mastodon, or even a "default" one. it's not any more complex unless you want to vary the collection responses based on the request headers. for that you need a minimal dynamic layer with an access control policy of some sort. (WAC is the simplest, but ACP is more powerful)

          trwnh@mastodon.socialT 1 Reply Last reply
          0
          • trwnh@mastodon.socialT trwnh@mastodon.social

            @benpate @silverpill @mariusor none of the IDs should have any semantics; from the outside, there is no distinction between a client managed or server managed collection. likes/shares/etc could be managed by a "client" like mastodon, or even a "default" one. it's not any more complex unless you want to vary the collection responses based on the request headers. for that you need a minimal dynamic layer with an access control policy of some sort. (WAC is the simplest, but ACP is more powerful)

            trwnh@mastodon.socialT This user is from outside of this forum
            trwnh@mastodon.socialT This user is from outside of this forum
            trwnh@mastodon.social
            wrote last edited by
            #25

            @benpate @silverpill in a client managed followers collection i would Add you to my followers just like fedi instances currently do silently. "but how can you prove--" yes exactly, how can current fedi prove anyone is a follower either? you need the Follow+Accept pair to both be live without an Undo on either, right? and that's what leads to the "follow state machine" on fedi that drifts out of sync and leads to private posts being leaked to removed followers (which you can't officially do!)

            1 Reply Last reply
            0
            • benpate@mastodon.socialB benpate@mastodon.social

              @silverpill @mariusor @trwnh

              I e*love* this idea- especially in principle. I say that because I’m having a hard time wrapping my head around this and how it would be used in practice.

              Do you think you could post an example workflow (or three) to demonstrate how this would work?

              I get that objects could be added to client-defined collections (very cool) but if object/collection IDs don’t have predefined semantics, how will I know where to look to get the data I need?

              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
              #26

              @benpate Let's assume that my client is a music player. It publishes a Listen activity where object is an Audio. This activity should increase playCount on the Audio object.

              One way to support this on the server side is to teach it about Listen, Audio and how to update playCount. This is how most existing servers are built.

              But a server described in my FEP would work differently:

              - It doesn't know anything about Listen, Audio or playCount.
              - Upon receiving Listen, it will recognize it as an activity, and embedded Audio as an object.
              - Since this is not a CRUD operation, it will not check permissions.
              - If Listen activity has a result property, the server will process that activity as well.
              - If result is an Update activity, the server will recognize it as a CRUD operation and will check permissions: Update.actor and Audio.attributedTo must be the same.
              - The server will save both activities, Listen and Update.
              - Then it will deliver them to intended recipients (to and cc).

              Effects are client's responsibility now, it must provide an Update activity if it wants to update playCount. There are other requirements too, for example all objects should have an attributedTo property, which is needed for permission checks.

              But in this setup a single server can work with any kind of client.

              @mariusor @trwnh

              benpate@mastodon.socialB 1 Reply Last reply
              0
              • silverpill@mitra.socialS silverpill@mitra.social

                @benpate Let's assume that my client is a music player. It publishes a Listen activity where object is an Audio. This activity should increase playCount on the Audio object.

                One way to support this on the server side is to teach it about Listen, Audio and how to update playCount. This is how most existing servers are built.

                But a server described in my FEP would work differently:

                - It doesn't know anything about Listen, Audio or playCount.
                - Upon receiving Listen, it will recognize it as an activity, and embedded Audio as an object.
                - Since this is not a CRUD operation, it will not check permissions.
                - If Listen activity has a result property, the server will process that activity as well.
                - If result is an Update activity, the server will recognize it as a CRUD operation and will check permissions: Update.actor and Audio.attributedTo must be the same.
                - The server will save both activities, Listen and Update.
                - Then it will deliver them to intended recipients (to and cc).

                Effects are client's responsibility now, it must provide an Update activity if it wants to update playCount. There are other requirements too, for example all objects should have an attributedTo property, which is needed for permission checks.

                But in this setup a single server can work with any kind of client.

                @mariusor @trwnh

                benpate@mastodon.socialB This user is from outside of this forum
                benpate@mastodon.socialB This user is from outside of this forum
                benpate@mastodon.social
                wrote last edited by
                #27

                Yes, I think I like the idea of clients being able to store data on the server however they like. It reminds me of this description of ATProto that I found recently: https://overreacted.io/a-social-filesystem/

                I guess my question is: once I store my custom stuff in custom places on my server, how do I publish this so other people can find?

                And, object IDs are usually defined by the server. So how would it work to say "create a collection named XYZ and add this object to it"?

                @silverpill @mariusor @trwnh

                1 Reply Last reply
                0

                Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                With your input, this post could be even better 💗

                Register Login
                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