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
27 Posts 11 Posters 8 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
    "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
    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
    #18
    i should open issues on github.com/swicg/activitypub-api/issues for all my proposals and end up committing 10 faux pas in a row because they still havent decided on if they want a monolithic One Server that replaces the mastodon api or something actually worthwhile to implement
    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
      volpeon@icy.wyvern.ripV This user is from outside of this forum
      volpeon@icy.wyvern.ripV This user is from outside of this forum
      volpeon@icy.wyvern.rip
      wrote last edited by
      #19

      @kopper Your opinions are pretty much the same as mine. That's always how I approached my own instance server projects before the requirements inevitably grew way over my head haha

      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
        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
        #20
        also unrelated but i may as well throw this in here since i keep thinking about it but. doing c2s this way also opens your client up to being multi-protocol. say you want to be like wafrn and federate both via ap and atproto, you can then plug in PDSs the same way you plugged in AP C2S servers. your own client can then merge both into one

        this does lose a handful of the benefits some features mentioned would bring. you would need to store all the data yourself as you'll need your own common API format, you'd need to maintain your own login tokens, your backend would need to act as a proxy for writing to the PDS/C2S server which enables you to cut that off completely if you "go evil". i did touch upon these downsides on
        w.on-t.work/this-tall-to-interoperate

        or alternatively, you could have a "personal bridgy" which can be both a c2s client and an atproto client/appview and bridge the objects of an individual actor, irrelevant of which client is used to create them in either direction, but bridging like this isn't really interop because e.g. replies from the other network would not be visible without client support
        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
          also unrelated but i may as well throw this in here since i keep thinking about it but. doing c2s this way also opens your client up to being multi-protocol. say you want to be like wafrn and federate both via ap and atproto, you can then plug in PDSs the same way you plugged in AP C2S servers. your own client can then merge both into one

          this does lose a handful of the benefits some features mentioned would bring. you would need to store all the data yourself as you'll need your own common API format, you'd need to maintain your own login tokens, your backend would need to act as a proxy for writing to the PDS/C2S server which enables you to cut that off completely if you "go evil". i did touch upon these downsides on
          w.on-t.work/this-tall-to-interoperate

          or alternatively, you could have a "personal bridgy" which can be both a c2s client and an atproto client/appview and bridge the objects of an individual actor, irrelevant of which client is used to create them in either direction, but bridging like this isn't really interop because e.g. replies from the other network would not be visible without client support
          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
          #21
          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 1 Reply Last reply
          0
          • 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

                      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