Social Graph

From P2P Foundation
Revision as of 14:01, 7 September 2007 by Mbauwens (talk | contribs) (→‎Definition)
Jump to navigation Jump to search

= the global mapping of everybody and how they're related

Commentary at http://bradfitz.com/social-graph-problem/

Background on Social Networks


Definition

"Social Graph: If one were to render the various ways different people in a particular community were connected into a data structure, it would be a graph. In a social graph, each person is a vertex and each relationship connecting two people is an edge. There can be multiple edges connecting people (e.g. Mike and I work at Microsoft, Mike and I are IM buddies, Mike and I live in Washington state, etc). Edges in the social graph have a label which describes the relationship. Fun examples of social graphs are slander & libel -- the official computer scene sexchart and the Mark Foley Blame chart.


Social Graph Application: An application that requires or is improved by the creation of a social graph describing the context specific relationships between it’s users is a social graph application. Examples of applications that require a social graph to actually be usable are instant messaging applications like Skype and Windows Live Messenger. Examples of applications that are significantly improved by the existence of context specific social graphs within them are Digg, Flickr, Del.icio.us and Twitter which all don’t require a user to add themselves to the site’s social graph to utilize it’s services but get more valuable once users do. One problem with the latter category of sites is that they may require a critical mass of users to populate their social graph before they become compelling." (http://www.25hoursaday.com/weblog/2007/08/30/TheDifferenceBetweenASocialNetworkSiteASocialGraphApplicationAndASocialOS.aspx)


What is the difference between social graphs, social network sites, and a social OS?

See also:

  1. Social Network Site
  2. Social Operating System

Discussion: Social Graphs need to be community assets

Brad Fitzpatrick:

People are getting sick of registering and re-declaring their friends on every site.

What needs to be done:

"Ultimately make the social graph a community asset, utilizing the data from all the different sites, but not depending on any company or organization as "the" central graph owner.


1. Establish a non-profit and open source software (with copyrights held by the non-profit) which collects, merges, and redistributes the graphs from all other social network sites into one global aggregated graph. This is then made available to other sites (or users) via both public APIs (for small/casual users) and downloadable data dumps, with an update stream / APIs, to get iterative updates to the graph (for larger users)

2. While the non-profit's servers and databases will initially be centralized, ensure that the design is such that others can run their own instances, sharing data with each other. Think 'git', not 'svn'. Then whose APIs/servers you use is up to you, as a site owner. Or run your own instance.

For developers who don't want to do their own graph analysis from the raw data, the following high-level APIs should be provided:


1. Node Equivalence, given a single node, say "brad on LiveJournal", return all equivalent nodes: "brad" on LiveJournal, "bradfitz" on Vox, and 4caa1d6f6203d21705a00a7aca86203e82a9cf7a (my FOAF mbox_sha1sum). See the slides for more info.

2. Edges out and in, by node. Find all outgoing edges (where edges are equivalence claims, equivalence truths, friends, recommendations, etc). Also find all incoming edges.

3. Find all of a node's aggregate friends from all equivalent nodes, expand all those friends' equivalent nodes, and then filter on destination node type. This combines steps 1 and 2 and 1 in one call. For instance, Given 'brad' on LJ, return me all of Brad's friends, from all of his equivalent nodes, if those [friend] nodes are either 'mbox_sha1sum' or 'Twitter' nodes.

4. Find missing friends of a node. Given a node, expand all equivalent nodes, find aggregate friends, expand them, and then report any missing edges. This is the "let the user sync their social networking sites" API. It lets them know if they were friends with somebody on Friendster and they didn't know they were both friends on MySpace, they might want to be.

But more generally, for developers, enabling new kinds of apps we haven't been able to think of yet.

For end-users:


1. A user should then be able to log into a social application (e.g. dopplr.com) for the first time, ideally but not necessarily with OpenID, and be presented with a dialog like,


"Hey, we see from public information elsewhere that you already have 28 friends already using dopplr, shown below with rationale about why we're recommending them (what usernames they are on other sites). Which do you want to be friends with here? Or click 'select-all'."


Also every so often while you're using the site dopplr lets you know if friends that you're friends with elsewhere start using the site and prompts you to be friends with them. All without either of you re-inviting/re-adding each other on dopplr... just because you two already declared your relationship publicly somewhere else. Note: some sites have started to do things like this, in ad-hoc hacky ways (entering your LJ username to get your other LJ friends from FOAF, or entering your email username/password to get your address book), but none in a beautiful, comprehensive way.

2. Deliver end-user tools (likely a browser add-on) to let users manage their social networks (whether the sites have cooperative APIs or not), syncing them with each other, or doing whatever they'd like, but according to the user's own policies. While the tools will most likely add the most value with uncooperative sites, it must always be clear to users what is happening so that no one is ever tricked. More on this later...

3. Make graph data as portable as documents are on a personal computer. (though likely never using the word 'graph' to end-users)" (http://bradfitz.com/social-graph-problem/)


More Information

  1. See the open source Online Identity Consolidator by Plaxo, as a proposed implementation of an open social graph.
  2. Social Network Site