Skip to content
  • Categories
  • Recent
  • Popular
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

NodeBB-ActivityPub Bridge Test Instance

  1. Home
  2. Categories
  3. General Discussion
  4. AP Test (community.nodebb.org)
  5. Signalling "open in app" behaviour for AP content

Signalling "open in app" behaviour for AP content

Scheduled Pinned Locked Moved AP Test (community.nodebb.org)
activitypub
29 Posts 11 Posters 415 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.
  • blaine@mastodon.socialB blaine@mastodon.social

    @evan @julian @nightpool lots of folks advocated to support any URI scheme in a webfinger lookup, and that's why we have the "acct" scheme at all - so that email-style addresses could be used alongside http etc URIs!

    The <Link> approach definitely works, but feels a bit reinventing-webfinger/creating more complexity in lookups (on the client side).

    Hope the context is helpful! 😊

    evan@cosocial.caE This user is from outside of this forum
    evan@cosocial.caE This user is from outside of this forum
    evan@cosocial.ca
    wrote on last edited by
    #19

    @blaine @julian @nightpool

    So, for finding the AP equivalent of an URL that I think is a Web page, I'd take these steps:

    - Link header: HEAD and look for the Link: header (easy, fast)
    - Webfinger: Webfinger the URL (a little more complicated)
    - Content negotiation: GET with Accept header set to AS2 type
    - Parsing: GET and look for Link: header or <link> element

    For finding the HTML page for an AP object:

    - Link header: HEAD and look for Link:
    - AS2: GET and look for `url` at top level

    evan@cosocial.caE blaine@mastodon.socialB 2 Replies Last reply
    0
    • evan@cosocial.caE evan@cosocial.ca

      @blaine @julian @nightpool

      So, for finding the AP equivalent of an URL that I think is a Web page, I'd take these steps:

      - Link header: HEAD and look for the Link: header (easy, fast)
      - Webfinger: Webfinger the URL (a little more complicated)
      - Content negotiation: GET with Accept header set to AS2 type
      - Parsing: GET and look for Link: header or <link> element

      For finding the HTML page for an AP object:

      - Link header: HEAD and look for Link:
      - AS2: GET and look for `url` at top level

      evan@cosocial.caE This user is from outside of this forum
      evan@cosocial.caE This user is from outside of this forum
      evan@cosocial.ca
      wrote on last edited by
      #20

      @blaine @julian @nightpool

      For finding the HTML page for an AP object:

      - Link header: HEAD and look for Link:
      - Content negotiation: HEAD with Accept: set to text/html
      - AS2: GET and look for `url` at top level

      1 Reply Last reply
      0
      • evan@cosocial.caE evan@cosocial.ca

        @blaine @julian @nightpool

        So, for finding the AP equivalent of an URL that I think is a Web page, I'd take these steps:

        - Link header: HEAD and look for the Link: header (easy, fast)
        - Webfinger: Webfinger the URL (a little more complicated)
        - Content negotiation: GET with Accept header set to AS2 type
        - Parsing: GET and look for Link: header or <link> element

        For finding the HTML page for an AP object:

        - Link header: HEAD and look for Link:
        - AS2: GET and look for `url` at top level

        blaine@mastodon.socialB This user is from outside of this forum
        blaine@mastodon.socialB This user is from outside of this forum
        blaine@mastodon.social
        wrote on last edited by
        #21

        @evan @julian @nightpool in the Postel sense, though, it's too bad that a client implementor needs to maintain (at least) four discovery pathways, and may require four separate requests to validate the information. Similarly, an ap host doesn't know which spots a client will check, so needs to implement all four. I'm well out of the standards game, but I'd very much advocate for "pick one and stick with it" 😊

        evan@cosocial.caE 1 Reply Last reply
        0
        • blaine@mastodon.socialB blaine@mastodon.social

          @evan @julian @nightpool in the Postel sense, though, it's too bad that a client implementor needs to maintain (at least) four discovery pathways, and may require four separate requests to validate the information. Similarly, an ap host doesn't know which spots a client will check, so needs to implement all four. I'm well out of the standards game, but I'd very much advocate for "pick one and stick with it" 😊

          evan@cosocial.caE This user is from outside of this forum
          evan@cosocial.caE This user is from outside of this forum
          evan@cosocial.ca
          wrote on last edited by
          #22

          @blaine @julian @nightpool we need you back in the standards game

          julian@community.nodebb.orgJ 1 Reply Last reply
          0
          • evan@cosocial.caE evan@cosocial.ca

            @blaine @julian @nightpool we need you back in the standards game

            julian@community.nodebb.orgJ This user is from outside of this forum
            julian@community.nodebb.orgJ This user is from outside of this forum
            julian@community.nodebb.org
            wrote on last edited by
            #23

            @evan@cosocial.ca @blaine@mastodon.social indeed, four different implementations is not ideal. We're at the point where they're all vying for attention.

            Would need to weigh pros and cons of each and see whether there is one winner we can all agree on.

            1 Reply Last reply
            0
            • julian@community.nodebb.orgJ julian@community.nodebb.org

              Does anyone know what the most broadly implemented standard is for signalling that a web page has an alternative ActivityPub endpoint?

              What I found online (and with @evan@cosocial.ca and @silverpill@mitra.social's input) was to deliver a Link header and set a <link> tag, but it doesn't seem to work (at least with Megalodon)...

              scott@authorship.studioS This user is from outside of this forum
              scott@authorship.studioS This user is from outside of this forum
              scott@authorship.studio
              wrote on last edited by
              #24
              When you work on this, consider that there are some situations where the user may want or need to go to the official profile and channel. Older content does not get distributed via ActivityPub, so you have to go to the source (originating website) to see everything.

              And I have rarely seen an entire conversation be delivered via ActivityPub. The Zot protocol downloads the whole conversation, but not ActivityPub. With ActivityPub, there are always holes and you have to go to the original thread on the original website to see the whole thing. Maybe we can fix that by adding the ability to download entire threads, not just new posts, but right now seeing the whole conversation over ActivityPub is hit or miss.

              Also, many platforms have profile information that is not transmitted over ActivityPub and you would need to visit their real profile to get all of the details.

              Plus, in my opinion, it is poor form to create a local profile for someone on another platform and fail to acknowledge that the user is using another platform. At the very least, there should be a link back to their official profile and/or channel (i.e. their posts).

              Until ActivityPub can reliably transmit the entire thread, you will need to link back to the original website.
              1 Reply Last reply
              0
              • julian@community.nodebb.orgJ julian@community.nodebb.org

                Thanks @evan@cosocial.ca — that'd be appreciated!

                @nightpool@socialhub.activitypub.rocks, this would be helpful in NodeBB's case where we have a web app, so rendering a link to something is just an anchor.

                I could theoretically override the anchor click handler to do a backend round-trip to check whether we could load the content in-app, otherwise fall back to a regular browser behaviour (a page navigation).

                For example, let's say I link out to Evan's profile here. If NodeBB knew that this link had an alternative AP endpoint, then we could redirect the user instead to the local representation of his profile

                scott@authorship.studioS This user is from outside of this forum
                scott@authorship.studioS This user is from outside of this forum
                scott@authorship.studio
                wrote on last edited by
                #25
                @julian
                For example, let's say I link out to Evan's profile here. If NodeBB knew that this link had an alternative AP endpoint, then we could redirect the user instead to the local representation of his profile

                Wouldn't Evan's AP endpoint be the same as his HTML endpoint?

                Most platforms are going to send you to the authoritative profile, which is the one at the user's server.

                And if you wanted to redirect a link to a local profile instead of his official profile, you don't need an endpoint to do that. You could simply parse the post and swap out the URL, since you should have data about the user in your database anyway from when you first detected the user.

                Maybe I am misunderstanding the use case here, but I am not sure why a platform would not direct you to its own platform for content and profiles.
                1 Reply Last reply
                0
                • kariboka@social.harpia.redK This user is from outside of this forum
                  kariboka@social.harpia.redK This user is from outside of this forum
                  kariboka@social.harpia.red
                  wrote on last edited by
                  #26
                  @julian @evan @silverpill like node info or host-meta?
                  mro@digitalcourage.socialM 1 Reply Last reply
                  0
                  • evan@cosocial.caE This user is from outside of this forum
                    evan@cosocial.caE This user is from outside of this forum
                    evan@cosocial.ca
                    wrote on last edited by
                    #27

                    @julian @silverpill the HTML discovery tf doc is filling in. There's still a lot to do but maybe that's a good place to ask questions.

                    ActivityPub Discovery

                    favicon

                    (swicg.github.io)

                    evan@cosocial.caE 1 Reply Last reply
                    0
                    • evan@cosocial.caE evan@cosocial.ca

                      @julian @silverpill the HTML discovery tf doc is filling in. There's still a lot to do but maybe that's a good place to ask questions.

                      ActivityPub Discovery

                      favicon

                      (swicg.github.io)

                      evan@cosocial.caE This user is from outside of this forum
                      evan@cosocial.caE This user is from outside of this forum
                      evan@cosocial.ca
                      wrote on last edited by
                      #28

                      @julian @silverpill no recos for consumers yet, but: I'd start with content negotiation, then Link headers. From there, fallback to <link> elements in HTML. Last recourse, try Webfinger, especially for non-HTML resources like images.

                      1 Reply Last reply
                      0
                      • kariboka@social.harpia.redK kariboka@social.harpia.red
                        @julian @evan @silverpill like node info or host-meta?
                        mro@digitalcourage.socialM This user is from outside of this forum
                        mro@digitalcourage.socialM This user is from outside of this forum
                        mro@digitalcourage.social
                        wrote on last edited by
                        #29

                        Hi @kariboka @julian @evan @silverpill,
                        I read page, not host. Please refrain from idiosyncratic or obsolete legacy.

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        • Login

                        • Login or register to search.
                        Powered by NodeBB Contributors
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Popular