Before we start thinking about adding new Friend-enhanced features or add Friends functionality to existing features, it’s important to understand the definition of a Friend in Sueetie. A Friend in Sueetie is defined by two members mutually agreeing to Friend the other, or to mutually "follow" one another. The key point here is the reciprocal nature of the relationship. This is different from how YetAnotherForum.NET (whose excellent “Buddies" architecture inspired Sueetie Friends) defines Friends (or in YAF.NET parlance, "Buddies.")
Let’s look at a YAF.NET Buddies Approval list compared to the Sueetie implementation in Friends.
The screenshot comparison explains the differences in definition and function. In YAF.NET (top image in blue) we see "Approve" and "Approve and Add" functions for each request in the right-hand column. In the Sueetie implementation we see a single “Become Friends” function. So in practice, when a YAF Buddies request is "Approved," the requesting person becomes a "Follower." The YAF.NET "Approve and Add" function creates a reciprocal relationship and defines a Sueetie Friend, so in Sueetie “Approve and Add” has simply been changed to “Become Friends.”
Said another way, we dropped the Twitter metaphor and went with the Facebook metaphor for relationships. In Sueetie, like Facebook, both individuals must be friends to qualify as Sueetie Friends.
This affects Friendship management when Removing Friends, and also differs slightly from the YAF.NET model. In YAF.NET, when you "Remove a Friend" as depicted below, you are no longer "following" that individual. The individual will no longer appear in your friends list, but because a YAF.NET’s Buddy does not require reciprocity you will still appear in that individual’s Friends list in a "Following" relationship.
We felt it was important to adhere to a strict reciprocal relationship model, so when a user performs a “Remove Friend” the following status is severed for both users, and neither appears in the other’s Friends List as a result.
To clarify that new relationship status, the popup notification has been modified. There is currently no notification sent to the former Friend, as the absence of the individual on their friends list should be sufficient.
We had two options here, considering we had such a robust Friends and Following architecture to leverage in YetAnotherForum.NET’s Buddies. We had many pieces for supporting BOTH Friends and Following features. For instance, we could easily add tabs to the member’s Friends Control Panel with “Following” and “Followers.” We went with the Buddies Reduction and enforced reciprocal following for several reasons.
First of all, if you’ve been following Sueetie development for long (no pun intended), you know that if there is a choice of two directions, we always take the most simple in design and logic. Secondly, function follows form. What would we DO with followers from a functional perspective? We could apply filtering to various content streams, I suppose, but too many relationship layers dilute the entire model. We want a strong Sueetie Friends model, with functions and streams flowing through a single, clearly defined special relationship with other members of the community.
So, are we clear on Sueetie Friends now? hehe