One of the many things that the delicious social networking site appears to have got wrong is how to gain traction from its social network. As well as the incidental social network that arises from two or more different users using the same tag or bookmarking the same resource (for example, Visualising Delicious Tag Communities Using Gephi), there is also an explicit social network constructed using an asymmetric model similar to that used by Twitter: specifically, you can follow me (become a “fan” of me) without my permission, and I can add you to my network (become a fan of you, again without your permission).
Realising that you are part of a social network on delicious is not really that obvious though, nor is the extent to which it is a network. So I thought I’d have a look at the structure of the social network that I can crystallise out around my delicious account, by:
1) grabbing the list of my “fans” on delicious;
2) grabbing the list of the fans of my fans on delicious and then plotting:
2a) connections between my fans and and their fans who are also my fans;
2b) all the fans of my fans.
(Writing “fans” feels a lot more ego-bollox than writing “followers”; is that maybe one of the nails in the delicious social SNAFU coffin?!)
Here’s the way my “fans” on delicious follow each other (maybe? I’m not sure if the fans call always grabs all the fans, or whether it pages the results?):
The network is plotted using Gephi, of course; nodes are coloured according to modularity clusters, the layout is derived from a Force Atlas layout).
Here’s the wider network – that is, showing fans of my fans:
In this case, nodes are sized according to betweenness centrality and coloured according to in-degree (that is, the number of my fans who have this people as fans). [This works in so far as we’re trying to identify reputation networks. If we’re looking for reach in terms of using folk as a resource discovery network, it would probably make more sense to look at the members of my network, and the networks of those folk…)
If you want to try to generate your own, here’s the code:
import simplejson def getDeliciousUserFans(user,fans): url='http://feeds.delicious.com/v2/json/networkfans/'+user #needs paging? or does this grab all the fans? data = simplejson.load(urllib.urlopen(url)) for u in data: fans.append(u['user']) #time also available: u['dt'] #print fans return fans def getDeliciousFanNetwork(user): f=openTimestampedFile("fans-delicious","all-"+user+".gdf") f2=openTimestampedFile("fans-delicious","inner-"+user+".gdf") f.write(gephiCoreGDFNodeHeader(typ="min")+"\n") f.write("edgedef> user1 VARCHAR,user2 VARCHAR\n") f2.write(gephiCoreGDFNodeHeader(typ="min")+"\n") f2.write("edgedef> user1 VARCHAR,user2 VARCHAR\n") fans= fans=getDeliciousUserFans(user,fans) for fan in fans: time.sleep(1) fans2= print "Fetching data for fan "+fan fans2=getDeliciousUserFans(fan,fans2) for fan2 in fans2: f.write(fan+","+fan2+"\n") if fan2 in fans: f2.write(fan+","+fan2+"\n") f.close() f2.close()
So what”s the next step…?!