SCORE Project: SNA4Slack
Title: Network Analysis and Visualization for Slack Teams
Sponsors: Filippo Lanubile and Fabio Calefato
Slack is a collaboration tool now adopted by many software developers for intra-team messaging, sharing files, and aggregating communication from different tools. Team conversations are organized in open channels per topic or anything worth of a focused conversation. Slack messages posted to a public channel are visible to the entire team. You get notified if you subscribe to the channel or you are mentioned (@username). In this project, you will develop a web application that allows users to analyze and visualize social networks built upon Slack conversations. Just as an example, you might derive a network graph whose nodes are the users and directed edges are the mentions. Graphs will be explored through visualization and analyzed to gain a greater understanding of the network. Slack messages will be accessed through the Slack export archive.
This web application will allow users to visualize and analyze social networks built upon Slack conversations within public channels.
Source data will come from Slack export archives of open source projects, publicly available at http://slackarchive.io.
Social networks will have Slack’s team members as nodes and will vary according to which communication exchange is considered for edges. Among possible social networks, consider first a mention-based network in which edges are direct and represent mentions (@username) to call the attention of a team member. A weight might be assigned to represent the number of mentions. Another network might be a subscription-based network in which edges are drawn between all the team members who subscribe to the same Slack public channel. A weight might be assigned to represent the number of common subscribed channels.
Visualizations should provide a way to show the network graph, without node overlapping, using one or more layout algorithms.
The system might allow the user to set filters for pruning the graph by keeping only nodes and edges that satisfies filters conditions. For example, you might define thresholds for edge weights to visualize pruned graphs with edges removed if under the threshold and nodes removed if disconnected. When filtering is disabled, the whole graph will be set again as the visible view.
The system should provide the most common metrics for social network analysis (SNA), including metrics to assess the overall structure of the network (e.g., measures for density, path length, and overall connectedness), centrality metrics (e.g., degree for undirected graphs and indegree/outdegree for directed graphs) and metrics the assess the level of clustering within a network (e.g., clustering coefficient). SNA measures might be shown in tabular mode as well as decoration of network graphs. SNA measures might be also used as filters for pruning the graphs.
The project must implement the features described above. The system must come with at least one social network (may be the mention graph), one layout algorithm and three SNA metrics. The choice of the development platform, including how to retrieve the Slack channels content, tools and programming languages to use, is left to the teams. Besides the development of the software, teams must provide accompanying documentation, including a requirements document, a design document, and a brief user manual.
Teams can use any development process and the choice should be motivated and discussed in the project report. If agile development is adopted, user stories must be created to drive iterations.
Third party code or libraries may be reused, provided reuse is explicitly acknowledged and the reused code uses a compatible license.
Automated test is required. Unit tests must be created as each new code unit is added. Systems tests should be created as each new feature, or user story, is created. All tests should be run after any change, and 100% success rate is expected.
All project artifacts must be hosted on a public repository, with a version control system and an issue tracker (e.g., GitHub, BitBucket, GitLab). To track the project activity, the teams should adhere to the following rules:
- For each iteration or major set of development tasks, a milestone must be defined.
- For each task, including user stories, an issue describing it must be defined, within the corresponding milestone.
- Task granularity is up to the teams, provided that the corresponding issue can be assigned to a single team member.
- The use of branches for working on partial solutions is recommended.
- All users must make sure their partial solutions do not break the system (project must compile, tests that passed before must still pass).
The choice of platform is up to you, but it must be web-based.
Level of Sponsor Involvement
The sponsors of this project will accept questions about the project topic at any time but responses may be slower in July and August 2017 due to travel and other obligations. Important and recurrent questions will be organized in a FAQ section. Teams are free to make their own assumptions for questions not appearing on the FAQ, if not answered within a week, assumptions should be included in the project report. A Slack team will be established for discussion with the sponsor and peers.
Sponsor contact: filippo (dot) lanubile (at) uniba (dot) it or fabio (dot) calefato (at) uniba (dot) it
Answers to selected questions will appear here.