You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _docs/developer/google_summer_of_code/2019_AnubhavSingh.md
+102-1Lines changed: 102 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,4 +3,105 @@ title: Anubhav Singh
3
3
category: Developer - Google Summer of Code 2019
4
4
---
5
5
6
-
# insert title
6
+
# Discussion Forum Refactor, VPAT & WebSocket Integration
7
+
8
+
The project was an upgrade to the Discussion Forum module of the Submitty web application. The Discussion Forum allows students in a course to discuss their coursework, allowing image upload, links and code embed. My work over the summer made the Discussion Forum more user friendly in terms of accesibility and speed of using the Forum
9
+
10
+
I am [Anubhav Singh](https://github.com/xprilion), an undergraduate student from [NSEC](https://nsec.ac.in), [Kolkata](https://en.wikipedia.org/wiki/Kolkata), as part of [Google Summer of Code](https://summerofcode.withgoogle.com/).
11
+
12
+
This project was mentored by - [Barb Cutler](https://github.com/bmcutler), [Andrew Aikens](https://github.com/andrewaikens87) and [Shail](https://github.com/shailpatels). The project had constant guidance from [Matt Peveler
Besides bringing in the Twig template engine, I also separated out the Forum specific CSS and JS from the other files, and moved all (nearly) inline CSS and JS to separate files.
30
+
31
+
-[#3905](https://github.com/Submitty/Submitty/pull/3905) Inline CSS and JS shift to external files
32
+
33
+
During working on the above task, I got into discussion with Barb and Andrew about using Markdown on the Forum posts. It was decided to replace the previous formatting system for the posts and I introduced Markdown rendering for posts in [#3774](https://github.com/Submitty/Submitty/pull/3774). However, we soon ran into alerts from several users who were suddenly having their posts rendered as Markdown. Hence we came up with the following change -
34
+
35
+
-[#4149](https://github.com/Submitty/Submitty/pull/4149) Choice of plaintext vs markdown for post
36
+
37
+
38
+
#### 2. Solving VPAT issues
39
+
40
+
A very exciting part of working on Submitty for me was to discover the depth of making websites accessible. Working on the VPAT introduced me to tools I had not known to exist such as the WAVE and ChromeVox (<b>don't install it during a meeting</b>). I made the following commits for the VPAT issues -
41
+
42
+
-[#3859](https://github.com/Submitty/Submitty/pull/3859) Sequential Forum Tabs Navigation
43
+
-[#4129](https://github.com/Submitty/Submitty/pull/4129) Missing label warnings in WAVE
44
+
45
+
Some of the fixes to VPAT were covered in [#3905](https://github.com/Submitty/Submitty/pull/3905).
46
+
47
+
#### 3. AJAXify Forum & WebSocket Integration
48
+
49
+
Probably one of the most exciting part of my GSoC proposal for Submitty, and one task I absolutely loved working. AJAXifying the Forum fell into place slowly and steadily. It was for a simple and sort of old issue that I first worked on bringing in AJAX -
50
+
51
+
-[#4019](https://github.com/Submitty/Submitty/pull/4019) Maintain Forum thread list scroll state
52
+
53
+
This made the Forum threads navigation much faster, and lightweight now that we were no longer loading the entire page for every change in thread, hence it became possible to quickly click around on thread list and view all the interesting ones.
54
+
55
+
The next step came in the form of -
56
+
57
+
-[#4082](https://github.com/Submitty/Submitty/pull/4082) Show applied filters in Forum bar
58
+
59
+
In this task, instead of just showing the applied Filters in the Forum bar, we went a step ahead and removed the Filter pop-up entirely, and created a sub-bar in the Forum which gets active only when any Filter has been applied. The motivation was to replicate the filter systems used in shopping websites like Amazon!
60
+
61
+
The above changes made it very desirable to have an entire no-reloads experience of the Forum, which would allow for real-time fetching of updates to the threads (and possibly pave way for push notifications). Late in July, when Barb and Andrew asked me to work on something which I was interested in, I came up with a few ideas and it was decided to introduce a WebSocket to the Discussion Forum!
62
+
63
+
-[#4329](https://github.com/Submitty/Submitty/pull/4329) Create Socket Server script and Push threads/posts to users
64
+
65
+
The above PR when merged would enable a WebSocket server on Submitty (not limited to Forum, course-wide available). This socket server would allow real-time updates and notifications to be pushed to the users. I am expecting a large benefit that can be drawn from having a WebSocket push server in future for Submitty.
66
+
67
+
#### 4. Miscellaneous
68
+
69
+
Apart from the above three major parts, I solved a few bugs here and there. the one bug I found most interesting and typical to solve was -
What was interesting about this bug was that it was about failing to display an error message when there was an error. The bug was evasive and it took a nearly a week to figure out how to replicate it reliably. Solving this bug was more of a help to the developers on the Forum than to the regular user.
74
+
75
+
76
+
I was also found complaining about the Hide/Show Replies feature on the Forum which resulted in -
77
+
78
+
-[#4360](https://github.com/Submitty/Submitty/pull/4360) Remove HidePosts feature in Forum
79
+
80
+
81
+
And the sad side of it all, I could not get the following completed despite spending a good couple of days on it and reading up so much about JavaScript time that I gallantly preached about it to my juniors at college -
82
+
83
+
-[#3508](https://github.com/Submitty/Submitty/pull/3508) Show current system time on submission page
84
+
85
+
Alas, the students will keep making excuses about different Timezones.
86
+
87
+
Working with e2e tests using Selenium was new to me, and with continuous support from Andrew I was able to learn about it enough to update the tests as I made changes to the way the Forum was interacted with.
88
+
89
+
## Future Scope of Work
90
+
91
+
I believe my work on the WebSocket opens up new avenues for not just the Discussion Forum but also for the rest of Submitty. It allows the possiblity of making a lot of existing features use the benefit of real time and to make new features which take benefit of it. I would look forward to seeing the following in Submitty in future -
92
+
93
+
- Forum Search working as an extended filter, generating results on the same page instead of going to a new page.
- Reflect updates to Forum Posts/Threads via WebSockets
99
+
- A Lite interface for Submitty using the [API](https://api.submitty.org/) built by [Han](https://submitty.org/developer/google_summer_of_code/2019_XiaoHan)
100
+
101
+
## Acknowledgments
102
+
103
+
I had an enriching and exciting summer of 2019, working on Submitty under the [Google Summer of Code](https://summerofcode.withgoogle.com/) program. I was glad to be mentored by Barb, Andrew (thanks for going through all my PRs!) and Shail (who was an important source of issues regarding the Forum throughout). I express my sincere thanks to all students who worked on Submitty as part of RCOS, and my peers working as part of GSoC.
104
+
105
+
I extended gratitude to [Saketh](https://github.com/sak6lab), Han and [Drumil](https://github.com/drumilpatel2000) whose comments/reviews helped me in a number of my PRs.
106
+
107
+
GSoC with Submitty was a warm and unforgettable experience for me. Everytime I talk of Open Source, Submitty will be remembered fondly.
0 commit comments