I have long been thinking about a way to mitigate the problem with Facebook-style social networks, where knowing somebody means you have direct access to their identity on the system. You can “unfriend” somebody, but you can’t make them forget you.
A simple solution is to create a new identity for each relationship, valid only within that context. (Interestingly, Facebook is using something very similar with their application scoped user ids in their newer API versions.)
MaidSAFE supports any number of identities per person (as a basic consequence of its design), so this is just an application level issue.
How it works: Alice (ID 0) and Bob (ID 1) want to become friends. They generate new identities (2 and 3), and they share it in person (e.g. over NFC or using QR codes), or through a common friend with a Diffie-Hellman kind of setup. (Basically, the relationship assumes its own entity, connecting the two newly created accounts… or something like that.) If Bob turns out to be a jerk , Alice can just throws away the relationship with those IDs , and it’s done: Bob has no way to contact her, or to stalk her profile – he has never known it in the first place!
This also means that one’s actions across social networks could not be connected, unless he wants them to be. The “real” accounts, logged on to with the Launcher, would act as umbrella identities to group the ever increasing number of relationship scoped identities into more static public profiles.
This scales to groups as well. The group has its own entity, which stores the IDs of the participants. The IDs are created specifically for this group, the original identity of the participants need not be revealed. Adding participants is cheap (if accessing previously published content is acceptable), but removing people would of course need a completely new group, with new group-scoped IDs.