Closed nichoth closed 1 year ago
If user Bob wants to revoke friendship — could encrypt a message "to" Alice, while also removing Alice from his own list.
In a broader sense this is about how we want to do private messages between users.
You could just do this as a one-sided operation — Bob removes Alice from their friend list, and stops loading Alice's posts, and stops sharing his own posts with Alice.
That is a scenario of a "follower". Alice is sharing to Bob, but Bob is not sharing to Alice. However, unlike existing social media, followers must be accepted by Alice (the followee).
Maybe that is a better way to organize these thoughts — just think about following. You can still get privacy, knowing that you must approve a new follower.
Feels like kind of a strange relationship though — you can see any of Alice's posts, but Alice cannot see your posts.
Should be able to view shared private files. The main feed view should show all the recent posts from friends.
How to test this? Need to create two users, then create friendship between them. Then user A posts a private post, and check that user B can resolve the content in the post.
from
andto
usernames as an index. See repo friends.Friendship requires coordination — it depends on two independent users. However, the eventual consistency is not that difficult, because either friend can opt out at any time, and that only requires a local update. Telling the other user that you're not friends is the eventual part.
How to hide the social graph from the server?
User Alice keeps a private file with a list of their friends. If user Bob wants to revoke friendship — could encrypt a message "to" Alice, while also removing Alice from his own list.
This does leak info about the social graph, since our server knows that Bob was sending a message to Alice.
Could keep a log of 'events', or something, in the DB. That way the server is ignorant of what exactly is happening with friendships. It just knows that something happened from user Bob, and it is related to user Alice. Note this does leak info about who is talking to who.
This is the problem of private messages that we see in ssb, where everyone attempts to decrypt every private message. So it puts some needless strain on user devices.