idk where to really put this (might turn into a blog post later or something).
-
trwnh@mastodon.socialreplied to trwnh@mastodon.social last edited by
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 withwe 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.socialreplied to trwnh@mastodon.social last edited by
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.socialreplied to trwnh@mastodon.social last edited by trwnh@mastodon.social
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.socialreplied to trwnh@mastodon.social last edited by
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.socialreplied to trwnh@mastodon.social last edited by
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.socialreplied to trwnh@mastodon.social last edited by
what json-ld does, or what it allows you to do, is explicitly declare a `@context` 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.socialreplied to trwnh@mastodon.social last edited by
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.socialreplied to trwnh@mastodon.social last edited by
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.socialreplied to trwnh@mastodon.social last edited by
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.socialreplied to trwnh@mastodon.social last edited by
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.socialreplied to trwnh@mastodon.social last edited by
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.socialreplied to trwnh@mastodon.social last edited by trwnh@mastodon.social
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.socialreplied to trwnh@mastodon.social last edited by
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.socialreplied to trwnh@mastodon.social last edited by
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.socialreplied to trwnh@mastodon.social last edited by
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/?
-
pfefferle@mastodon.socialreplied to trwnh@mastodon.social last edited by
@trwnh you should definitely use a blog
-
trwnh@mastodon.socialreplied to trwnh@mastodon.social last edited by
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.socialreplied to pfefferle@mastodon.social last edited by
@pfefferle managing blogs is so annoying though
-
trwnh@mastodon.socialreplied to trwnh@mastodon.social last edited by
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