• southerntofu@lemmy.ml
    link
    fedilink
    arrow-up
    8
    arrow-down
    1
    ·
    3 years ago

    So i don’t agree with everything the original author said, but i don’t agree with all you said either. The thing is SMTP is stagnating because the mailboxes we use in practice is controlled by a cartel of 4-5 megacorporporations, but at least it’s all specified even though in practice you need to deal with implementation-specific edge-cases.

    For XMPP the ecosystem is far from stagnating but lacks resources. There’s tons of specs and it’s hard to figure out the correct way to do things on your own, but fortunately there’s projects like modernxmpp.net to help you out, and if you ask in chatrooms people will point you in the right direction. Also, XMPP from the start is explicitly conceived to be extensible with a tree-like data format (XML) so it’s easy to build pretty much anything on top and people are doing it (realtime code collaboration, video conferencing, social networking etc).

    Yes both protocols have downsides but they nailed something that ActivityPub didn’t: they have clearly-defined use-cases. ActivityPub/ActivityStreams is super generic and that’s really cool in the spirit of a generic server and specific clients using the C2S protocol, but now we have the worst of both worlds where each use-case employs different data types in a seemingly-random fashion (so people will focus on interop with a specific implementation rather than defining a sub-specification for a specific usecase), and client apps use custom APIs all over.

    This situation is worse for users because the protocol is intended for abstract content but all implementations are very opinionated (yet unspecified), so as a user you need different accounts on Mastodon, Lemmy, Peertube, Mobilizon, Funkwhale, PixelFed, and soon (hopefully) Gitea. How do i follow another user across all those services? Sure we could use rel=me links but who does that on the fediverse? In email/XMPP world at least i have a consistent address no matter what client i use, and there is a clean separation of concerns between clients and servers: the server provides abstract features (storage/federation) following specifications (roster, vCard, MIX, PEP, MAM etc) and the client implements the application logic relevant to the use-case, which is also defined by a specification (eg. MUC, microblogging over XMPP…).

    I think the ecosystem/situation could be vastly improved in XMPP land in some regards, but by all means the model is vastly better than what the fediverse is doing in practice so far (not necessarily on paper). To elaborate on areas which could be improved:

    • more clearly organizing specifications (and having visualizations of dependencies)
    • clearly separating abstract server specifications and client usecase specifications
    • having test suites for every single specification: this is already possible for server-side using scansion but there is no corresponding client-test utility
    • more UX-focused workshops and quality/usability testing, such as Snikket project has been doing

    I personally have strong opinions beyond these points, but i believe any federated protocol would benefit from at least those few points. If you can’t test for client/server correctness, can’t understand how specifications interweave at a glance, and don’t have a community that’s focused on UX, i don’t think it’s gonna be very successful.

    To be clear, i’m not dismissive of the fediverse ecosystem (or matrix ecosystem for that matter) there’s a lot of cool innovation happening in there. But i can’t help but notice that they tried to address some implementation issues with newer protocols, and came with new protocol/implementation flaws in the process. And now we have two more protocols to interop with :P

    • Amicese@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      3 years ago

      Sure we could use rel=me links but who does that on the fediverse?

      The people that utilize rel=me for its use case.

      Also what’s rel=me?

      • southerntofu@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        3 years ago

        Also what’s rel=me?

        It’s just a semantic tag you add to a link on an IndieWeb profile (h-card) to indicate other addresses which describe the same person. So basically if lemmy implemented basic microformats2 (semantic classes for HTML, part of indieweb ecosystem), you could have an “alternative links” setting in your Lemmy profile that would link to your XMPP, email, mastodon or whatever other addresses. Ideally, we wouldn’t even need so many accounts/addresses for a single identity, but as an intermediate measure a multi-protocol client (or a s2s bridge/gateway like bridgy could enable you to subscribe to one person’s feed across all protocols.

        The indieweb is based on a POSSE principle where your own website is the original source of truth for content but is socially-aware of both: what you republished elsewhere (eg. a twitter post) and replies coming in from elsewhere (eg. a reply on Lemmy). The rel=me link is one of the semantic foundations that enables this. That’s just one approach to identity which places the web front and center, but we could also mention other approaches:

        • domain name as identity (DNS, .onion)
        • cryptographic keypair as identity (PGP, SSH, ZOT nomadic identities)

        The rel=me specification addresses the “discoverability” problem. Both DNS and PGP can store arbitrary data and could be used to advertise different identities however i don’t know of standard/specified ways to do it. Something else to consider about digital identities is that you sometimes want different inboxes (collections in ActivityPub parlance) under the same identity, like some people have bank@mydomain and ecommerce@mydomain email addresses. I think that’s a rather compelling argument for domain name as identity but that’s a complex topic with a lot of nuance (and it’s not incompatible with backing your domain name with a cryptographic identifier like the GNU Name System does).

        I’m happy to elaborate on certain points, or to provide detailed links (which i did not do in this reply sorry, but any web search engine should be able to help you out) if you ask for it :)

    • rysiek@szmer.info
      link
      fedilink
      arrow-up
      1
      ·
      3 years ago

      Sure we could use rel=me links but who does that on the fediverse?

      Plenty of people, including yours truly (note the green checkmarked link to my blog in my profile). I keep seeing such green-checkmarked links in profiles, so this is not just a couple of people. It’s a thing.

      • southerntofu@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        3 years ago

        Oh that’s pretty cool, thanks for sharing! I was not aware this had caught on so please don’t take my initial comment as a sarcastic dismissal but rather as a lack of awareness :)

        I just followed the link to your blog and i really like the design. Also i liked what i read, especially about contract-based dependency management. I myself had some thoughts (just raw notes with lots of typos/mistakes not a published articles yet) on the topic (about how to specify API/CLI contracts as part documents readable both by humans and by machines) and i’d be thrilled to discuss it further and maybe actually start implementing something (i’m part-time hacking on a SSG, a DIY CI/CD system, and a selfhosting distro and i could really use some specification/testing system that’s not overtly complex).

        Hope to see you around on IRC/XMPP maybe?

        • rysiek@szmer.info
          link
          fedilink
          arrow-up
          2
          ·
          3 years ago

          Oh that’s pretty cool, thanks for sharing! I was not aware this had caught on so please don’t take my initial comment as a sarcastic dismissal but rather as a lack of awareness :)

          <3

          I just followed the link to your blog and i really like the design. Also i liked what i read, especially about contract-based dependency management.

          Aww, thank you!

          I myself had some thoughts (just raw notes with lots of typos/mistakes not a published articles yet) on the topic (about how to specify API/CLI contracts as part documents readable both by humans and by machines).

          Perhaps we need a Lemmy community for that kind of stuff? 🤔

          Hope to see you around on IRC/XMPP maybe?

          Oh hah, I used to (I even ran several XMPP servers back in the day). Now I am on Matrix, as this is just the easiest for me. And fedi, of course.

          • southerntofu@lemmy.ml
            link
            fedilink
            arrow-up
            0
            ·
            3 years ago

            Perhaps we need a Lemmy community for that kind of stuff? 🤔

            I don’t think it’s exactly the right tool for the job, but it’d be better than nothing. I’m personally interested in tooling that would help bridging the gap between curated info (like a wiki), long-lived discussions (mailing-list/forum) and instant messaging (chatrooms), but i don’t know any tool that would help with that yet.

            Oh hah, I used to (I even ran several XMPP servers back in the day). Now I am on Matrix, as this is just the easiest for me. And fedi, of course.

            Just curious: how is Matrix easier as a sysadmin? I’ve personally heard quite opposite feedback. Do you have maybe a bifrost instance on hackerspace.pl that i could reach you through? Otherwise i’ll try through a public instance :)

            Take care <3

            • rysiek@szmer.info
              link
              fedilink
              arrow-up
              1
              ·
              3 years ago

              Just curious: how is Matrix easier as a sysadmin?

              Easy: I don’t run it. Simplicity for me comes not from how easy it is to sysadmin it, but how many communities I am a part of use it. IRC, as much as I hate to say it, is slowly dying away (FreeNode shitstorm did not help here), and XMPP is not great at creating community spaces. So, Matrix it is for me.

              Do you have maybe a bifrost instance on hackerspace.pl that i could reach you through?

              No clue what bifrost is.

              Otherwise i’ll try through a public instance :)

              That will probably work best.

              • southerntofu@lemmy.ml
                link
                fedilink
                arrow-up
                0
                ·
                3 years ago

                XMPP is not great at creating community spaces

                Yeah i agree. I started talking/drafting about XMPP Spaces a few months back. Hopefully i can find time to implement that in a client/server sometime :)

                I added you on Matrix via aria-net.org gateway. bifrost is a matrix<->XMPP gateway but unfortunately the official matrix.org instance is really bad bad bad but from what i hear the aria-net.org fork runs much better…i guess we’ll see!