Summer of Code
The project's website
The proposal
Title/Summary
Social Networking Analysis (SNA) Tool
Organization
Drupal
Description
-- The new module's features -- The module visualize the social network graph of the users' of the site. Also the module can ask the following questions: - Who are the most popular users? - Are there inactive (outside the community) users? - What is the degree of a specific user? (degree ? see later) - What is the distance between two users? -- Mathematical background -- It is needed to create a graph model of the social network. The directed graph has points and edges. The analogy is: points-people , edges-relationships. The hard question is that how to define the relationships. The following graph-algorithms are needed to implement the module's features: - Searching (shortest) path - Walking trough the whole graph - Get the degree of a point ( How many people know a specific person? ) - Get the points with highest degree The directed graph can be represented as an incidence list. A caching solution is must-have because the graph algorithms are not linear algorithms mostly. The Wikipedia has a decent guide to graph algorithms. (http://en.wikipedia.org/wiki/Shortest_path_problem, http://en.wikipedia.org/wiki/Graph_theory) The base of the module is a directed graph with the proper algorithms. -- Who knows who? -- What is the base of the connectivity (edge) between two people (points)? For public websites: (not tight community) - by content ratings. Visitors can rank the usefulness of a node. The node's author can be scored. The aim is to find the most valuable users. For community websites: - The user's can directly score each others' contents. (and the friends can confirm their relationship). The aim is a general purpose social networking capabilities. -- Development ideas -- Required: The mathematical data structure and algorithms and the user interface. The list which represent the graph can be stored in an SQL table (soc_network). The result of the most frequently requested algorithms can be stored in another SQL table (soc_network_cache). The storing methods should be discussed with 'Content recommendation engine' proposal's winner. Maybe there are some overlap with this project and perhaps it's practical to design a common part of the two projects. The graph visualization will use another Summer of Code project's result (Imagemagick integration) or use the PHP's built-in capabilites. The visualisation's result is a picture file (SVG is preferred because it's easy to create (XML) and scriptable) with zooming, rotating and so on. (with the help of some javascript code) Other text-results are accessible trough a new block. I'll use Doxygen for documentation. I understand the Drupal coding standards and I will follow them through the project. -- Timeline -- From now to May 26 - I am going to study and make experiments with Drupal 4.7 code and block creating May 26 - I post a detailed function and implementation plan to the development mailing list. I enhance my ideas according to the feedbacks After that - weekly (or more often if required) status report about what I achieved and what problems I saw -- User's benefit from the project -- Users simply love the social network websites like Frendster, iWiW and MySpace. This feature in Drupal can increase the amount of visitors of any Drupal-based website. So the maintainers and the users also likely to benefit. -- About myself -- I'm a student at the Budapest Technical University, Budapest, Hungary. My current studies related to computer science is object oriented design in C++. I have PHP experience in one major development project. (www.mammagency.com ? where I made a php and database backend for a flash-based website) . Excluding the above mentioned website I made some little project in PHP for own use. I maintain two drupal based website (www.szentimre.hu and www.godcasting.hu) so I'm personally concerned in the development of Drupal. At the university, I finished two subjects that connected to the graph theory. I learned the basics of the graph theorem and the most important algorithms. By the way I'm a member of the most popular Hungarian social networking site (www.wiw.hu) . I hope that I have a chance to implement such an exciting feature to Drupal. Aron Novak aaron@szentimre.hu and naronhu@netscape.net May 2006