atom feed11 messages in net.java.dev.socialsite.devRe: Flexible relationship states
FromSent OnAttachments
DaveNov 6, 2008 9:04 am 
Jamey WoodNov 6, 2008 9:39 am 
DaveNov 6, 2008 11:16 am 
Jamey WoodNov 6, 2008 11:53 am 
DaveNov 6, 2008 12:33 pm 
DaveNov 6, 2008 1:04 pm 
Jamey WoodNov 6, 2008 2:11 pm 
DaveNov 7, 2008 4:52 am 
Jamey WoodNov 7, 2008 9:01 am 
Vijay RamachandranNov 7, 2008 10:17 am 
DaveNov 17, 2008 8:34 am 
Subject:Re: Flexible relationship states
From:Dave (snoo@gmail.com)
Date:Nov 6, 2008 12:33:57 pm
List:net.java.dev.socialsite.dev

On Thu, Nov 6, 2008 at 2:53 PM, Jamey Wood <Jame@sun.com> wrote:

Dave wrote:

Yes, that is the case. I updated the state diagram to explain what happens when you go when from PENDING when a relationship request is ignored.

So in that case, what level will the resulting ONEWAY relationship have?

The resulting one-way relationship will have whatever level you asked for. Person A can consider B to be a friend, while at the same time B wants nothing to do with A.

If my SocialSite instance is configured so that "socialsite.relationship.friendLevel=relationshiplevel.friend", I might find it surprising that relationships of that level or greater can still end up in a ONEWAY state.

Users should have have to be aware of one-way versus two-way relationships and, in fact, I think such things should be hidden in the UI. I user should only be aware of relationship levels and the notion of a mutual relationship, which means one where the two parties have agreed on a how-knows message.

Plus, it seems like mapping such ONEWAY relationships to the OpenSocial API calls could get tricky. It could be confusing if our OpenSocial implementation could in some cases return user B in the list of user A's friends, but not have user A in the list of user B's friends. Or perhaps that'd even make us non-compliant with the OpenSocial spec-we'd have to look to see for sure.

When we return the list of friends for A, we will only return those relationships with Friend-level or higher. We will ignore the one or two-way nature of the relationships.

If OpenSocial requires two-way relationships, and AB requires BA, then yes we will have a problem but I don't see any evidence of that. One-way relationships are pretty common in social networks, e.g. Flickr, Twitter, etc., so I don't see how they could get away with such an arrangement.

And a more general question... It sounds like we won't have a way to configure a SocialSite server to behave in ways that I would think many would want. For example, it seems like many SocialSite owners would want one of the following:

1. Completely disable one-way relationships. Since many popular social networking sites only support two-way relationships, I would think that emulating that same behavior would be a common desire.

Very good point. A Mutual-Relationships only option is definitely a good idea.

2. Even if one-way relationships are enabled, they might not want to have them be auto-created after a user's attempt to create a two-way relationship fails. (Then again, I realize that trying to support too much flexibility here will likely lead to a lot of complexity).

Making things like that configurable is probably a good idea.

So I wonder if the simplest thing might be to just not have the logic to fall-back to a one-way relationship when someone's request for a two-way relationship fails? Then we'd avoid the possibility of having one-way friendships (which seems to complicate our mapping to the OpenSocial API). Plus, I think it'd provide a way to entirely turn off one-way relationships (by just not enabling any relationship levels below the friendship level)?

I think you meant to say fall back to a NONE relationship after a relationship request fails?

As I explained above, I don't think having one-way relationships is a problem.

Actually, what I'd like to do is to make the relationship request part optional. Just because you are adding somebody as a friend does not necessarily mean that you want to send a friend request to them asking them to become a mutual friend of yours. When you get the Relationship Request dialog, it should give you the option to edit a how-know message, to send the request or to simply Skip the how-know and the request entirely:

Relationship Request Dialog

How do you know this person? [ _ _ _ _ _ ]

[ Cancel ] [ Send Request ] [ Skip Request ]

Of course, with Mutual-Relationships only enabled, that Skip button would have to be hidden -- users would have to always send a request in that case.

Thanks for the detailed feedback.