this post was submitted on 24 Sep 2024
1 points (100.0% liked)
Fediverse stuff
0 readers
1 users here now
This is a magazine dedicated to posts about the Fediverse and things related to it. This is a MBin magazine, but you can follow it from Lemmy or Piefed as well. If you want to post specifically about Mbin feel free to post into !mbinmeta@gehirneimer.de
Recommended magazines
Rules
- Please stay on topic, if it's off-topic please write [META] in the title. Please report off-topic posts if you see them.
- Try to avoid drama related posts, for this type of content you can go to !fediverselore@lemmy.ca
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
which is to say: the primary reason that #ActivityPub is used (to the extent you can say it is being used at all) in the #fediverse is mostly historical.
fedi grew out of a long line of open protocols, and before AP was adopted, it was at the point where people primarily used "activity streams" as their vocabulary and data model, stuffed into atom feeds. atom feeds don't do private posts unless you make an entirely new access-controlled feed, possibly with a token of some sort. hence, AS2.
5/?
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/?
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/?
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/?
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/?
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/?
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/?
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/?
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/?
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
14/?
so let's say john is example.com/john and sally is example.com/sally
what do we use for "knows"?
well, there are multiple senses of the word "knows":
we mean definition 1. so we might use example.com/vocab/knows/1
now we have the statement:
<example.com/john> <example.com/vocab/knows/1> <example.com/sally>
this is unambiguous, but we can go one step further: we can provide definitions at the uri
15/?
say some random person sees the statement above. they don't know who john or sally are, and they don't know what "knows" means in this context.
well, if we do a little work upfront, they actually can know what all of these terms mean, without ever asking us directly
we put a resource on example.com for each of these terms, and each resource describes the subject of that identifier -- it is a "resource descriptor".
the resource for knows/1 can define itself explicitly with a schema
16/?
so at minimum we have the following schema for knows/1
- how to represent it in plain text: "knows"
- how to define it: "is aware of the existence of"
the RDF Schema gives us
label
andcomment
, as defined by the RDF Schema.- :label "knows"
- :comment "is aware of the existence of"
but we need to know what "label" and "comment" mean as well! not to worry, we qualify those terms with the rdfs namespace:
- rdfs:label "knows"
- rdfs:comment "is aware of the existence of"
17/?
@trwnh@mastodon.social 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".
@trwnh@mastodon.social
<gestures to the sign>
https://social.coop/@MichaelTBacon/110634358031380559
Non-corporate/non-VC social media really needs to stop hating on "walled gardens" and start thinking about how you mind the gate that lets you into the garden and who gets in and who gets out.
If this exclusion still seems bad, start with "fascists" and then work outward from there.