Forums Braindump from Greg


  • 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


  • 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


  • 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


  • Brian worked on designs to fix the navigation experience.

  • Need to improve search UX.