What does becoming a friend mean on a open graph? Posted on September 20th
I am thinking out loud right now, so if something seems way off base please don’t hesitate to tell me in the comments.
Consider when a user wants to befriend another user. What process happens here? I think doing the simplest thing that could work is just declaring rel=”friend” using XFN. Something on the complicated end could be like Facebook where you request friendship from another user and that user then has to agree to make the link. Users can also describe some information about the friendship that they both have to agree to. Finally, when one user terminates the friendship it is mutual.
But what makes sense in open, distributed environment? I’m not sure, hence this post.
Here are some classes of relationship-making to consider starting with the lightest:
Declaration
Just publishing the relationship, in FOAF, XFN, etc. A lot of people are talking about tools that can pull in and use this data.
Notification
This is having a some way to ping the person you are claiming friendship with. In my original conception, I wanted to use OpenID to verify that the URL for the friend is valid. I realize this is bending OpenID a bit from its original purpose. The use of a new openid.mode and attributes could make this work.
Reciprocity
This is what Facebook does. A friendship is a mutual relationship claimed by two parties. Could be implemented to similar to Notification with OpenID, except that the friend receiving the request could turn around and check the originator’s OpenID.
In all of these, I am assuming people are made first class, i.e. identified by their OpenID URL. Folks have been working on technologies that tackle these problems more formally, but they don’t work in the tools widely available yet.
Personas
I am also trying to figure out how personas fit into all this. By persona I mean the profile you present to that contact. This requires a heavier linking I think. Again, in my conception this could be passed with attributes. A nonced URL could be passed to be fetched by the other friend that would contain the persona presented by the first friend.
OAuth
Another thing to consider is the new OAuth which might be more appropriate for some or all of these features.
Also OAuth promises to make Facebook-style apps a lot more easier to develop.
Trackback URL
I was searching the internet for far too long trying to find something like http://oauth.net/ , then I remembered you mentioned something like that once, so I came here and found it right away.
The reason I was looking is because I know no one would want their semantic contact list visible to the public since it would have emails. Also, no one would want to give their usernames and passwords to some stupid app.
A possible way for a new social network to handle the friend thing is to offer imports through some OAuthed hCard list on another social network. Then, see if any of those contacts are in the network and inform them that someone has added them as a friend. I don’t think its necessary to require both parties to confirm the friendship. You could adjust permissions specific to a user that might not be in your friend list. Hmm people might be used to the facebook way though and think “thats not my friend, why am I on his list”
Commented Greg on October 22nd, 2007.