Forums Braindump from Greg
History
In the beginning, there was Asbot for the first version of 6.002x.
When we made a site for multiple courses, we discovered that Asbot didn't support multiple courses with different discussion forums well.
Amondo Fox from Berkeley decided to write something.
So originally written by a team (grad student and undergrads) at Berkeley.
They set up the original architecture, which we still have.
Comments Service (basically a data store from the LMS perspective)
written in Ruby
data store in Mongo
text search in Elastic Search
all updates need to update both Mongo and Elastic Search
LMS
originally written by Dave to provide a higher-level interface
lms/lib/comment_client
handles all communication to comment service
lms/djangoapps/django_comment_client
provides the django views
common/djangoapps/django_comment_common
shared between studio and lms
studio uses it to seed the roles table when a course is created
has role and permission data
stored in RDS (mySQL) in its own tables
table of very granular permissions
e.g., open/close thread
in practice, only (really) 2 roles with 2 permissions each
Student
Privileged User
Administrators
Moderators
originally, all permissions, except grant/revoke moderator role
but, these roles are managed in instructor dashboard so no need for separation between Moderator and Administrator
Community TAs
same as moderator role, except surfaced role name is different when displayed on a thread
LMS uploads images to S3
Browser
UX designers: Marco and then Brian
June 2013 -> Aug 2014
Forums team was formed: Greg, Jim, and Kevin (a contractor just for a few months).
Forums performance improvement: 5 second timeout between LMS and Comments Service happening for over 1% of the requests.
Heroku is not great for scaling.
Introduction threads didn't perform well. They would get 1000-2000 comments for just saying "Hi!"
supported them with infinite scroll rather than paging
UX issues: front-end wouldn't tell you if there was an error. The UI would just continue to spin. There are still some front-end deficiencies there.
Discussion Content
Markdown
We use an open-source markdown editing tool.
markdown format stored
White-list of HTML tags
honored on the browser-side when rendering the content
possible to store non-white-listed tags if hackre circumvents browser, but the browser on the reader's end will filter out those tags
Mathjax
math formula renderer implemented in JS on the client-side
Future
Brian worked on designs to fix the navigation experience.
Need to improve search UX.