While I acknowledge Evan’s proposed theory, I respectfully hold a different perspective. In my view, “adding a friend” aligns more with Facebook’s approach, whereas “following someone” resonates with Twitter’s model. I believe that this misconception has inadvertently allowed Facebook to retain dominance in the social web landscape. For further context, please refer to the discussion above.
A Follow is more like a subscription. It expresses an interest (esp. if the actor isn’t a Person). I would be in favor of actors having (meaningful) relationships, as that is more corresponding to real life.
If you’re looking for how to create a bidirectional, opt-in friend relationship with ActivityPub, look no further than the section on relationships in Activity Streams vocabulary:
Section 5.2.1 shows the typical activities for establishing the relationship.
Also, I don’t think that saying that “add me as a friend” is a term that’s used popularly for both unidirectional and bidirectional relationships rises to the standard of a “theory”.
I mistakenly thought Melvin was using it for one case and not another. I explained the mistake. I’m sorry for the confusion my explanation caused.
During our SWWG discussions, the concept of ‘Friending’ emerged but was, as I remember, deferred for a future update while the focus was on follows. It’s worth noting that a two-way follow can somewhat resemble a friendship.
In my opinion, Facebook’s explicit feature of forming friendships offers them a significant edge. I’ve always advocated for the social web to revolve around people, friendships, and connections. While this sentiment might resonate more widely outside of the W3C, within it, the microblogging use case appears to hold more sway.
The wider question I have is do we want to have an alternative to facebook in the social web?
my main interest in having a “friend” semantic relationship is that it allows alternative approaches to spam, moderation, abuse, and even discovery. having a proper social graph with actual semantic meaning (“knows”, “friend”, etc.) could be used to, say, only allow interactions within a certain distance of you.
from my talks with people, users, developers, etc. on the foundkey/akkoma side of fedi, there is a great appetite for something like this. akkoma’s “bubble timeline” feature may evolve into “bubble federation” in which degrees of distance between instances control which messages might be prioritized or dropped. i’d like to see this being applied to people instead, as i don’t believe strongly in the “instance” model (which leads to context collapse, nation-statification, and many other issues) and would rather see people curate distinct “personal publishing” spaces (blogs, etc) and “public/private discussion” spaces (forums, etc). but doing so in the current environment is a recipe for being plagued by potential bad actors while not knowing how to find potential good actors.
example: your software tracks the “degree” of each actor/profile it encounters, based on “knows” or “friend” relationships. you tell your software to only show you posts of people within 3 degrees of you. conversely, you can browse the social graph and find 2nd or 3rd degree connections you may be interested in following (or friending) for yourself.
is this normative, or is it missing a non-normative label?
So, I think there’s a subtle difference between “friend” as a topological structure, namely “bidirectional opt-in relationship with mutual follow,” and “friend” as a qualifier for a relationship, parallel to “cousin”, “employee”, or “neighbour”.
I think both are really important, but they have different implementations.
I did research as part of my graduate studies in human-computer interface at Georgia Tech on surfacing personal relationships in the Mastodon UI. I think it’s really important; I’m here to make new friends and expand my existing friendships.
5.2 is an implementation note and isn’t marked as non-normative because it just provides further explanation of structures defined elsewhere in the document.
5.2.1 is marked non-normative, since it does sketch out a protocol.
whoaaa, that looks really interesting!
Nice. This is quite a lot like the UI I built for solid 0.7 during the SWWG. On the top right I had “friends”.
Just to add to the discussion - what we did in the Nomad and older Zot protocols was to relegate “friending” and “following” to the dustbin. For a general purpose social network which can implement any model of interaction, these both reduce to declaring or requesting permission to do something which isn’t permitted to the general public. Our projects implement the same thing for the fediverse. Humans like to have one button to initiate these actions and indicate that you and I are connected somehow, but the underlying permission are much more fluid. I can grant you permission to receive my posts, but not comment or send DMs. I can grant you permission to see who my other connections are - or not. Permission to upload files to my space. Etc. So in our case a Follow action doesn’t necessitate that I am going to send you my posts. It is a request for me to send you my posts. I get to decide whether I am going to do so. All of the different forms of social media interactions (Twitter-like, Facebok-like, pages, blogs, groups, private groups, DMs, media sharing, etc.) reduce to different set of permissions granted. Or put another way, if you start with a flexible permission layer, you can build any kind of social networking tool or interaction on top of it.
In our universe a Follow activity means nothing except “the permissions I’ve granted to you have changed somehow” and are different from those granted to the general public. And if this request is initiated over Nomad (ActivityStreams with an alternate delivery engine) , we send you a list of those permissions so that you are aware of what you can and cannot do where our relationship is concerned. We’re even treating moderation as a permission (you have permission to post/reply without being moderated) and another permission which allows you to moderate my content.
So the bigger question is if we really really want to build a new kind of social network where anything is possible and different kinds of interactions and “rules” and social spaces with completely different features and policies can all co-exist together; or still try to force everybody into a Twitter model with all of its toxic spam and abuse patterns. I don’t personally see a bright future for the latter.
I fully understand that I’m in the minority here (always have been) but what I set out to do was the former.
@macgirvin really good points. It shows that there’s multiple ways of doing things. It’s great because the user gets more choice. Though I guess possibly that can be fully realized with single sign-on.
What about the successful workflow that has been demonstrated and popularized by facebook. Do we have anything comparable?
It was interesting that we (Mistpark or Friendica at the time) and Diaspora both came up with the same permission model about the same time - based on Facebook style interactions. The Diaspora folks had the best name for it - they called it a “sharing” button. Unfortunately that was the only permission they implemented, but that’s another topic for another day.
As opposed to the Twitter follower model (I’m now stalking you), it indicated that I’m allowing you to see some of my protected content and I am willing to share it with (deliver it to) you. You may or may not reciprocate. It’s almost the exact opposite of the Twitter model.
When you are are trying to support the half of human population that was born with a different dominant chromosome, stalking is the wrong model. You don’t walk up to a girl in a bar and tell her you’re now following her. You say hello and offer your phone number or email (introduce yourself and indicate that you’d like to get to know her). She decides whether or not to initiate a closer involvement and grant that permission. It isn’t your choice. In Mistpark we called these activities “introductions”.
We implement this workflow in ActivityPub using Follow activities but usually requiring an Accept before the relationship is solidified. It’s messy because the Twitter semantics were forced on us by the protocol, but we do try and smooth over the differences so it still works for us and also isn’t completely alien to Twitter folks. If you follow me and I reject it, you’re not really following me because I’m not sharing anything with you.
(We also support single sign-on; and yes it is critical to making permissions work - especially media permissions).
[edit: and this workflow is present today in Hubzilla and streams. Also the half-dozen archived Zot/6 projects. It may also still be available in Friendica - I haven’t looked.]
That is excellent. It’s the feature in the social web that I have found to-date to have the most utility.
Do you have SSO via a trusted third party, or via PKI?
It strikes me that this is a way to bring a lot of the balkanized social web together.
words do matter and sophisticated, differentiating language that is adapted to the underlying technology but is also interpreted correctly by the average user might help build and use the social networks we want.
Thinking out loud and using placeholder words to try to make my thoughts more concrete: Take say the concept of RealFriending, linking digitally with somebody who is actually a dear friend in real life (say donated a kidney for me) and I want to keep in touch also digitally. I may want to keep that digital friendship relationship private or public. (PublicRealFriending vs PrivateRealFriending). Or “DigiFriending” somebody I’ve interacted with exclusively in the digital realm and we do feel like kindred souls, but they may be impostor on an entirely different scale than in real life (e.g. an LLM empowered data harvesting farm in some obscure location). Again you can have PublicDigiFriends and PrivateDigiFriends.
Or take the nuance of Following (which suggests adulation, endorsement) versus Subscribing which suggests “interest”. Again it is quite different as a public graph which sends various signals to the rest of the network versus private PubFollow, PrivFollow, PubSub, PrivSub etc).
Further you have the intimacy / availability dimensions. E.g. a relation that is asynchronous and private like an email or something real time, involving audio/video which may even indicate that “I am online and available to interact as if we are in the same room” - a sort of PermaFriend
I don’t know if there is some typology that can capture all these things with the nuance that they deserve but it feels that it would help build standards and platforms that more honestly and explicitly indicate what they all these networks are about. Besides the facebook and twitter dinosaurs it is worth looking also at things like discord and slack and the kind of online social networks they help generate.
As Mastodon is to Twitter
??? is to Facebook?
What is ???. Does Friendica aim to do that? Does Diaspora?
I’d like to make something in this space this is a legit rival to FB. If we had an interoperable standard plus a standard for single sign on, there could be a joint effort.
Adding this for reference: RELATIONSHIP: A vocabulary for describing relationships between people