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. What if...

What if...

Scheduled Pinned Locked Moved General Discussion
activitypub
72 Posts 18 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.
  • mariusor@metalhead.clubM mariusor@metalhead.club

    @steve I've built the server part already, that was 5 years ago. Still waiting for people with the skills to build the UIs though...

    ? Offline
    ? Offline
    Guest
    wrote last edited by
    #28
    @mariusor @steve Is not GoToSocial server-only? Is your server accessible with Semaphore Social?
    mariusor@metalhead.clubM 1 Reply Last reply
    0
    • silverpill@mitra.socialS silverpill@mitra.social

      @evan @raphael @steve I think a generic ActivityPub server can't be built without major changes to ActivityPub. For example, it might be necessary to make all side-effects of activities explicit.

      And there is a bigger problem. A generic server without FEP-ef61 is like ATProto PDS or Nostr relay but all data is tied to a single server. This means that it is obsolete before the work has even begun.

      steve@social.technoetic.comS This user is from outside of this forum
      steve@social.technoetic.comS This user is from outside of this forum
      steve@social.technoetic.com
      wrote last edited by
      #29

      @silverpill @evan @raphael Several generic AP server implementations have been built, so I don't know what you mean by the side-effect comment. Note that my mental model of a generic server doesn't implement any domain-specific behaviors in the server, but only side-effects specified by AP (and extended generic C2S support). There are also simpler ways to design servers so that content isn't tied to a specific server (with different tradeoffs than FEP-ef61). That's a long discussion...

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

        @steve

        I love this vision. One hurdle I see is the lack of content types + the ability to represent them in HTML.

        Bandwagon is my best use case: Albums and Tracks aren’t a standard data type. I could push those into my own AP server, but other servers wouldn’t know how to represent them correctly.

        For this to work, we need a restricted subset of HTML for generating previews of unknown content.

        This feature exists in oEmbed (optional) but is poorly supported on the Fediverse.

        steve@social.technoetic.comS This user is from outside of this forum
        steve@social.technoetic.comS This user is from outside of this forum
        steve@social.technoetic.com
        wrote last edited by
        #30

        @benpate The approach I described requires us to think about servers differently. A generic AP server would only store and federate data, and would not render any user-facing content. The C2S clients would know how to render the content because they were coded to do it. Different clients might render the same content very differently for different purposes (although I see value in having the ability to share UI components too).

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

          @steve

          I love this vision. One hurdle I see is the lack of content types + the ability to represent them in HTML.

          Bandwagon is my best use case: Albums and Tracks aren’t a standard data type. I could push those into my own AP server, but other servers wouldn’t know how to represent them correctly.

          For this to work, we need a restricted subset of HTML for generating previews of unknown content.

          This feature exists in oEmbed (optional) but is poorly supported on the Fediverse.

          mariusor@metalhead.clubM This user is from outside of this forum
          mariusor@metalhead.clubM This user is from outside of this forum
          mariusor@metalhead.club
          wrote last edited by
          #31

          @benpate as long as your custom types have the current ActivityStreams Object as a base (ie, they contain a Content and a MediaType) anyone would be able to render them to some extent.

          For cases where you have a different structure, you can have Profile objects alognside them linked to their Preview property. Use the vocabulary to your advantage.

          @steve

          benpate@mastodon.socialB 1 Reply Last reply
          0
          • steve@social.technoetic.comS steve@social.technoetic.com

            What if... you had one Fedi account on a generic headless #ActivityPub server that simply hosts and federates your data... and had C2S UIs for microblogging, long form writing, media editing and sharing, link aggregation, games, fitness tracking, and so on, that all used that same Fedi account. Technically, it's a similar concept as ATProto (but no relay and app view) and Solid Pods (but no RDF).

            It seems possible... if we can improve the AP C2S API/protocol sufficiently.

            ? Offline
            ? Offline
            Guest
            wrote last edited by
            #32

            @steve FEP-ef61 makes it possible to build a server that only talks to other servers or to a client that pulls inbox (i.e. received activities) and pushes to outbox (outgoing activities). tootik is very close to this, I'm working on a 'local mode' where the server and the UI run locally but synchronize with a server in the internet, a 'dumb pipe' that can send and receive activities.

            1 Reply Last reply
            0
            • ? Guest
              @mariusor @steve Is not GoToSocial server-only? Is your server accessible with Semaphore Social?
              mariusor@metalhead.clubM This user is from outside of this forum
              mariusor@metalhead.clubM This user is from outside of this forum
              mariusor@metalhead.club
              wrote last edited by
              #33

              @lori I don't know what semaphore social is, and I don't know if goto social is server only (probably not in the way that I meant - where "the server" is an ActivityPub C2S server)

              @steve

              mariusor@metalhead.clubM 1 Reply Last reply
              0
              • mariusor@metalhead.clubM mariusor@metalhead.club

                @lori I don't know what semaphore social is, and I don't know if goto social is server only (probably not in the way that I meant - where "the server" is an ActivityPub C2S server)

                @steve

                mariusor@metalhead.clubM This user is from outside of this forum
                mariusor@metalhead.clubM This user is from outside of this forum
                mariusor@metalhead.club
                wrote last edited by
                #34

                @lori so, Semaphore social seems to be is the project from which Pinafore started. And they are both Mastodon clients, not ActivityPub client to server clients. So no, my server does not support the Mastodon client API.

                1 Reply Last reply
                0
                • steve@social.technoetic.comS steve@social.technoetic.com

                  @silverpill @evan @raphael Several generic AP server implementations have been built, so I don't know what you mean by the side-effect comment. Note that my mental model of a generic server doesn't implement any domain-specific behaviors in the server, but only side-effects specified by AP (and extended generic C2S support). There are also simpler ways to design servers so that content isn't tied to a specific server (with different tradeoffs than FEP-ef61). That's a long discussion...

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

                  @steve @evan @raphael A server can't properly process an arbitrary activity without knowing its side effects. A server that only supports a small number of activities mentioned in the ActivityPub spec is obviously not generic.

                  I can point to other challenges because I've been working on this problem for years, but...

                  Several generic AP server implementations have been built
                  There are also simpler ways to design servers so that content isn't tied to a specific server

                  Wow, for real? I suppose it's time for me to retire then.

                  raphael@mastodon.communick.comR mariusor@metalhead.clubM 2 Replies Last reply
                  0
                  • silverpill@mitra.socialS silverpill@mitra.social

                    @steve @evan @raphael A server can't properly process an arbitrary activity without knowing its side effects. A server that only supports a small number of activities mentioned in the ActivityPub spec is obviously not generic.

                    I can point to other challenges because I've been working on this problem for years, but...

                    Several generic AP server implementations have been built
                    There are also simpler ways to design servers so that content isn't tied to a specific server

                    Wow, for real? I suppose it's time for me to retire then.

                    raphael@mastodon.communick.comR This user is from outside of this forum
                    raphael@mastodon.communick.comR This user is from outside of this forum
                    raphael@mastodon.communick.com
                    wrote last edited by
                    #36

                    @silverpill @steve @evan

                    I don't follow: how does that relate to the "ActivityPub API" if the activity is "arbitrary" and not defined by ActivityPub, not using AS2 vocabulary?

                    Isn't that like saying that we can't use HTTP as a protocol because an HTTP server doesn't know what to do with verbs defined on, e.g, WebDAV?

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

                      @steve @evan @raphael A server can't properly process an arbitrary activity without knowing its side effects. A server that only supports a small number of activities mentioned in the ActivityPub spec is obviously not generic.

                      I can point to other challenges because I've been working on this problem for years, but...

                      Several generic AP server implementations have been built
                      There are also simpler ways to design servers so that content isn't tied to a specific server

                      Wow, for real? I suppose it's time for me to retire then.

                      mariusor@metalhead.clubM This user is from outside of this forum
                      mariusor@metalhead.clubM This user is from outside of this forum
                      mariusor@metalhead.club
                      wrote last edited by
                      #37

                      @silverpill I think you're getting confused about ActivityPub side-effects and application logic side-effects.

                      I call my project FedBOX a "Generic ActivityPub server" because outside of storing ActivityPub objects and activities to a local storage and dispatching said activities to their recipients it doesn't do anything else.

                      However there's nothing preventing someone from forking the project and adding some other type of logic to it for specific combinations of Activities/Objects. That's the thing I'm trying to do with my GoActivityPub library: take care of the ActivityPub stuff, so you can then do your own stuff alongside it.

                      @steve @evan @raphael

                      silverpill@mitra.socialS 1 Reply Last reply
                      0
                      • raphael@mastodon.communick.comR raphael@mastodon.communick.com

                        @silverpill @steve @evan

                        I don't follow: how does that relate to the "ActivityPub API" if the activity is "arbitrary" and not defined by ActivityPub, not using AS2 vocabulary?

                        Isn't that like saying that we can't use HTTP as a protocol because an HTTP server doesn't know what to do with verbs defined on, e.g, WebDAV?

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

                        @raphael @steve @evan It relates to ActivityPub API because ActivityPub is described as an extensible protocol. If a server doesn't support "extensions", it is not a generic server.

                        raphael@mastodon.communick.comR evan@cosocial.caE 2 Replies Last reply
                        0
                        • mariusor@metalhead.clubM mariusor@metalhead.club

                          @silverpill I think you're getting confused about ActivityPub side-effects and application logic side-effects.

                          I call my project FedBOX a "Generic ActivityPub server" because outside of storing ActivityPub objects and activities to a local storage and dispatching said activities to their recipients it doesn't do anything else.

                          However there's nothing preventing someone from forking the project and adding some other type of logic to it for specific combinations of Activities/Objects. That's the thing I'm trying to do with my GoActivityPub library: take care of the ActivityPub stuff, so you can then do your own stuff alongside it.

                          @steve @evan @raphael

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

                          @mariusor @steve @evan @raphael

                          I don't see any reason to call this a generic server if it doesn't support extensions. Just a headless server that implements AP C2S

                          steve@social.technoetic.comS mariusor@metalhead.clubM raphael@mastodon.communick.comR evan@cosocial.caE 4 Replies Last reply
                          0
                          • silverpill@mitra.socialS silverpill@mitra.social

                            @raphael @steve @evan It relates to ActivityPub API because ActivityPub is described as an extensible protocol. If a server doesn't support "extensions", it is not a generic server.

                            raphael@mastodon.communick.comR This user is from outside of this forum
                            raphael@mastodon.communick.comR This user is from outside of this forum
                            raphael@mastodon.communick.com
                            wrote last edited by
                            #40

                            @silverpill

                            Then I'd echo what @mariusor said: it seems like you are conflating the server with the applications built on top of it.

                            @steve @evan

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

                              @mariusor @steve @evan @raphael

                              I don't see any reason to call this a generic server if it doesn't support extensions. Just a headless server that implements AP C2S

                              steve@social.technoetic.comS This user is from outside of this forum
                              steve@social.technoetic.comS This user is from outside of this forum
                              steve@social.technoetic.com
                              wrote last edited by
                              #41

                              @silverpill @mariusor @evan @raphael You're starting to get it! 😉 You quoted "extensions" in the previous post and that was good since the way you think of "extensions" is likely very different than my view. The generic servers I'm discussing *are* highly "extensible" (more than most current Fedi implementations).

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

                                @mariusor @steve @evan @raphael

                                I don't see any reason to call this a generic server if it doesn't support extensions. Just a headless server that implements AP C2S

                                mariusor@metalhead.clubM This user is from outside of this forum
                                mariusor@metalhead.clubM This user is from outside of this forum
                                mariusor@metalhead.club
                                wrote last edited by
                                #42

                                @silverpill what are extensions exactly? Are you talking about FEPs that proscribe behaviour alongside structure, or ActivityPub extensions as allowed by JSON-LD.

                                The FEPs that proscribe behaviour can't ever be done in a "generic" way, and I'm betting you already know that and you're just being facetious.

                                However the JSON-LD dynamic structure can be reasoned about generically from an ActivityPub point of view using the points I made above: storage to disk, dispatch to recipients.

                                If you plug smart clients on top of that that have the specific logic you want, you're all the way there to what Steve was talking about.

                                @steve @evan @raphael

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

                                  @mariusor @steve @evan @raphael

                                  I don't see any reason to call this a generic server if it doesn't support extensions. Just a headless server that implements AP C2S

                                  raphael@mastodon.communick.comR This user is from outside of this forum
                                  raphael@mastodon.communick.comR This user is from outside of this forum
                                  raphael@mastodon.communick.com
                                  wrote last edited by
                                  #43

                                  @silverpill

                                  It is a generic server *because* it is focused only on the ActivityPub API, unlike most of the existing services that interop only with specific APIs (Mastodon's , Lemmy's).

                                  A "generic server", in my view, is one that can take any type of activity posted to a box, and dispatch to the proper targets. The ActivityPub API defines only what to with like/announce/follow. Anything else is up to the application. That's the extensible part.

                                  @mariusor @steve @evan

                                  1 Reply Last reply
                                  0
                                  • mariusor@metalhead.clubM mariusor@metalhead.club

                                    @silverpill what are extensions exactly? Are you talking about FEPs that proscribe behaviour alongside structure, or ActivityPub extensions as allowed by JSON-LD.

                                    The FEPs that proscribe behaviour can't ever be done in a "generic" way, and I'm betting you already know that and you're just being facetious.

                                    However the JSON-LD dynamic structure can be reasoned about generically from an ActivityPub point of view using the points I made above: storage to disk, dispatch to recipients.

                                    If you plug smart clients on top of that that have the specific logic you want, you're all the way there to what Steve was talking about.

                                    @steve @evan @raphael

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

                                    @mariusor @steve @evan @raphael An extension is a protocol extension. Specifically, I talked about activity types that are not mentioned in ActivityPub.

                                    Here is a side effect of a Like activity:

                                    The side effect of receiving this in an outbox is that the server SHOULD add the object to the actor's liked Collection.

                                    Now imagine that you have an EmojiReact activity which server should add to object's emojiReactions collection as a side-effect.

                                    A generic server should be able to do that.

                                    raphael@mastodon.communick.comR steve@social.technoetic.comS 2 Replies Last reply
                                    0
                                    • silverpill@mitra.socialS silverpill@mitra.social

                                      @mariusor @steve @evan @raphael An extension is a protocol extension. Specifically, I talked about activity types that are not mentioned in ActivityPub.

                                      Here is a side effect of a Like activity:

                                      The side effect of receiving this in an outbox is that the server SHOULD add the object to the actor's liked Collection.

                                      Now imagine that you have an EmojiReact activity which server should add to object's emojiReactions collection as a side-effect.

                                      A generic server should be able to do that.

                                      raphael@mastodon.communick.comR This user is from outside of this forum
                                      raphael@mastodon.communick.comR This user is from outside of this forum
                                      raphael@mastodon.communick.com
                                      wrote last edited by
                                      #45

                                      @silverpill

                                      I'm really not following this logic: you are saying "a generic HTTP server should be able to serve WebDAV requests".

                                      Yes, HTTP servers should be able to serve WebDAV requests, *provided* they implement the extension.

                                      It doesn't mean that they *have* to implement the extension. And an HTTP server that does not support the extension does not make non-HTTP compliant.

                                      @mariusor @steve @evan

                                      silverpill@mitra.socialS 1 Reply Last reply
                                      0
                                      • raphael@mastodon.communick.comR raphael@mastodon.communick.com

                                        @silverpill

                                        I'm really not following this logic: you are saying "a generic HTTP server should be able to serve WebDAV requests".

                                        Yes, HTTP servers should be able to serve WebDAV requests, *provided* they implement the extension.

                                        It doesn't mean that they *have* to implement the extension. And an HTTP server that does not support the extension does not make non-HTTP compliant.

                                        @mariusor @steve @evan

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

                                        @raphael @mariusor @steve @evan Your example is incorrect because activity types are not like HTTP verbs. Like and EmojiReact are part of the same protocol, both are widely used in Fediverse. Not sure what is the point of twisting the meaning of words to make limitations of certain software appear as non-limitations.

                                        raphael@mastodon.communick.comR 1 Reply Last reply
                                        0
                                        • silverpill@mitra.socialS silverpill@mitra.social

                                          @raphael @mariusor @steve @evan Your example is incorrect because activity types are not like HTTP verbs. Like and EmojiReact are part of the same protocol, both are widely used in Fediverse. Not sure what is the point of twisting the meaning of words to make limitations of certain software appear as non-limitations.

                                          raphael@mastodon.communick.comR This user is from outside of this forum
                                          raphael@mastodon.communick.comR This user is from outside of this forum
                                          raphael@mastodon.communick.com
                                          wrote last edited by
                                          #47

                                          @silverpill

                                          The analogy to HTTP is adequate. "GET/POST/DELETE" are verbs, PROPFIND is a verb. It just happens that some verbs had expectations around their behavior defined on spec, others are defined on an extension.

                                          The same thing for AP: it says what to do about as:Like and as:Announce. If you want to attribute any special behavior for as:EmojiReact or for mitra:Subscribe, then it's up to the extension to define the behavior and get people to agree.

                                          @mariusor @steve @evan

                                          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