Social Graph

From P2P Foundation
Jump to navigation Jump to search

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

Commentary at

Background on Wikipedia:Social graph


Marc Smith:

[1] all entities are tied to other entities through relationships
[2] all relationships can be represented as directed graphs, node lists, and matrices

"In Mathematics, a Graph is an abstraction for modeling relationships between things. It is no different from a Network, which is a more common term for describing the same thing. Graphs consists of nodes and edges, or things and the ways that things relate to each other. As it turns out, Graphs are very powerful modeling tools for modeling natural and man-made systems. Diverse things like the Web, power grids, economies and even cells can be represented and analyzed as networks."
"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, 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."

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

See also:

  1. Social Network Site
  2. Social Operating System


Lidia Pereira:

"The Social Graph is a graphical chart of Internet users, objects and relationships between them, an attempt to map networks in an analytical, all-encompassing way. It was initially introduced during the Facebook F8 conference in 2007 within the context of the Facebook Platform, however the Social Graph has now expanded to become an attempt at the graphical representation of relationships between everybody and everything on the Internet. The choice of the word "graph" in Social Graph is everything but innocent, as it entails ideological assumptions of rational mathematical analysis - thus representing one step further towards positivist ideals of fixed, simplified, predictable and rigid social structures. The Social Graph, despite and thanks to its blatant bi-dimensionality, is successfully transforming the digital space into the realm of the quantified subject, the privileged structure for power infiltration within the human soul."


By Alex Izkold [1]:

"Key Elements In Digital Social Graphs

"With the recent rise and proliferation of social networks, the social graph comes into the spotlight. Unlike the one that scientists have been studying, this one is digital and defined explicitly by connections in all social networks. Let's revisit the main issues that Brad and others have been talking about:

1. People Identity: Each one of us participates in multiple networks, but we want to be identified as the same person in all of them. Brad describes this as a multiple login nightmare. He calls for having a way to map IDs onto each other, via 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)."

2. Type of Relationships: The links between people in social networks are of different types. Crudely, different types of relationships are a friend, a co-worker, a family member. There are more fine grained relationships defined in Facebook (see picture above) and Spock, which uses tags to identify how people are related.

3. Relationships Identity: Similar to having node equivalence, there is an issue of edge equivalence. Although, this issue is more complicated. If two people are connected in one social network, should they automatically be connected in all of them? Consider an example of a LinkedIn and Shelfari. Just because two people work together does not mean that they share the same book interests. However, the crux of the issue is not that - it is actually discoverability. As Brad pointed out, there needs to be a way for a new user who joins a network to be able to find friends who are already using that network." (


Social Graphs need to be community assets

"Brad explicitly described a need for an API or a service that would broker the information between social networks. He envisions an open source base database which accepts information from multiple social networks, then provides it to end-users via UI or API - as well as allows users to authorize other social networks to find the information." (

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. 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)" (

Privacy and Ownership Need to be Defended

Alex Izkold [2]:

"Privacy and ownership of information are at the core of the social graph issues. Much like there is a conflict of interest around attention information between online retailers and users, there is a mismatch between what individuals and companies want from social networks. When any social network starts, it is hungry to leverage other networks. As it grows, the incentive to share information like social graph and attention with others deminishes (unless it is done via an API that continues to benefit the network). But as individuals, we do not care about either young or old networks. We care about ease of use and privacy.

In the ideal scenario, we would like to spend the least amount of time logging in, configuring, telling the system what we like. We want to use the network to connect and to communicate. More importantly, we want to not just feel that we are in control, we want to be in control of our personal information. Just like we choose who to make friends with, we want to decide how our friendship information is used. We think of a social network as a service that has our eyeballs and can advertise to us, in exchange for connecting us to people we want to connect to. And as with any service, we want to control our information.

Just wanting to own and control information is not enough though. Companies do not really care, as they just do what's in the best interest of their business. So to make companies cooperate, people need to come together and take a stand. As we have written here many times before, the best way to take a stand is to form an organization. Organizations have a much better track record of dealing with corporations than single individuals. The organization can put forth a set of rules and standards and then work with companies to implement them. This is essentially what Brad is proposing." (

How Realistic is the proposal for a Social Graph API?

Alex Izkold:

"Brad explicitly described a need for an API or a service that would broker the information between social networks. He envisions an open source base database which accepts information from multiple social networks, then provides it to end-users via UI or API - as well as allows users to authorize other social networks to find the information."

The first technical challenge with this approach is to build a system that can scale. The second important problem is building a system which is secure. Assuming that both challenges can be met, the next major issue is getting companies to use this API. Why would Facebook export their information into this new database? Clearly, it would not. What Brad suggests is that Facebook and other networks implement an export facility that would allow the users themselves to do it. This is also not optimal, since people would have to export their information manually.

A more automated approach would be to define an API that all social networks must implement, so that other networks can query their subset of the social graph. With this approach, when a user joins a new network, that network can connect to other ones and get the information about its users. It is basically similar to the Import Your Friends From Email feature common to many social networks these days. The challenge, again, is to convince the social networks to support this functionality.

Yet, one can not help but think that a similar challenge was successfully solved by another tech community: Java. The Java Community Process is an industry-wide effort to come to around a table, to define and drive the implementation and adoption of Java APIs. For example, a big success story was J2EE standards, where companies like IBM, BEA and Oracle made their application servers compliant with a common API, making it easier for the applications to be portable. (To be fair, we have to admit that they also stuck proprietary stuff on top of the standards - but the point is that a lot of things were standardized)

Brad has started a fascinating discussion. What is the Social Graph? Who owns it? What is the API? All of these questions are likely to shape the evolution of the next generation of the Social Web.

On the surface the issues are clear and simple, but what is also clear is that it will take a lot of work to get a working solution. The challenges are conceptual, technical, political, business and educational. A lot of minds need to converge for the Social Graph, as described by Brad, to happen. Traditionally the tech industry has been able to come though on critical standards that benefit people. Let's hope that this will be the case here as well." (

‘Like’ will become the basis for a value added social graph

Steven Hodson:

"The thing about social graphs is that they are basically flat – everyone within your social graph is on a level field which makes it very hard to be able to pinpoint those who add value to your graph and those who just hang around. As well right now your value within someone else’s social graph is just as static as those people in your social graph with the only differentiation coming from the number of followers / friends you might have. this kind of value system is too easily gamed to be any real indicator of one’s ability to add value to a social graph.

This changes though if we look at the idea of Likes being a value indicator that increases your value within a social graph. The idea being that as information you have shared whether it be on FriendFeed, Twitter or Facebook is liked by others within those social media circles your overall value to others is increased. You in effect bubble up through other people’s social graphs as a value added friend and in turn make their social graph more valuable.

So rather than Like being just a casual thing we do as a way to bookmark something we are in fact indicating to others that we think this person is a valuable part of their social graph. Like has become a value indicator – a digg marker of your social graph so to speak. This in turns turns that flat 2D social graph into a vibrant living three dimensional entity and a whole new dimension to what Social Media and our social graphs are and their effects on our lives." (

More Information

See also:

  1. Interview with Marc Smith
  2. Wikipedia:Graph theory

Internal links:

  1. See the open source Online Identity Consolidator by Plaxo, as a proposed implementation of an open social graph.
  2. Social Network Site
  3. Semantic Web
  4. Giant Social Graph
  5. Social Accounting Metadata
  6. Marc Smith on the Social Graph and Social Accounting Metadata