Forums Braindump from Greg

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.