Discussion Moderation
Overview
Discussion Moderation covers the instructor-side tools for managing course discussion forums — reviewing flagged posts, removing inappropriate content, marking answers as endorsed, pinning announcements, and configuring discussion settings.
Moderation tools are embedded within the frontend-app-discussions MFE and are visible only to users with course staff roles.
Current State (2026)
- Flagging and review: Learners can flag posts; instructors/TAs see flagged posts in a moderation queue
- Endorsement: Instructors can mark an answer as "endorsed" to signal it's correct/authoritative
- Pinning: Posts can be pinned to appear at the top of threads
- Staff posts: Instructors can mark posts as "question" or "discussion" types; staff posts are visually distinguished
- Discussion settings: Course-level settings for enabling/disabling discussions, selecting discussion providers
- TA role: Teaching assistants can be given moderation permissions without full instructor access
Architecture
- Moderation tools in MFE:
frontend-app-discussionssurfaces moderation actions via the discussions backend API - Backend: Moderation state (flagged, endorsed, pinned) stored in the forum backend (now
forumPython service; previouslycs_comments_service) - Permissions: Django role system (
CourseStaffRole,CourseTARole) gates moderation actions
Relevant Repositories
| Repository | Role in This Feature | Activity Level | Notes |
|---|---|---|---|
| openedx/frontend-app-discussions | Moderation UI within discussions MFE | High | Integrated moderation |
| openedx/forum | Forum backend: moderation API endpoints | High | Python forum backend |
| openedx/openedx-platform | Role-based access for moderation, legacy moderation API | High | Permissions layer |
Recent Changes
- Moderation features being maintained in
forum(Python) as it replaces Rubycs_comments_service
History
Origin
- Year introduced: ~2012–2013 (moderation launched with the original discussion system)
- Initial implementation: Moderation actions via the Ruby
cs_comments_servicebackend - Context: MOOC forums at scale (thousands of posts per course) required moderation tools for course staff to maintain quality
Key Milestones
| Year | Milestone | Teams / People Involved |
|---|---|---|
| ~2012–2013 | Basic moderation (flagging, endorsement) in forum system | Unknown |
| ~2020 | Moderation UI in frontend-app-discussions | Unknown |
| ~2022–2024 | Moderation ported to Python forum backend | 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
- [ ] How did moderation work in the original Ruby forum system?
- [ ] What moderation workflows do course teams rely on most?
- [ ] How does the TA role permission model work for discussions specifically?
- [ ] What are the most common moderation challenges at MOOC scale?