idk where to really put this (might turn into a blog post later or something). it’s what you might call a “hot take”, certainly a heterodox one to some parts of the broader #fediverse community. this is in response to recent discussion on “what do you want to see from AP/AS2 specs” (in context of wg rechartering) mostly devolving into people complaining about JSON-LD and extensibility, some even about namespacing in general (there was a suggestion to use UUID vocab terms. i’m not joking)

1/?

  • infinite love ⴳ@mastodon.socialOP
    link
    fedilink
    arrow-up
    1
    ·
    2 months ago

    when #ActivityPub was being standardized alongside AS2 it basically had two compelling reasons for what would become the #fediverse to adopt it:

    • it was built on AS2, which was an evolution of AS1, which was already being used. so it wasn’t hard to make the jump.

    • it made followers-only posts possible, because while atom feeds could do this, it was wildly inconvenient to actually do it that way. posting something private to an inbox is a lot simpler, no juggling access control tokens.

    6/?

    • infinite love ⴳ@mastodon.socialOP
      link
      fedilink
      arrow-up
      1
      ·
      2 months ago

      but beyond that, what does #ActivityPub actually do for #fediverse as a “network” “protocol”? basically nothing. you have a basic mechanism for delivering activities directly to subscribers, but no specified shape or structure for that payload. and you still need a lot of other specs to end up with something that talks to the “network”. even with AS2 vocab, you need more vocab extensions to express things you want to.

      simply put, AP is not enough for a “protocol” to build a “network”.

      7/?

      • Darius Kazemi@friend.camp
        link
        fedilink
        arrow-up
        1
        ·
        2 months ago

        @[email protected] This is related to my recent-ish realization (which I always knew on some level but never formulated explicitly) that AP simply does not have much to say about the mechanics of federation. And that there is basically nowhere that federation is defined; it is pretty much left as an implementation detail for the author of a server to figure out

      • infinite love ⴳ@mastodon.socialOP
        link
        fedilink
        arrow-up
        1
        ·
        2 months ago

        but before you build a “protocol” for a “network”, consider: what even is a “network”, in this context? and, here’s the hot take: do you even want that kind of “network”? do you want a separate reified #fediverse network?

        because the answer that #ActivityPub gives is actually a different one. There is no “AP network”, because AP as a protocol is not enough to build a concrete network. it is intended to provide, and exists in context of, the larger #Web.

        8/?

        • infinite love ⴳ@mastodon.socialOP
          link
          fedilink
          arrow-up
          1
          ·
          2 months ago

          this is the fundamental divide between #fediverse thinking and #Web thinking, where #ActivityPub straddles the line between both.

          i’ve seen it said that the “open-world assumption” at the foundation of the Web is actually an undesirable thing for a “social networking protocol”, and as a consequence, specs built on that open-world assumption are “completely unsuitable” for that “protocol”.

          but do we need a “social networking protocol”? do we even need “social networks” in the first place?

          9/?

            • Michael T. Bacon, Ph.D.@social.coop
              link
              fedilink
              arrow-up
              0
              ·
              2 months ago

              @trwnh

              I want fedi folks to start thinking about commons instead of getting hung up on stuff that’s basically warmed over “the cathedral and the bazaar.”

              All functional commons involve inclusion and exclusion. They are neither purely closed nor open. They are variously open or closed depending on the combination of who you are and what you want to do.

                • infinite love ⴳ@mastodon.socialOP
                  link
                  fedilink
                  arrow-up
                  1
                  ·
                  2 months ago

                  @[email protected] In other words, a “protocol” needs to know everything there is to know, and it is undesirable to have unknowns. Contrast with the viewpoint that it’s perfectly fine to have unknowns, and in fact, you can expect unknowns by default. You’ll never have a complete view of the universe.

                  • Michael T. Bacon, Ph.D.@social.coop
                    link
                    fedilink
                    arrow-up
                    1
                    ·
                    2 months ago

                    @[email protected]

                    In that regard, I have to say that I think I’m still in a little bit of a grey area. The power of AP is in the fact that it can socialize a wide range of things, and I don’t think that world should be closed in advanced.

                    At the same time, a protocol needs a set of sub-standards at least (lots of old IETF protocols had CAPABILITY commands) that let you figure out which specific closed world you’re operating in.

          • infinite love ⴳ@mastodon.socialOP
            link
            fedilink
            arrow-up
            1
            ·
            2 months ago

            to build the #fediverse as its own “social networking protocol” then seemingly requires that we instead go with the closed-world assumption, contrary to the #Web

            it requires ahead-of-time communication and coordination, where implementers need to be willing and available to talk to any other implementer, and this load grows with every new implementer.

            it requires you to be aware of other extensions, present and future, because your extension might conflict with someone else’s extension.

            10/?

            • infinite love ⴳ@mastodon.socialOP
              link
              fedilink
              arrow-up
              1
              ·
              2 months ago

              the way extensibility works in a closed-world #fediverse is that “every implementer talks to every other implementer”. or maybe there is a central registry of extensions that everyone submits to their authority, as stewards of the “protocol” that is used to build the “network”. this trades out the n:n relation between implementers and other implementers, for an n:1 relation between implementers and the central registry.

              the way extensibility works in an open-world #Web is you just do it.

              11/?

              • infinite love ⴳ@mastodon.socialOP
                link
                fedilink
                arrow-up
                1
                ·
                2 months ago

                the challenge in closed-world systems is how to scale communication and coordination as the number of implementers grows. without a central authority, it almost inevitably leads to power coalescing in the hands of the few most popular or largest implementations, who become the “de facto” standard and get to mostly do what they want, and everyone else mostly has to follow if they want to be compatible.

                sound familiar? it should, because this is the model that the #fediverse follows today.

                12/?

                • infinite love ⴳ@mastodon.socialOP
                  link
                  fedilink
                  arrow-up
                  1
                  ·
                  2 months ago

                  indeed, the #fediverse is more closed-world than open-world. you see this in the so-called “rejection” of json-ld among presumably the majority of fedi implementations. because for the most part, AS2 lets you ignore json-ld. it only matters for extensibility, and (specific criticisms of json-ld aside) json-ld also mostly allows you to ignore it.

                  so why do people still complain about it?

                  well, there is the concept of “context” in json-ld, which represents shared understanding.

                  13/?

                  • infinite love ⴳ@mastodon.socialOP
                    link
                    fedilink
                    arrow-up
                    1
                    ·
                    2 months ago

                    when i say “john knows sally”, there are several ambiguities. we can solve ambiguities by disambiguating. one way to disambiguate is to be explicit about what any term or symbol means. one way to be explicit is to use uniform identifiers.

                    in particular, http/https uris have some convenient properties

                    • they have authority, so you can qualify an id based on who’s assigning it.
                    • you can use the authority component as a namespace
                    • you can fetch the uri and it might return something useful

                    14/?

              • Darius Kazemi@friend.camp
                link
                fedilink
                arrow-up
                1
                ·
                2 months ago

                @[email protected] Hmmm. In the open web we have a thing called a browser vendor whose job is de facto to act as the choke point where they are the ones who have to be aware of every implementation. Then as devs we get to black box it as “this is what web browsers support”.