Virtualizing Social Networks – Part 3
Here is the third and final post on my proposed model for using a virtual directory to create social graphs. It only took a couple bunches of bananas to get Charlie to let me finish my post. It seemed like a good bargain.
In Part 1, I presented the case for using a virtual directory to integrate social networks for the identification and representation of relationships. In Part 2, I presented the value of virtualizing social networks.
In this final installment, I wanted to present a theoretical use case for a fictional company called, MyNewsBox which allows users to find interesting news tidbits from across the internet and store them in a suitcase for reading at a later point in time. They have been reading a lot about social media and decided that they would like to extend the capabilities of their existing application to make it more “Web 2.0“. They also have a new application in the works that will allow user to set up projects and track the dependencies between the projects so they are able to get a quick view how project changes impact the overall delivery of their broader program.
MyNewsBox identified the following requirements:
- Allow users to find interesting stories across Twitter and Facebook and add them to their news box
- Create the ability to share news items with other users
- Recommend other news items that the user might find interesting
- Suggest other users with similar interests and allow them to subscribe to their news box
- Easily add new networks without have to make major application changes
- Create a framework that can be leveraged for new application development efforts
After spending several weeks investigating similar applications, they settled on the following interface design:

The new interface highlights the connections between the the user and their stories, suggests new stories and also recommends new friend connections. MyNewsBox decided to approach the new application changes by creating a base framework that managed the connections and relationships between users. They based the framework on top of a virtual directory. Since they already had user information in the system, they saw additional value in that the virtual directory allowed them to access existing local information and new information from the social networks all through a single point. MyNewsBox then used the Java API’s to build basic connectors for Twitter and for Facebook. They then updated the application to provide the option for their users to enter the Twitter and Facebook identities into MyNewsBox. Through explaining the value of the new features, MyNewsBox hopes to be able to get a significant number of users to add the additional account details.
Once the user information for Twitter and Facebook is collected, MyNewsBox created views into the information which allow the application to make three queries:
1. Find users on the system who have friends in common on Twitter and Facebook, but are not yet connected on MyNewsBox.
2. Find people who have similar interests defined on Facebook so that the news stories that they have saved can be recommended to other users with common interests.
3. Return Facebook interests for a user so that when a user searches for new stories on Twitter, those Facebook interests can be used as keywords.
These views were both created in the virtual directory and made available so that any application could easily obtain this information by making a SQL call to the virtual directory. Since the business logic is based upon configuration in the virtual directory, nothing needs to change in MyNewsBox once Twitter starts letting users tag their interests and types of relationships. After creating their social network virtualization framework, the application changes required were very minor and mostly consisted of user interface updates to show the new information being queried from the virtual directory.
After gauging the success of the changes to MyNewsBox, they started work on the new project dependency application. One of the key requirements for the new application was to create communities for people working on common projects. They felt that LinkedIn provided an easy way to identify users of the same company and show them a view of all of the projects going on at that company. The users would then be able to send a notification requesting access to the project. Instead of building a standalone connector for the new application, MyNewsBox added this connection through the virtual directory. After adding LinkedIn, they created a new view which the project dependency application used to determine common connections within the same company. After adding this connection, MyNewsBox was also able to take advantage of this new information in their existing application simply by adding the ability for users to define their LinkedIn account information and by updating the views in the virtual directory to include the new business logic. No other application changes were required. MyNewsBox was able to also activate the persistent cache in the virtual directory to deliver this information across all of the social networks with a high level of performance. Since the cache was a configuration on the virtual directory, no coding was needed to take advantage of this improved performance.
Hopefully this helps to explain why adding an social network abstraction layer through a tool like a virtual directory is an interesting approach. Thanks for taking the time to read through this information. I would love to hear your feedback.
Thanks,
Todd



