Discussion & Community
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
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
`cs_comments_service` launched (Ruby)
`frontend-app-discussions` MFE development begins
Python `forum` rewrite initiated
Python `forum` becomes production-ready alternative
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?