1

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/?

you are viewing a single comment's thread
view the rest of the comments
[-] trwnh@mastodon.social 1 points 1 week 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/?

[-] trwnh@mastodon.social 1 points 1 week 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/?

[-] trwnh@mastodon.social 1 points 1 week 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/?

[-] trwnh@mastodon.social 1 points 1 week 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/?

[-] darius@friend.camp 1 points 1 week ago

@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 1 points 1 week ago

@darius@friend.camp yeah, this is complicated by every fedi thing being its own web browser :( and this is on top of it also being its own mail server... it just ends up doing both poorly.

[-] trwnh@mastodon.social 1 points 1 week 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/?

[-] trwnh@mastodon.social 1 points 1 week 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/?

[-] trwnh@mastodon.social 1 points 1 week 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/?

[-] trwnh@mastodon.social 1 points 1 week ago

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":

  1. is aware of the existence of
  2. is familiar with
  3. is having sexual intercourse with

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/?

[-] trwnh@mastodon.social 1 points 1 week ago

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/?

[-] trwnh@mastodon.social 1 points 1 week ago* (last edited 1 week ago)

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 and comment, 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 1 points 1 week ago

now at this point you're probably wondering what this has to do with social networking. and on a practical level, if you're just interested in building a "social networking protocol", this is mostly all extraneous.

the part that implementers have to deal with is the notion of "context" and, more specifically, how json-ld handles it, and even more specifically, what to do when two shorthand terms conflict.

remember, the open-world solution is namespacing. what does closed-world do?

18/?

[-] trwnh@mastodon.social 1 points 1 week ago

well, let's look at actor. in AS2 terms it refers to the entity that performed an activity. but in schema.org terms it refers to someone playing a role in a movie or other performance.

in a closed-world sense, you don't want to be aware of context. you don't want to have to deal with it. but even so, you still have an "implicit context" that you are using, based on how you define each term in your own understanding, what you hardcode into your software.

19/?

[-] trwnh@mastodon.social 1 points 1 week ago

what json-ld does, or what it allows you to do, is explicitly declare a @context@mastodon.social that is equivalent to your "implicit context".

this works fine if there is only one declaration that is shared exactly between two parties, but it gets complicated when the "implicit context" differs or isn't an exact match.

this means that there cannot ever be a singular #fediverse network, because the "implicit context" differs between each software project. the only guaranteed overlap is the AS2 one.

20/?

[-] trwnh@mastodon.social 1 points 1 week ago

but it's not like AS2 didn't think of this. they wrote in this requirement: https://www.w3.org/TR/activitystreams-core/#extensibility

> Activity Streams 2.0 implementations that wish to fully support extensions MUST support Compact URI expansion as defined by the JSON-LD specification.

note, you aren't required to implement all of json-ld. you just need to handle the bit where you can identify the equivalence between a uri and some arbitrary string.

but #fediverse mostly decided this is too hard, and ignore context.

21/?

[-] trwnh@mastodon.social 1 points 1 week ago

now there's a few thoughts i have here:

#fediverse culturally seems to ignore a lot of other things as well. they ignore http caching for example. they ignore http status codes like 301 Permanent Redirect. these requirements are arguably more important than context, and they still get ignored.

in fact, most fedi software is mostly just reimplementing Web browsers, but with what they consider to be the "bare minimum" of compliance. and the web they let you browse is smaller than the Web

22/?

[-] trwnh@mastodon.social 1 points 1 week ago

are these things part of the "protocol"? how far does the "protocol" extend to cover? because, as we established, #ActivityPub is not enough to build a fully functional #fediverse -- and a lot of extensions and additional specs are things that ought to be included in this "protocol", insofar as this "protocol" is desirable.

the other thought:

if you ignore things, that means there are cases you're not handling, losing out on robustness. ignoring context is to ignore shared understanding.

23/?

[-] trwnh@mastodon.social 1 points 1 week ago

so what do you actually lose out on when you ignore json-ld context?

you first have to fall back to the "implicit context", where AS2 terms are generally agreed upon, but nothing else is guaranteed.

take something like discoverable from mastodon. what does it mean? well, it means whatever is defined in the mastodon codebase and documentation. so we could represent that as http://joinmastodon.org/ns#discoverable or shorten that with a prefix. but if we do, then most #fediverse will choke on that.

24/?

[-] trwnh@mastodon.social 1 points 1 week ago

this is because #fediverse is ignoring context. the implicit context is that discoverable means <http://joinmastodon.org/ns#discoverable> but they don't know that. so they can't actually handle the extension in its fullest form.

what AS2 calls out as "full support for extensions" requires being able to identify this equivalence and handle it. again, fedi does... let's call it "partial support".

the "implicit context" is now a hardcoded but unstated requirement of this "protocol".

25/?

[-] trwnh@mastodon.social 1 points 1 week ago* (last edited 1 week ago)

which is to say: #fediverse software generally expects LD-aware producers to compact against their own "implicit context", but they don't always define that context. it's left undeclared and undefined. or it actually *is* declared, but if you give them their own expanded form then they'll not understand it.

it's like someone saying hey, when i say "knows", i mean "is familiar with"

and then you say "john is familiar with sally"

and they respond WTF? what does "is familiar with" mean?

26/?

[-] trwnh@mastodon.social 1 points 1 week ago

it's like... you literally just told me "knows" = "is familiar with", but because of your own ignoring of your own context, you can't handle me saying "is familiar with"?

in this way, as long as the #fediverse remains ignorant of context, they will remain fragile and without any sort of robustness in their "protocol".

the alternative they have is to extend the only context they share, which is the AS2 one. but this doesn't solve the problem. it just officially blesses a single term.

27/?

[-] trwnh@mastodon.social 1 points 1 week ago

if you want to turn "activitystreams" into a "protocol" then sure i guess you can do that

but why? what are the needs we're trying to address here? of what purpose is your "protocol"? social networking? you want a "social networking protocol"?

before you convince people that a "social networking protocol" is necessary, you have to convince people that a "social network" is necessary.

but more importantly, you are contrasting that "social networking protocol" against the "social Web".

28/?

[-] trwnh@mastodon.social 1 points 1 week ago

it is my personal belief that this whole "closed-world social network" vs "open-world social Web" thing is leading to a big disconnect that makes addressing people's needs harder.

because, to be on the "network", you neglect being on the "Web".

sure, your software might still publish your "posts" as Web resources, but that's it. you're not actually granted control or ability to manage Web resources for yourself.

and that's why #ActivityPub C2S is being neglected, among many other things

29/?

[-] trwnh@mastodon.social 1 points 1 week ago

i am personally more in favor of a "social Web" than a "social network".

what i want to do is make it easier for anyone to make a website, and to manage that website.

i want those websites to be able to link to each other in well-defined and clearly-understood ways.

i want to make friends and express myself to the fullest, in varying contexts on various websites, without context collapse.

but it feels like #fediverse is more interested in replicating the "social network" paradigm.

30/30

[-] trwnh@mastodon.social 1 points 1 week ago

addendum 31/30

there's a whole lot of things i could say about "how we get there" but the thread was getting long enough and i want to cut it off here and clean it up into a blog post or something, without drifting too far off the original topic which was to voice my thoughts about the divide itself

[-] oblomov@sociale.network 1 points 1 week ago

@trwnh@mastodon.social this was a fascinating read, thanks for sharing. Looking forward to the blog post.

I've had thoughts along those lines since I've started using Mastodon and getting familiar with AP, which I always saw as an extension of email and Usenet rather than a more general tool for the “social web” —and even for that it's being held back by the absence of a “content independent” AP server (AFAIK the only one in development is Vocata, and it still has some way to go).

[-] trwnh@mastodon.social 1 points 1 week ago

@oblomov@sociale.network yeah, there's the old "it's like email but for websites!" which isn't terribly inaccurate, but that's honestly more a consequence of "HTTP POST to ldp:inbox" than anything else in AP. the side effects for each activity kinda stray from that model and go into almost RPC-like territory. there's also some potential redundancy with HTTP verbs, but that's because HTTP verbs don't notify arbitrary audiences (although i guess they could do that with a header!)

[-] oblomov@sociale.network 1 points 1 week ago

@trwnh@mastodon.social actually what made me think of “extensions of email and newsgroups” was more the object structure, but on second thought that's more an ActivityStream characteristic than an ActivityPub one, although an actual implementation of the C2S part of AP would still fit the bill in some sense.

(Yeah, the lack of usage of DELETE and PATCH surprised me initially, but the fact it would have needed to also define how to propagate them partially explains it.)

[-] trwnh@mastodon.social 1 points 1 week ago

addendum 32/30

there's a separate thought experiment you could do about what it really takes for a "social networking protocol" because honestly you don't even need http. you can do "social networking" over xmpp or email or whatever. or invent your own way to send bytes over tcp/udp/whatever (inb4 xkcd)

seriously tho, newsletters and deltachat and movim and a bunch of other things show that you can do it

[-] blaine@mastodon.social 1 points 1 week ago

@trwnh@mastodon.social nice writeup! Just glancing, so without getting into detail, I think I agree.

This is perhaps my own bias in all of this, but it's interesting that one of the most-consistent aspect of Fedi implementations is their reliance on Webfinger.

I worked on that part because I didn't think the data format stuff really mattered that much, and at worst was going to be stifling. It was excluded from AP for political, http fundamentalist reasons, but [imho] is essential to the networks functioning.

load more comments (23 replies)
[-] trwnh@mastodon.social 1 points 1 week ago

now available in html form, uri not guaranteed to resolve forever https://trwnh.com/unstable/fedi-vs-web.html

@ anyone who asked for a blog post, this is next closest thing, i don't really have a proper blog set up and i kinda don't wanna think about it right now

[-] trwnh@mastodon.social 1 points 1 week ago

also i should mention since this is happening kind of simultaneously, this is not about the social web foundation's use of the terms "social web" and "fediverse", although the blog post did go live in the middle of me writing the thread which is a kind of irony i guess. another irony is that even though it's not about that, it could still be kinda about that. if nothing else, it demonstrates that "social web" and "fediverse" are not synonyms.

[-] pfefferle@mastodon.social 1 points 1 week ago

@trwnh@mastodon.social ☺️😍

[-] polotek@social.polotek.net 1 points 1 week ago

@trwnh@mastodon.social thanks for writing this thread. It sparked a lot of thoughts for me.

I do have one response in the form of a question. What's stopping you from just doing the thing you want? You don't really need permission.

[-] trwnh@mastodon.social 1 points 1 week ago

@polotek@social.polotek.net me personally? i'm not much of a coder, i'm way better at designing a system and describing how it should work, not so much actually building it. although i am in talks with some folks who seem interested, so uh... maybe check back in like 5 years? 😁 or heck, possibly even two if we're lucky!

[-] dmitri@social.coop 1 points 1 week ago

@trwnh@mastodon.social @polotek@social.polotek.net I'd certainly love to hear more.

[-] polotek@social.polotek.net 1 points 1 week ago

@trwnh@mastodon.social good luck

[-] TritTriton@shelter.moe 1 points 1 week ago
[-] trwnh@mastodon.social 1 points 1 week ago

@TritTriton@shelter.moe idk but it doesn't seem like it at first glance. i'm thinking more about something that shows up in a web browser, combined with another thing that lets you author and manage web resources more easily than current tooling

[-] trwnh@mastodon.social 1 points 1 week ago

@TritTriton@shelter.moe it's more like "ugh can we go back to blogs and forums and then build from there? we took a wrong turn with the rise of social media"

load more comments (58 replies)
load more comments (72 replies)
load more comments (72 replies)
this post was submitted on 24 Sep 2024
1 points (100.0% liked)

News from fediverse

0 readers
20 users here now

founded 9 months ago