Discussion Forum Enhancements
Homework Submission, Automated Grading, and TA grading system
GitHub : https://github.com/Submitty/Submitty
Google Summer of Code 2018 with Submitty
Worked with Submitty on Discussion Forum under Google Summer of Code 2018. Barbara Cutler, Master_Odin and Andrew Aikens were officially assigned mentors who along with other Submitty members helped me at various stages such as design problems, code review and performance issues which made this journey easier for me.
What I learned
I got hands-on experience using twig templates along with PHP giving high code reusability and secure code. Using E2E tests reduces a lot of time as compared to testing applications manually. I got exposed to writing complex SQL queries.
This project helped to inculcate a spirit of teamwork in me and instilled the coordination, cooperation and management required to work in a team.
I also absorbed the importance of code reviews/feedbacks by others as they might have a completely different angle to view the problem.
Submitty has a student-faculty portal named Discussion Forum. It can be used for asking queries, announcements, notes sharing, etc.
Paging on Thread List
Forum page has thread list in the left column. However, as the semester grows, the number of threads can dramatically increase the page loading time. Introducing paging in thread list not only decreases the page loading time but it also enhances the user experience by loading limited threads in a view at a time.
- Merge Common Threads
A lot of times, students create different threads on the same context, thus increasing confusion. Now, the instructor can club similar context threads with just a few clicks.
Notifications are needed so that the user is kept updated about the associated events. Submitty, now supports notifications which get triggered when -
- There’s a new announcement,
- Someone replies to your posts,
- Instructor edits your posts,
- Instructor merges your thread into another thread.
Currently, notification is triggered only on forum related events. However, the same architecture is compatible to handle notifications from different components of Submitty.
Thread Status (#2341)
The thread can be created with the intention of asking a question waiting for some response or it can be simply a comment. Thus thread status can be one of Comment, Unresolved or Resolved. Threads are visually marked on the thread list and can also be filtered on the basis of their thread status.
Instructor or the author of the thread is free to switch between thread status and can mark the thread as resolved along with the problem.
Allow students to pin threads (#1973)
It’s possible that there are a few threads which students want to watch closely. Thus, each student can pin the threads of their interest and move them to top in their thread list.
The code responsible for thread creation form, posts reply form and edit posts/thread form now shares a common twig template.
Allow the original author to edit post/thread (#2301)
Initially, only the instructor was allowed to edit posts/threads because of a few concerns. Now even students are allowed to edit their own posts apart from just instructors. Along with it, the instructor has the power to obtain the list of edit history containing the changes with the timestamp and the information of the user who modified it.
Show deleted threads (#2151)
Instructors are authorized to delete any posts/threads at any point of time. But in some cases, we want the instructors to be able to view all posts/threads irrespective of their deletion status. Thus instructors can toggle Show Deleted Threads button to make use of this functionality.
Recover posts/thread (#2248)
It’s possible that after some time, the instructor wants to recover a post/thread. He can do the same easily just by clicking the undelete button attached to any post.
Multiple Attachments (#2243)
Allowing a user to dynamically add/remove multiple attachments either one by one or multiple at once while creating a thread or replying to a post. Also visually show the attached image as a thumbnail to avoid the mistake of attaching the wrong file.
Edit Thread (#2150)
Thread-specific information like thread title and categories are editable.
Visually marked thread with my posts (#2585)
Threads containing at least one of the current user’s posts are marked visually in the thread list.
Allow multiple categories for a thread (#2083)
Earlier, all the threads were assigned to one category of relevance.
However, now each thread is allowed to have more than one category and anyone can filter the threads based on a set of categories.
Edit Categories (Reordering) (#2126)
Categories having colors and edit category features (#2135)
The instructor is allowed to add/remove a category and even category name. In addition, categories are now ordered. And the same order will be used in thread creation page, edit thread form and filter thread based on categories.
Selenium E2E Tests for the forum
Worked on basic end to end selenium tests for the discussion forum. (test_forum.py)
Refactoring DB Queries
Used a single helper function to generate a single complex SQL query required to obtain the list of threads along with other desired information. This also minimises the PHP to SQL calls. The same function can be used by different methods to obtain an SQL query needed to fetch information without re-writing the whole query.