codahale.com٭blog

Coda Hale lives in Berkeley, CA, where he writes about Ruby on Rails, usability, web design and development, and the occasional bit about bicycles.

Making social networking software relevant: A Napkin Plan

Charlie over at This is going to be BIG! has very smart readers, one of whom–Gabe Morris–points out the flaws in existing social networking software. I’ve got some great ideas on how to fix this stuff, too.

How to Build a Social Network:

LinkedIn annoys people to the extent that it connects you without relevance. The basis for LinkedIn and Friendster’s automatic relevance is degrees of separation. But this has weaknesses – there are second degree contacts who I have very little in common with, while I am sure there are hundreds of people in the sixth degree and beyond that I would have plenty in common with.

Right now on Friendster I’ve got maybe 100 friends–the product of a drunken summer ‘03–very few of whom have anything in common. Some are just people I added not to be rude, some are bosom buddies, and some are acquaintances. Neither Friendster nor any other social networking software, to my knowledge, takes this into consideration. Instead, it lumps them all into the category “My Friends,” and recommends random selections from this hodge-podge of people to others as people they should get to know. How helpful. To solve this, a social networking site needs to provide people with the tools to quickly and easily describe their social networks. Easiest way to to this? Tags!

Here’s what I’m thinking. Each user gets to describe their contacts using tags, preferably tags which describe that contact’s relation to them. To seed this process, the software could have a set of recommended defaults: co-worker, ex, drinking-buddy, boss, annoying, douchbag, crush, meh, etc., etc. These tags need to be private, because otherwise it’s a public opinion, which limits the usefulness of the data. How many people want their boss to know that they tagged him with both “boss” and “douchebag?” You only get to see your own tags.

This would provide a better dataset to evaluate relevance: the software would recommend contacts which share the same tags as you. If you’re a bicycle nut, you get potential riding buddies; if you’re into radical feminism, you get hooked up with other femsexies; if you’re a douchebag, it’ll hook you up with all the other jerks. This shouldn’t be a deterministic process, however, otherwise it would limit recommendations to particular cliques. Weighting is essential, and I’m sure there’s some maths post-doc all full of coffee with a few ideas about how to tease further correlations out of this dataset.

So who wants to do this?

5 Responses to “Making social networking software relevant: A Napkin Plan”

  1. Charlie Says:

    I gotta find a way to tie all of these people commenting around this together…

    Nice site, btw. I need a serious redesign.

  2. peterb Says:

    There’s some stuff like that, although i’m not sure about how sophisticated it is yet: For example the Friend Of A Friend (FOAF) Project (http://www.foaf-project.org/), more about which you can find here (http://www.apocalypse.org/~nicole/FOAF/foaf-website2/index.html). FOAF basically uses a set of metadata to describe a person, then let’s you connect with people who are relevant to you…

    good luck!

  3. Coda Says:

    I’m familiar with FOAF–it’s built into WordPress rather nicely, and I use it where appropriate on this page for my blogroll links.

    The fact remains, though, that it’s a public discovery microformat: you can see, by using some kind of FOAF-aware browser (if there is such a thing–Firefox extension, maybe) or by poking around in the code, that Peter Dolan is a friend I’ve met in person, which is good, because he’s also my flatmate.

    If I was linking to someone I secretly dispised but still wanted to be associated with (Paris Hilton?), I wouldn’t add my own “waste-of-skin” tag to the FOAF data for her link, mainly for fear of her finding out and booting me from her entourage. But I still think that she’s a waste of skin.

    Personal opinions–especially the kind we don’t share publicly–are a huge, untapped dataset, upon which rest human social systems (the things with which social networking software is supposed to help us). These are the opinions which matter most.

    For example, imagine a 20-something female browsing her friends’ friends on a hypothetical website. Our use case for her is that she wants to get laid. Now, she could make a list of people with cute photos and call around asking her friends if someone’s a good lay, etc. But that’s complicated and weird–hence her visiting the website. She should be able to see a person’s tags–and if one of them is “good-lay.”

    But the instant you provide the means to see who added that tag to this person’s profile, it becomes a public opinion and people start clamming up. I want a social networking site which gives all the dirt. ;-)

    The one way something like this would be possible with FOAF would be if there was a cryptographic primitive which would allow you to compare two values for equivalence without knowing what either value really meant. If you could look at f(x1) and f(x2) and see if x1 == x2 without knowing anything about x1 or x2, then you could simply encode your tags for another person and embed them in the FOAF format.

    You wouldn’t be able to see the various tags people had added to someone’s profile, but you could still group people by other people’s opinions of them. All the people with f("douchebag") other people’s FOAF links to them would get lumped together, for example.

    You couldn’t use a hash function for f(x), since tags are a very limited set and it would be easy to throw a dictionary at an encoded value and see what they’re saying about you. I don’t have my copy of Applied Cryptography with me, but there may be something like this, in which case I’ve got some thinking to do and some emails to send.

  4. Tyron Says:

    has anything become of this idea yet? i’m very interested

  5. Jed Harris Says:

    We’re actually doing something that has effects like this, but using a very different approach. It is indeed designed to tap “Personal opinions–especially the kind we don’t share publicly.” However it would not directly solve the “cute 20 something who wants to get laid” problem that Coda describes, though it might help indirectly.

    Private tags are also key. More than just being private, they are individual — it doesn’t matter whether you are using the same tags as other people. This helps because if the tags are private, the community can’t easily come to a consensus on how to use a given tag, so there’s no reason to believe they’l “mean the same thing” to different people.

    The biggest difference between our work and Coda’s proposal is that we have tag content (blog items, news items, etc.) not other people. This isn’t a categorical difference, because people could tag (e.g.) personal profiles.

    The great thing about chunks of content is that they have internal structure that we can analyze. Based on this structure, the system learns what each user “means” by their tags and can auto-tag new chunks of content for that user. This should work about as well as bayesian spam filtering — i.e. not perfectly, but well enough to save a lot of work.

    So then (going back to Coda’s idea) the system can find other users who have tags that “mean” roughly the same thing. (We can compare the similarity of tag meanings on a scale — they are not just equal or not-equal, as tags usually are.) Two users with similar tag meanings are interested in the same thing, in more or less the same way. Maybe Coda’s cute 20 something could find profiles of people who her friends have tagged (their equivalent of) “good-lay” though they might spell it very differently.

    We haven’t thought about how to integrate this with existing social networks, but we’re going to make it open source, so maybe someone with a social network site will figure that out.