I think in real life most people have multiple roles, for example if you are a parent and a software developer, you talk to other parents about parenting, and to other software developers about software development, but you usually don’t ask random parents for programming advice or random software developers for parenting advice. This can be modeled by people talking in different chats (like in Discord), instead of having a “friend or not friend” binary (like in Facebook or Twitter). In reality, there happens to be some overlap, like I may have a friend with whom I discuss both parenting and programming, but usually I have different friends for different roles.
Then there are also roles like “my relatives” and “my neighbors”. This gets tricky, because these are not completely transitive, like someone who lives on the next street is my neighbor, but someone who lives hundred streets away is not? Similarly, a cousin of my cousin is almost a stranger to me. This is probably better modeled with the Facebook-like approach, where I connect to my cousin, he connects to his cousin, but I am not connected to the cousin’s cousin? But it would still be better if the software specified the role of the connection, such as “relative” or “neighbor” instead of just a generic “friend”.
We also have a concept of private and public setting, like when I am speaking at a software developers’ conference, it is public speech, and when it’s four neighbors drinking in a pub, it is private speech. I guess the difference is something like “does everyone know everyone else in person? or can any stranger join?”. In public setting, there are the speakers and the audience; the organizer is responsible for the speakers but not for the audience, the speakers are one who talk freely, and the audience may be invited to comment but may also be silenced.
I think in real life most people have multiple roles, for example if you are a parent and a software developer, you talk to other parents about parenting, and to other software developers about software development, but you usually don’t ask random parents for programming advice or random software developers for parenting advice. This can be modeled by people talking in different chats (like in Discord), instead of having a “friend or not friend” binary (like in Facebook or Twitter). In reality, there happens to be some overlap, like I may have a friend with whom I discuss both parenting and programming, but usually I have different friends for different roles.
Then there are also roles like “my relatives” and “my neighbors”. This gets tricky, because these are not completely transitive, like someone who lives on the next street is my neighbor, but someone who lives hundred streets away is not? Similarly, a cousin of my cousin is almost a stranger to me. This is probably better modeled with the Facebook-like approach, where I connect to my cousin, he connects to his cousin, but I am not connected to the cousin’s cousin? But it would still be better if the software specified the role of the connection, such as “relative” or “neighbor” instead of just a generic “friend”.
We also have a concept of private and public setting, like when I am speaking at a software developers’ conference, it is public speech, and when it’s four neighbors drinking in a pub, it is private speech. I guess the difference is something like “does everyone know everyone else in person? or can any stranger join?”. In public setting, there are the speakers and the audience; the organizer is responsible for the speakers but not for the audience, the speakers are one who talk freely, and the audience may be invited to comment but may also be silenced.