(this page was write in 2011)
Friends groups is a desired feature to have in RetroShare. The main functions of this feature should be:
- different file sharing permissions with each group of friends
- group-based discovery policies
With these settings, it's necessary that groups constitute a partition of the peers, meaning that a peer cannot belong to two different groups. It would be more versatile to allow peers to belong to multiple groups.
For each group, the user can set the file sharing flags, which are AND-ed with the global file sharing flags. The flags authorize or not the exchange of file lists with friends of this group.
- each directory is assigned a list of groups, and 2 sets of flags: flags for all and flags for the groups.
- each set of flags contains two flags for the share type: 'w' for network wide, 'b' for browsable. '-' means that the flag is cleared.
- depending on the group it belongs to, each peer receives in cache the file list, restricted to account for the flags of each directory.
- the access to files through tunnels and direct transfers is conditioned by the flags (as it is done now) and by the peer that issued the request.
- limiting anonymous tunneling to some friends is a questionable choice, mainly because tunnels can still reach the files through a different route. Anyway, some users might still want to do it.
A RS user might want to have different discovery policies for different groups of people. As this feature is a 3-person data exchange (A sends B's profile to C), the group settings can be designed to allow/disallow:
- sending information between friends of this group
- send information from peers of this group to others (might protect this group's privacy)
There might be multiple groups, so it's difficult to provide a full resolution service. One option is to build a table of group trust for each option, deciding whether each group sends information to each other group.
To allow a sensible default combination, all peers should be by default into a "unsorted" group.
We can provide additional functionality, such as:
- automatic friendship between people that trust each other, within a group. Obviously a non-friend is not in a group, so it enters the group as a friend on recommendation from a person in that same group.
Group chat is a well wanted feature. This is now already possible with Chat lobbies. A useful gui function would be to start a private chat lobby with all people from one group.
We need a group policy class, to handle management of group-level permissions, and answer questions of type "Do I send my file list to this person", or "Do I send information about peer A to peer B?" This information should be saved in a config file. In case of losing the file, the default behavior needs to be as conservative as possible regarding security.
In the GUI, we need to display groups in a cool way. Shall we use circles, just like Google+ ? We need to allow:
- group modification, meaning moving peers between groups. That's already the case now
- group permission setting
- a nice display of group permissions in the friends tab.
We may want to have a new display of friends showing them in groups instead of just a list.
- Developers Corner (main page in this Wiki about development)