Status Update: Google Summer of Code (GSoC) Part 3!
Hello StatusNet Community! This is Derek reporting to you from StatusNet in Montreal. We will be continuing our segment of the Google Summer of Code (GSoC), and the student that we will be featuring today is Ruturaj Dhekane.
A few days after the latest release of StatusNet 0.9.3, Ruturaj had reached a halfway mark for the Google Summer of Code Project 'Finding People You Already Know'. Below is an update from Ruturaj on what he has done and what we can look forward to seeing from him in the near future!
The Repository at Gitorious now contains a working implementation of the plug-in ready with Quick Connect. As a recall, Quick Connect is a mechanism to find out which of your contacts have an OStatus account. Currently we are tapping into Google Address books and can search through your Twitter! friends. Plaxo Contacts are coming along. Some documentation is also available at Wiki.
The interface now allows you to login with your credentials at Google and Twitter, and syncs your address book. Remember that the wonderful OAuth authentication mechanism ensures that we don't store your passwords! Once authorized, you can browse through your address book. If any contact has an OStatus account, you can subscribe to him/her right away! The plug-in carries out background syncing of your contacts, hence you can skip going through all the contacts. They will all soon appear at a contact management interface from where you can administer them by the options provided.
Soon the Open Social Graph API gets into actions and finds all your friends' OStatus accounts. A recommendation list in the form of 'New Friends' appears and all contacts who have subscribable accounts are listed. You suddenly have lots of friends to whom you can quickly subscribe to and stay updated!!
The second phase of my Google Summer Of Code Task is known as delayed connect. It will be a mechanism to recommend new friends to our users by analyzing their social graph. Since this process of analysis will take time, its a 'Delayed' mechanism to find new friends.
The goal is to recommend new friends. The traditional recommender systems in place use Collaborative Filtering and Content Based Filtering to find them. An entity can be safely recommended to a user if both of them follow common traits or are similar in some respect. Different attributes are used to find similarity between two users. Example,
There might be many more based on the system for which it's being developed but we will stick to a minimal few. Further, a base of recommending entities are used to develop the algorithm. This means a few friends of our user will be selected based on their similarity to the user attributed to the above traits. These friends will be used to find new friends. But these may recommend hundreds of new friends, so a filtering mechanism can be used to find the top k friends which our user might know.
Now that we have a federated social graph, each StatusNet instance on the web will create its own small graph of social interactions. If all the users on a particular domain stick to friends only on their domain, they can never expand their interactions into other OStatus accounts available on the internet because they simply don't know about its existence. It's a Cold Start to our efforts. That's where Quick Connect comes to our help. Tapping into a users contact list breaks boundaries and finds new friends right away!
Another issue is that of recommending spammer accounts. A Karma Plugin developed sometime back is the best start. It uses a technique similar to PageRank to find important and valid users. This infrastructure can be easily used to reduce spammers entering into our recommended friends.
A Federated system will require caching so stop re parse of social graphs. This can considerably slow down the process and cause unwanted replicated data. A caching technique is being designed for this task to eliminate this problem.
This part of the project will develop a basic framework for Friend Recommendation Systems on Federated Networks. It's a new avenue. It's quite challenging and really enjoyable!!! I shall keep updating the ideas on this Wiki. All suggestions are welcome.
- Ruturaj Dhekane