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. "how to not regret c2s"w.on-t.work/activitypub/c2smy opinions about how activitypub c2s ought to be implemented, probably with way too much snark for anyone to take it seriously.

"how to not regret c2s"w.on-t.work/activitypub/c2smy opinions about how activitypub c2s ought to be implemented, probably with way too much snark for anyone to take it seriously.

Scheduled Pinned Locked Moved General Discussion
activitypubfedidevs
32 Posts 13 Posters 9 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.
  • kopper@not-brain.d.on-t.workK kopper@not-brain.d.on-t.work
    i guess you could make a frontend that talks both APIs natively and picks which one to use depending on how you log in, which would avoid the going evil bit, but that increases complexity on the user's device a fair bit (likely manageable though) and still requires you to proxy the content of the other network as trying to fetch it from the client will either rate-limit/be slow or cause auth failures (e.g. an atproto login trying to fetch AP objects)
    kopper@not-brain.d.on-t.workK This user is from outside of this forum
    kopper@not-brain.d.on-t.workK This user is from outside of this forum
    kopper@not-brain.d.on-t.work
    wrote last edited by
    #22
    now that i think about it, you would need actors and logins for both sides anyway if you're doing bridging, this is prolly not an issue
    kopper@not-brain.d.on-t.workK 1 Reply Last reply
    0
    • kopper@not-brain.d.on-t.workK kopper@not-brain.d.on-t.work
      now that i think about it, you would need actors and logins for both sides anyway if you're doing bridging, this is prolly not an issue
      kopper@not-brain.d.on-t.workK This user is from outside of this forum
      kopper@not-brain.d.on-t.workK This user is from outside of this forum
      kopper@not-brain.d.on-t.work
      wrote last edited by
      #23
      bad ideas:

      xrpc/com.w3.activitystreams.proxyUrl?id=https://..
      {
          "endpoints": {
              "xrpcProxyUrl": "https://..."
          }
      }
      jb@waf.moeJ 1 Reply Last reply
      0
      • kopper@not-brain.d.on-t.workK kopper@not-brain.d.on-t.work
        bad ideas:

        xrpc/com.w3.activitystreams.proxyUrl?id=https://..
        {
            "endpoints": {
                "xrpcProxyUrl": "https://..."
            }
        }
        jb@waf.moeJ This user is from outside of this forum
        jb@waf.moeJ This user is from outside of this forum
        jb@waf.moe
        wrote last edited by
        #24

        a XRPC endpoint returning AS2-compatible data would be funny

        1 Reply Last reply
        0
        • kopper@not-brain.d.on-t.workK This user is from outside of this forum
          kopper@not-brain.d.on-t.workK This user is from outside of this forum
          kopper@not-brain.d.on-t.work
          wrote last edited by
          #25
          @jb i should look this up do lexicons have any places they can have unrestricted json in or would it have to be a string or something
          jb@waf.moeJ 1 Reply Last reply
          0
          • kopper@not-brain.d.on-t.workK kopper@not-brain.d.on-t.work
            @jb i should look this up do lexicons have any places they can have unrestricted json in or would it have to be a string or something
            jb@waf.moeJ This user is from outside of this forum
            jb@waf.moeJ This user is from outside of this forum
            jb@waf.moe
            wrote last edited by
            #26

            lexicons do have unrestricted json, lexicon validation are there but its not required

            1 Reply Last reply
            0
            • kopper@not-brain.d.on-t.workK This user is from outside of this forum
              kopper@not-brain.d.on-t.workK This user is from outside of this forum
              kopper@not-brain.d.on-t.work
              wrote last edited by
              #27
              @jb no i think validation is important

              there is an unknown type but
              The (nested) contents of the data object must still be valid under the atproto data model. For example, it should not contain floats. Nested compound types like blobs and CID links should be validated and transformed as expected.
              1 Reply Last reply
              0
              • kopper@not-brain.d.on-t.workK kopper@not-brain.d.on-t.work
                "how to not regret c2s"
                w.on-t.work/activitypub/c2s

                my opinions about how activitypub c2s ought to be implemented, probably with way too much snark for anyone to take it seriously. wrote pretty much all of it at like 1 am so expect the writing to not be great. will prolly regret it tomorrow but eh. whatever

                #activityPub #fediDevs
                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
                #28

                @kopper nah it's good shit. i've been meaning to compile all my thoughts on the subject but you basically did it for me with this piece 👍

                1 Reply Last reply
                0
                • kopper@not-brain.d.on-t.workK kopper@not-brain.d.on-t.work
                  "how to not regret c2s"
                  w.on-t.work/activitypub/c2s

                  my opinions about how activitypub c2s ought to be implemented, probably with way too much snark for anyone to take it seriously. wrote pretty much all of it at like 1 am so expect the writing to not be great. will prolly regret it tomorrow but eh. whatever

                  #activityPub #fediDevs
                  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
                  #29

                  @kopper

                  > separate data hosting from data interpretation
                  https://activitypub.mushroomlabs.com/topics/reference_context_architecture/

                  > with many objects and slow connections the overhead of creating new http requests would add up significantly

                  GraphQL and/or SPARQL

                  > iterating through my inbox every time i open my “home timeline”

                  The same your email client works: sync the inbox, create index view in the clients. That's at least what I am doing for my C2S client. My problem now is that I wish that C2S had a way to say "clear my inbox"

                  kopper@not-brain.d.on-t.workK 1 Reply Last reply
                  0
                  • raphael@mastodon.communick.comR raphael@mastodon.communick.com

                    @kopper

                    > separate data hosting from data interpretation
                    https://activitypub.mushroomlabs.com/topics/reference_context_architecture/

                    > with many objects and slow connections the overhead of creating new http requests would add up significantly

                    GraphQL and/or SPARQL

                    > iterating through my inbox every time i open my “home timeline”

                    The same your email client works: sync the inbox, create index view in the clients. That's at least what I am doing for my C2S client. My problem now is that I wish that C2S had a way to say "clear my inbox"

                    kopper@not-brain.d.on-t.workK This user is from outside of this forum
                    kopper@not-brain.d.on-t.workK This user is from outside of this forum
                    kopper@not-brain.d.on-t.work
                    wrote last edited by
                    #30
                    @raphael
                    GraphQL and/or SPARQL
                    these can be valid options but they add complexity to the C2S server, which is both the part that individual users would want to self-host AND also the part already burdened by having to deal with the traffic bursts caused by things like boosts and replies by large accounts. i think if a query endpoint were to be created it should be maintained by a client (at least architecturally, if an implementation wants to merge them both it's their choice!)
                    The same your email client works: sync the inbox, create index view in the clients.
                    this still does not address the problem. an actor's inbox contains way more than just the Posts on their Timelines (and will do even more if AP were to be the Everything Protocol it dreams on being). you'd need to load pages upon pages of as:Like, litepub:EmojiReact (and as:Undo for both), as:Listen (e.g. following someone using pleroma scrobbles), various as:Add as:Remove as:Update as:Delete "management" activities for unknown objects, and so on which will swiftly get thrown away but still end up consuming latency (especially after a few days of being away) and often-costly mobile bandwidth

                    email clients work because your inbox Only contains Emails. the data you get is pretty much all relevant, you don't end up discarding huge chunks of it
                    kopper@not-brain.d.on-t.workK 1 Reply Last reply
                    0
                    • kopper@not-brain.d.on-t.workK kopper@not-brain.d.on-t.work
                      @raphael
                      GraphQL and/or SPARQL
                      these can be valid options but they add complexity to the C2S server, which is both the part that individual users would want to self-host AND also the part already burdened by having to deal with the traffic bursts caused by things like boosts and replies by large accounts. i think if a query endpoint were to be created it should be maintained by a client (at least architecturally, if an implementation wants to merge them both it's their choice!)
                      The same your email client works: sync the inbox, create index view in the clients.
                      this still does not address the problem. an actor's inbox contains way more than just the Posts on their Timelines (and will do even more if AP were to be the Everything Protocol it dreams on being). you'd need to load pages upon pages of as:Like, litepub:EmojiReact (and as:Undo for both), as:Listen (e.g. following someone using pleroma scrobbles), various as:Add as:Remove as:Update as:Delete "management" activities for unknown objects, and so on which will swiftly get thrown away but still end up consuming latency (especially after a few days of being away) and often-costly mobile bandwidth

                      email clients work because your inbox Only contains Emails. the data you get is pretty much all relevant, you don't end up discarding huge chunks of it
                      kopper@not-brain.d.on-t.workK This user is from outside of this forum
                      kopper@not-brain.d.on-t.workK This user is from outside of this forum
                      kopper@not-brain.d.on-t.work
                      wrote last edited by
                      #31
                      @raphael i also have personal opinions around graphql/sparql such as the ability for a client to create slow and resource-consuming queries and concerns around how a shared C2S server is supposed to rate limit those, but given graphql's popularity these already have some discussion and acceptable solutions, though we really don't need facebook-scale tooling for this
                      raphael@mastodon.communick.comR 1 Reply Last reply
                      0
                      • kopper@not-brain.d.on-t.workK kopper@not-brain.d.on-t.work
                        @raphael i also have personal opinions around graphql/sparql such as the ability for a client to create slow and resource-consuming queries and concerns around how a shared C2S server is supposed to rate limit those, but given graphql's popularity these already have some discussion and acceptable solutions, though we really don't need facebook-scale tooling for this
                        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
                        #32

                        @kopper

                        This is what I am planning to do to deal with huge inboxes: https://codeberg.org/mushroomlabs/django-activitypub-toolkit/issues/31

                        As for SPARQL/GraphQL: yes, if I am syncing all the data (that I want) to my local database, I'd implement the query engine *in the local client*.

                        And I am not even thinking about discarding anything. JSON can compress nicely, so I'd keep an actual database for the indexing and JSON-LD documents as a local archive.

                        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