Skip to content

Discussion & Group Learning

Overview

Discussion & Community covers the in-course discussion forums where learners and instructors interact — creating threads, asking questions, upvoting answers, and building peer learning communities. It also includes staff moderation tools and configuration of discussion providers.

Discussions in Open edX have a notable architectural history: the original backend was a standalone Ruby/Elasticsearch service (cs_comments_service) that is being replaced by a new Python-native forum backend (forum). The frontend is handled by the frontend-app-discussions MFE.

Current State (2026)

  • Frontend: frontend-app-discussions MFE — thread list, post creation, search, likes, flagging
  • Backend: Transition in progress from Ruby cs_comments_service to Python forum service
  • Discussion providers: Platform supports both the native discussions backend and third-party providers (Piazza, LTI-based) via a pluggable provider interface
  • In-course integration: Discussions MFE is embedded within the course experience via frontend-app-learning

Architecture

  • Legacy: cs_comments_service (Ruby + Elasticsearch); called via REST API from edx-platform; stores posts/comments in MongoDB
  • New: Python forum service replicates the API surface with better performance and maintainability; stores in MongoDB
  • Frontend: React MFE (frontend-app-discussions) communicates with edx-platform which proxies to the forum backend
  • Provider abstraction: edx-platform has a discussion provider interface allowing third-party discussion tools via LTI or dedicated plugins
  • Notifications: Post activity triggers notifications via edx-platform notification system

Relevant Repositories

RepositoryRole in This FeatureActivity LevelNotes
openedx/frontend-app-discussionsDiscussions MFE: threads, posts, moderation UIHighMain frontend
openedx/forumNew Python forum backend (replacing Ruby service)HighActive migration
openedx/openedx-platformForum proxy API, discussion configuration, notificationsHighIntermediary layer

Recent Changes

  • forum (Python) service actively developed to replace cs_comments_service (Ruby)
  • Discussions MFE progressively replacing inline Django-rendered forum views

History

Origin

  • Year introduced: ~2012–2013 (discussions launched as part of original edX)
  • Initial implementation: cs_comments_service — a standalone Ruby on Rails application backed by Elasticsearch and MongoDB; called from the LMS via HTTP
  • Context: Large MOOC forums needed to handle thousands of posts per course; the separate service architecture was chosen for scalability

Key Milestones

YearMilestoneTeams / People Involved
~2012–2013cs_comments_service launched (Ruby)Unknown
~2020frontend-app-discussions MFE development beginsUnknown
~2022–2023Python forum rewrite initiatedUnknown
~2024–2025Python forum becomes production-ready alternativeUnknown

People Who Shaped This Area

  • Engineering: Unknown — open question for interview
  • Product: Unknown — open question for interview
  • Design: Unknown — open question for interview

Open Questions

  • [ ] Why was Ruby chosen for cs_comments_service originally?
  • [ ] Who made the decision to rewrite it in Python and when?
  • [ ] What drove the architectural choice to use Elasticsearch + MongoDB for the forum backend?
  • [ ] How was the discussion provider abstraction designed, and what third-party providers have been supported?
  • [ ] What are the most common pain points instructors and learners report with discussions?
  • [ ] How does cohorted discussions work and when was that feature added?

Schema Education — Internal Research