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-discussionsMFE — thread list, post creation, search, likes, flagging - Backend: Transition in progress from Ruby
cs_comments_serviceto Pythonforumservice - 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 fromedx-platform; stores posts/comments in MongoDB - New: Python
forumservice replicates the API surface with better performance and maintainability; stores in MongoDB - Frontend: React MFE (
frontend-app-discussions) communicates withedx-platformwhich proxies to the forum backend - Provider abstraction:
edx-platformhas a discussion provider interface allowing third-party discussion tools via LTI or dedicated plugins - Notifications: Post activity triggers notifications via
edx-platformnotification system
Relevant Repositories
| Repository | Role in This Feature | Activity Level | Notes |
|---|---|---|---|
| openedx/frontend-app-discussions | Discussions MFE: threads, posts, moderation UI | High | Main frontend |
| openedx/forum | New Python forum backend (replacing Ruby service) | High | Active migration |
| openedx/openedx-platform | Forum proxy API, discussion configuration, notifications | High | Intermediary layer |
Recent Changes
forum(Python) service actively developed to replacecs_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
| Year | Milestone | Teams / People Involved |
|---|---|---|
| ~2012–2013 | cs_comments_service launched (Ruby) | Unknown |
| ~2020 | frontend-app-discussions MFE development begins | Unknown |
| ~2022–2023 | Python forum rewrite initiated | Unknown |
| ~2024–2025 | Python forum becomes production-ready alternative | Unknown |
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_serviceoriginally? - [ ] 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?