Skip to content

Instantly share code, notes, and snippets.

@yash170106065
Last active August 28, 2023 15:59
Show Gist options
  • Save yash170106065/df1d27b512a320012a9a72cbe09fb073 to your computer and use it in GitHub Desktop.
Save yash170106065/df1d27b512a320012a9a72cbe09fb073 to your computer and use it in GitHub Desktop.
Gsoc2020 Report

GSoC 2020 Work Product

Aim

The aim of this project is to implement a real-time system that will allow users to comment on graphs and discuss ideas with each other using the GraphSpace web interface. This project has three sub goals:

  1. Design a user interface for creating comments and discussions. When visualizing a graph, this interface should allow users to add comments as a means to discuss or share ideas with their collaborators for a given graph, analogous to the way "Comments" on Google Docs allow users to discuss ideas on text documents. Being applicable to graphs, the comment system on GraphSpace should apply to node, edges, groups of nodes, and subgraphs, or even the entire graph. Comments can be applicable only to a specific layout as well. Comments can also we be marked as resolved preventing further updates on the discussion.

  2. Develop a web service for real time comments and discussions. In GSoC 2017, one of the students working on GraphSpace implemented a real-time notification system. We use the same architecture to implement real time storage, querying, and recovery of comments. This functionality helps in real time update of comments like adding, deleting, editing, resolving etc.

  3. Integrate the web service with the user interface. Finally, integrate the web-service with the user interface to implement an end-to-end user flow.

  4. Develop the web service for reaction system for comments and discussions Developed a reaction system for both comment and discussion system so that users can react on comments.

Overview of Work Done

Following are the major changes which I implemented during this coding period:

1. Comment system for graphs

Comment-system allows user to comment on different graph components similar to add comments as a means to discuss or share ideas with their collaborators for a given graph, analogous to the way “Comments” on Google Docs allow users to discuss ideas on text documents. GraphSpace allows users to comment on the following:

  1. Node - Users can comment on a node(s).
  2. Edge - Users can comment on a edge(s).
  3. Subgraph - Users can comment on a combination of nodes and edges (a subgraph).

Features of the comment system

  1. Adding comments- We can add comment for a subgraph (nodes,edges) or on a whole graph. (Demo)
  2. Viewing comments- We can view the comments that are associated with the particular graph. (Demo)
  3. Replying to comments- We can reply to each comments in graph for that user must be signed in. (Demo)
  4. Real-time experience of add and reply to comments- Adding and replying to comments is completely real time for the users that are viewing that graph. (Demo)
  5. Editing comments- We can edit our comments and replies for that user must be the owner of that comment and reply. (Demo)
  6. Resolving comments- We can resolve the comments in a graph, only the comments not replies can be resolved by comment owner. (Demo)
  7. Deleting comments- We can delete each comments in a group for that the user must be the owner of that comment. (Demo)
  8. Re-opening resolved comments- We can re-open the resolved comments in a graph, so that users can agin reply on that comment. (Demo)
  9. Label on comments- Label is present for each comment if (commented on subgraph #Nodes #Edges will appear, on graph #Graph will appear) (Demo)
  10. Real-time experience of edit, resolve, reopen and delete comments- Editing, resolving, re-opening, deleting comment functionalities are completely real time for the users viewing that graph. (Demo)
  11. Displaying comments associated with selected graph- Option for displaying the comments that are associated with the particular selected subgraph. (Demo)
  12. Highlighting subgraph associated with a comment- While hovering on some comment the subgraph is highlighted that is associated with the comment. (Demo)
  13. React unreact to the comments and replies- We can react and unreact on each comments from the list of emojies present in the dropdown. (Demo)

2. Discussion system for groups

This is the feature of Graphspace is used for discussions inside the group. This feature allows users to create discussions about some particular topic so that members of the group will join the discussions and discuss the topic. This feature helps researchers to discuss about some ideas and issues.

Features of the discussion system

  1. Adding discussion- We can create the discussion with some topic and description for that user must be a member of group. (Demo)
  2. Viewing discussion- We can view the discussion from the list of discussions in discussion table for that user must be member of the group. (Demo)
  3. Search functionalities for discussions- We can search the discussions by its topic, descriptions and owner email. (Demo)
  4. Deleting discussion- Only the owner of the discussion can delete a discussion, all the comments associated with the discussion will be deleted. (Demo)
  5. Adding comments in discussion- Inside the discussion each member of the group can create the comments. (Demo)
  6. Real-time experience of add and edit comments- Adding and editing of comments is completely real time for the users who are viewing that discussion. (Demo)
  7. Editing comments- Owner of the comment in a discussion can edit the comment. (Demo)
  8. Deleting comments- Owner of the comment in a discussion can delete the comment. (Demo)
  9. Closing discussion- Each discussion can be closed only by the owner of the discussion and after that no-one can further comment on it. (Demo)
  10. Re-opening closed discussions- Each discussion can only be reopened by the owner of the discussion and after that users can again comment on it. (Demo)
  11. Real-time experience of close, reopen and delete comments and discussions- Close, reopen and delete functionalities are completely real-time so it avoids commenting on closed discussion at some particular time. (Demo)
  12. React unreact to the comments and replies- We can react and unreact on each comments from the list of emojies present in the dropdown. (Demo)

Challenges

The major challenge I faced during the coding period was while I was working with the restructuring of models of comments-system and discussion-system. Our initial idea was to create a different models for comment-system and discussion-system. However, due to this more number of null values creating in the columns. With some extremely valuable inputs from my mentor and discussing how to deal with the problem, we decided to create a common comment model that handles both comment-system and discussion system with the help of association proxies (SQLAlchemy) with comment_to_graph and comment_to_discussion models.

Code contributions to different repositories

Mentors:

1- Daniyal Jahan Warsi (primary mentor) - Github

2- Aditya Bharadwaj (secondary mentor) - Github

3- Prof. T. M. Murali (secondary mentor) - Github

Student's Profile - Yash Agarwal

Github
LinkedIn

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment