Social Networks in Drupal - Modules to Define Relationships
At the heart of most social networks is the ability for users to contribute content and collaborate/communicate with each other. At its foundation “relationships” are typically defined giving users certain privileges to each others information. For example, on a music community, artists may have a relationship with fans that have subscribed to the artist allowing the two roles to send private messages between each other.
Drupal has become a great framework for creating social networks and there are valuable modules that extend Drupal allowing non-programmers to create social networks. One such module is User Relationships. At the very basic level, it provides the ability to create custom relationships between users. It's a feature-rich suite of modules that features integration plug-ins with a list of major Drupal modules. Admins can create relationship types. Both single (think: a fan) and two-way relationships (e.g. a friend) are allowed.
Friendlist is another module based on an API which works separately and independently of any module. The API exposes functions focused on managing relationships (the main ones: add relationship, delete relationship, check a relationship's status, and see a status's available options). The API's simplicity is a design decision, and it's what makes this module particularly powerful.
For those more familiar with BuddyList2, a similar module that was created for Drupal 5, but has not been completed to integrate with Drupal 6, User Relationships or FriendList is your best bet. For a comparison of the two check out http://groups.drupal.org/node/14625.