I just had that problem when you browse to a Mastodon post and ⭐️ it, or try to follow someone. The choreography is clumsy, and the kind of thing that will hinder mainstream adoption of ActivityPub.

acct is IANA official and used behind the scenes with webfinger. It’d be dead-simple to enable browsers looking up an app to handle acct: URLs: an ActivityPub client.

It’s trickier to think of how to handle posts, given the discussion about Lemmy/Mastodon interop… and the ActivityStreams spec has a dozen object types! But I think I’m going to want only as many clients as necessary, and one sounds great, so I’m interested to hear what people are thinking at an infrastructure level

  • SheeEttin@programming.dev
    link
    fedilink
    English
    arrow-up
    38
    arrow-down
    3
    ·
    10 months ago

    I don’t have an answer for you, I just want to tell you that the plural of schema is schemata.

    • S410@lemmy.ml
      link
      fedilink
      English
      arrow-up
      28
      arrow-down
      2
      ·
      10 months ago

      This is the evilest, worstest, and most upsetting thing I’ve read all day

    • kakes@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      12
      ·
      10 months ago

      Huh, I had no idea. Looked it up, and apparently both “schemata” and “schemas” are accepted, but I kind of prefer the former.

      • Excrubulent@slrpnk.net
        link
        fedilink
        English
        arrow-up
        8
        ·
        10 months ago

        Yup, you can do this for any loanword with unusual pluralisation. You can either use the plural form from the source language or from English.

        Octopi can also be octopusses for instance, but some people will tell you that’s wrong. Ultimately really, if your language is accepted and nobody is confused, it’s valid. The rules really aren’t as concrete as many people seem to believe.

          • Excrubulent@slrpnk.net
            link
            fedilink
            English
            arrow-up
            1
            ·
            edit-2
            10 months ago

            I would say try it, and you’ll find without a lot of context cues, most people won’t understand you. Language is fundamentally about communication, so the measure is not whether it conforms to some rote form but whether it is effective at conveying an idea. I would say based on that, octopodes is wrong.

          • Excrubulent@slrpnk.net
            link
            fedilink
            English
            arrow-up
            4
            ·
            edit-2
            10 months ago

            That’s a theory based on the origin of the word, but nobody says that and if you tried to use it to communicate that idea, most people wouldn’t understand what you were talking about. So under a descriptive model of language, no, it isn’t octopodes. It’s only right if it works, and you can’t dictate language rules based on some preconceived idea of what is “correct”. Language is negotiated, not mandated.

        • halcyoncmdr@lemmy.world
          link
          fedilink
          English
          arrow-up
          2
          arrow-down
          1
          ·
          10 months ago

          For Octopus… Octopi is just plain incorrect, it assumes an incorrect loanword origin, even if it is the most common pluralization used.

          Octopus does not come from Latin which would result in octopi. It comes from Greek, so the correct plural should be octopodes.

          The English standard pluralization would still be Octopuses though, and most comprehensible all around without having to explain the whole thing to a new person. In the end it’s all about being understood over anything else.

  • Skull giver@popplesburger.hilciferous.nl
    link
    fedilink
    English
    arrow-up
    8
    ·
    10 months ago

    ActivityPub uses the acct URI to kickstart itself and then uses LD-JSON to span the network. The JSON contains fields and lists that can be dynamically expanded into whatever representation you need, with default schemas ready for use through ActivityStreams.

    I think it’s difficult to set up a URI standard for ActivityStreams objects because there is no standard identifier, nor is there a guarantee that these identifiers will be URI-safe. Objects do contain references to (unique) URLs that identify them, but the data is linked either by value (written out completely) or as URLs.

    Setting up a URI scheme can be difficult to do comprehensively. How do you represent a link to a repost of an edit of a Location object? You can’t exactly expect the URL to indicate the type, so you’ll probably end up with “ap:server.com/1234”, but at that point you’re leaving out the important part (“where do I go to fetch this object”). You can’t just assume that there are standard endpoints because ActivityPub doesn’t standardise any. Soms apps break on showing Lemmy content for this reason; they were written for Mastodon and Mastodon alone, so their URL generation breaks.

    I think an URI scheme would just become one of those unimplemented or useless specifications. It would only distract from what I consider to be the much better solution: fixing up and implementing ActivityPub’s client-server protocol.

    The CS protocol lacks important things (like “how do I log in”), but it exposes ActivityPub directly. Your server will expose a bunch of lists (timelines? communities? Up to the server!) and all the app needs to do is render those. Dig down a level and you get a bunch of objects; posts, notes, comments, whatever you can think of, and they too can be rendered by the client in any way you may want.

    The protocol is rather freeform but importantly, the server takes care of any references and dereferencing. Clients shouldn’t need to deal with that mess of they’re connected to a server that handles everything for them already.

    You can write a super generic ActivityPub CS client that operates somewhat like a file browser, and then it should work with any type of ActivityPub content. A smarter app could detect the type of server responsible for managing certain things (i.e. when you’re following a Lemmy community, treat posts in it as such, and not as a flat timeline), and the protocol extensions that every server adds should help with that.

    The only limitation, in my opinion, is the fact that so few servers actually implement the ActivityPub CS protocol, and that in turn there are only a few applications that make use of it. I think this comes down to the vagueness of things like “how do I tell whay user this is in a standardised way” and if we can improve that part of the protocol, we may be able to get the “one single super app” for ActivityPub.

    • JoeGermuska@midwest.socialOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      10 months ago

      Thanks for the thoughtful response.

      You can’t exactly expect the URL to indicate the type

      Yes, this seems like one of the bigger hitches. I’ve never investigated, but I wonder if the git+ssh plan is formalized, and whether it is an option

      A smarter app could detect the type of server responsible for managing certain things (i.e. when you’re following a Lemmy community, treat posts in it as such, and not as a flat timeline), …

      Seems a mistake to me too imagine that the future of ActivityPub is servers limited to specific certain content types?

      Need to think more about the client/server parts of your post, but again, thanks for taking the time

        • JoeGermuska@midwest.socialOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          10 months ago

          I’ve been thinking a lot about the modality differences between microblogging and forums, and still working out my thoughts, but I definitely agree that generic solutions end up failing everyone.

          I’d like to believe that today’s practice isn’t yet so cemented that we can’t aspire to better. I think there’s a lot of interop work even among conceptually aligned projects – there are a couple of FEPs i haven’t digested yet, eg FEP-1b12: Group federation (as well as, I just found, one about URLs)

          I think the targets I’m looking for are a unified feed that can fan out to specialized clients for detail, and a system that embraces the power of links with minimal friction. EDIT oh, and maybe something that makes it easier to follow specific people across different modalities without having to rediscover them – although maybe that’s adjacent to the topic of this thread