Social distributed computing service framework
University of New Brunswick
Social Distributed Computing, as a new concept, intersects conventional distributed computing with the Online Social Networks which have become important parts of our lives. Using the pre-existing social links, we can increase the amount of software functionality we have available to ourselves by sharing our applications with friends and using the applications our friends have shared. The software can be run on the friend's machine and input/output can be streamed through the Social Distributed Computing services allowing the requesting friend to access it through a light-weight client such as a web browser. The Social Distributed Computing framework also opens the door to allow friends to share computing resources with one another when they are not being used. This provides in essence, a social grid computing environment, making grid computing accessible to anyone instead of only large scientific endeavors. The Social Distributed Computing framework consists of 3 main modules which each perform a service. The Control Module interacts with the Online Social Network allowing the users to declare which resources and applications they would like to share, and shows which are available to the current user. The Application Sharing Module sets up and runs an application sharing instance allowing the remote execution of a program by a friend. This is accomplished by streaming the input/output through the service. The Resource Sharing Module allows users to take advantage of their friend's shared resources to perform remote computation and storage. To accomplish this the service is used to forward code and data, making social grid computing possible. In this thesis I detail several use cases for possible applications of the framework. I also implemented the Control and Application Sharing modules and performed two performance experiments to create and evaluate a prototype for the concept of Social Distributed Computing.