Social Network Contact Management System, Gathering People Details

The other day, I wrote a blog post talking about my desire for a Social Network Contact Management System. Essentially, I would like a system where I could easily see which services my friends are on, and track my contacts with these friends.

I’ve received some great comments on the idea and want to expand a bit on this. Joe Cascio spoke about some of his efforts in this area, which were based upon people self identifying and suggested it probably wasn’t likely to take good shape until OpenID became more ubiquitous. Willem Kossen asked if we couldn’t get a bunch of programmers together to build something closer to what I was envisioning.

Meanwhile, I’ve done a little bit of programming and my ideas are starting to take better shape. Already, there are many sites where people can self identify the networks they are on. Some of these sites provide a programmatic interface.

The first one that I worked with was MyBlogLog. MyBlogLog provides a FOAF file listing all of the services you are on, all of your friends on MyBlogLog and all of the services they have listed for themselves.

I wrote a program that analyzed my FOAF file. I found that I have 369 contacts showing up there. 176 of them, or 48% have identified their Twitter accounts. 72 have identified Friendfeed accounts, and on an average they have about 8 accounts each.

I mention Friendfeed, because they are another service where people can self identify. They have a nice interface that returns all of the friends and all of the services for a given user. They do not combine all of this in a single file, so I would need to write a program that would iterate through my 250 friends on Friendfeed.

DandyID provides a great list of services that users can self identify and has APIs to extract the information. However, on a first pass, I didn’t get the API to work. However, I did get their Portable Contacts feed to work very nicely. DandyID is still a fairly new service, so I only have twenty friends there. 19 of them are on Twitter, and my average friend on DandyID has 35 services.

Twitter has a decent API and I can retrieve my followers and whom I am following. Identi.ca returns a FOAF file of connections as well, but like Twitter doesn’t track other services. By combining the data from these services, I should be able to get a fairly good view of my contacts.

There are a bunch of other services I would like to add to this list. BlogCatalog allows users to self identify their other services, and I can find my friends and neighbors on BlogCatalog programmatically, but I haven’t found a way to extract services via the BlogCatalog API. It does provide a way to retrieve which BlogCatalog users have recently visited your blog, which could be helpful in the second part of the project, tracking contacts.

EntreCard gathers user’s services but doesn’t provide an obvious mechanism to retrieve that information. They do provide an RSS feed where you can extract people who have recently dropped a card on your site as well as who has dropped the most cards on you.

Disqus, Lijit, and Retaggr also gather information about services but don’t provide any obvious method to programmatically access this information. I haven’t even started looking at Facebook or FriendConnect.

With this, I just need to come up with a good data schema, normalize the data and I’m on my way. In a later post, I’ll probably get more geeky and talk about the data schema and normalization and then talk about how to track what has gone on with contacts on the various services.

Any thoughts about other services that I could use to build up a better view of my social network contacts, as well as thoughts about the data schema or normalizing the data would be appreciated.

As to where I go with this, my current thinking is to make all of this available as an open source project. If you are interested in looking at my code, let me know. However, at this point it is still a bunch of small disconnected pieces of code, more like a developers notebook then something like alpha version 0.001