There is an obscene amount of social networks and there seems to be no-end to new social networks that are being developed. This is great because it means that developers are thinking about communication as a key feature to the success of an application. The problem with social networks is that users end up spending a lot of time building and maintaining the network. Here's a concept for how this could work in an open way.
The key guidlines:
- The identify of users on the network needs to remain private
- Collaboration between networks should be encouraged
Here's how it works.
- We have two social networks and each one has a set of users [ O M L Q ] and [ M L N O P Q R ] each user is identified uniquely by their email address.
- Each social network can be encoded using MD5 or a similar hash algorithm. Different social networks can share thier social graph information without divulging the identify of the individuals.
- Missing edges and connections can be spotted between the different networks
- The MD5 process can be reversed with a local lookup table. Normally you can't reverse an MD5 hash.
The basic procedure could be implemented as a simpe API with two core functions:
- ListFriends(FriendID as string, ServiceName as string, SharedSecret as string) returns an array of FriendID's
You call this function when you want to get a list of friends from someone elses social network. You pass in the encoded ID of the person you're looking for, your own service name and the shared secret that you've agreed on with the other service.
- CreateIDfromFriend(Email as string, ServiceName as string,SharedSecret as string) returns a FriendID
You can use this API to compute the ID's of each user in each respective network. The API is such that you'll always get the same ID for any given email address. A simple method would be to MD5 the email, XOR the SharedSecret and Shift the letters up using the service name.
The way these API's would work is that any two social networks that want to talk to each other can have a shared secret key. This key ensures that both networks agree to the same privacy rules and protocols. Without the key you can't compute the proper hash for a person. Given these two basic functions you can find the missing nodes on a social network and allow it to grow faster.
Since cooperation helps build social networks this basic technique could be expanded to allow more sophisticated trust relationships.