What started as Google Summer of Code on May 24th, 2010 came to an end, like many other Open Source Contributors from around the world who participated in it. It was an experience that can be gauged from the amount of code generated worldwide. Thanks to StatusNet team and Mentor Brion we put together a system which is one of its kind on the Internet. A Distributed Approach To Finding Friends You Already Know On The Federated Social Network. Codenamed Talash.
Sometime back the progress report updated on the features implemented and those that were to come. The project has ended nicely and I really love the results. This blog post summarizes the final updates on the work , some interesting side products and its future.
The project was a recommendation system in general. It would recommend new friends to the user and try to expand his online social network. Imagine yourself as a user on the federated social network. Now you need your 'first' friend on the internet. But you don't know where he is. This cold start problem was eliminated by the first phase of the project, named 'Quick Connect'.
We tapped into the address books of out user, found the email address of his friends, and searched the Social Graph for his other public social profiles. If the profile is subscribable, then our user is recommended this profile. Suddenly you have many many friends, whom you didn't know they existed on the internet, for subscription.
We are currently tapping into Gmail, Plaxo, Twitter. We use OAuth to access this information. A new OAuth wrapper has been designed over the current in-library oauth class. A reference is here.
What if you want to add a new service? Does your website have an API for accessing a users contacts and you want it to be integrated into this plugin? Check out API Section of the documentation to find out about plugging in your own service. A basic framework of the endpoints is provided in the documentation and can be easily modified.
Then we come to the 'Delayed Connect'. The contention being that a user can take time to settle down in this immediate social network before searching for newer friends, whom he knew or shares common interests with. We feel that the analysis of a users social graph must be done with the users permission, and hence we give a preference list for the user which also acts as a filter to our recommendations.
- Recommend me friends I know on other social networks
- Recommend me interesting friends
- Recommend me friends in my geographical proximity
The first option has been implemented, the framework for the operation of second option has been created and third is still pending.
To search for friends whom you might know on other social networks, we take the list of your friends' friends. We search their social graph and if you and they are follower/subscribers on an external website, then they are recommended. Since all these requests go on HTTP and friends of friends is a huge number which grows exponentially, we have a good cacheing mechanism in place which reduces these requests.
Friend Similarity Endpoints
To allow 'Interesting Friends' recommendation to our user, we give a chance to all the plugins to contribute to the recommendation process. The idea is to generate a similarity score, through every other plugin, between the users and then find their closeness.
Closure , Future And Thanks
The GSoC timeline ended. But not the project. Talash has got tremendous possibilities for improvements. Its a one of its kind implementation since Federated Friend Finding and Recommendation algorithms can be implemented on the only Federated Social Network StatusNet. It can distribute the processing of large Social Graphs and has tremendous research scope. This plugin is only the first step.
In the coming future, I shall we working with Brion Vibber to integrate it completely into the StatusNet codebase. The code requires a lot of fine tuning and probably use Delayed Queues for delaying the OAuth retries in case of failures.
I would like to thank Evan, Brion, Zach, Rejon, Derek for making me a part of this wonderful project. And a hats off to Shashi, Luke, Ian and Arunoda who created more than awesome projects this summer!! I known we shall keep contributing to StatusNet in our own ways.