Forums v2
This document was originally created by Jim Abramson (Deactivated) in November 2013. It has been migrated from the old wiki: https://edx-wiki.atlassian.net/wiki/display/FOR/V2
PRELIMINARY DRAFT
Definition
Goals:
- Decouple from edx-platform
- change and release forums independently of LMS, Studio etc
- reduce complexity and size of edx-platform
- move toward service-based ecosystem
- Consolidate and standardize
- merge entities and logic presently split across two separate code repos
- use a single language
- move away from special-case deployment (Heroku / add-ons)
- Revisit data models and storage
- data is split across three apps / database types
- mongo is suboptimal fit for forums data model & access patterns; this causes a need for more application code/complexity to close the gaps
- search index tightly coupled to mongo; search functions very limited
- Improve product quality and extensibility
- make it easier to understand and maintain the forums
- make it easier to add key new features such as: moderation, ...
- make it easier to operate and troubleshoot the forums (by eliminating opaque components and points of failure)
- design for integration and interoperability: XBlock, LTI, alternate forums implementations (pluggability)
Constraints
- Ensure continuity for past/present courses; do not interrupt service or data access for active courses in cutting over
- may have more flexibility with past / archived courses
- possibly start new courses on v2 while maintaining v1 for old?
- Ensure continuity for research partners
- might be tricky, e.g. may be doing research over the span of a course, or comparing two courses assuming same version of forums, etc
- solve this going forward
- Preserve baseline interoperability with alternate discussion systems (Piazza, SE, etc)
- maybe a non-issue - can alternate discusison providers be implemented with their own tabs? more about how LMS links to other apps.
- Be transparent to OSS community
- Support / guide other platform deployments through a transition
Scope
User-Goal Matrix
I want to... | Sara | Nico | Amman | Michelle | Lily | Oliver |
---|---|---|---|---|---|---|
ask other users for clarification of a problem | ||||||
provide clarification of a problem | ||||||
ask other users for hints on a problem | ||||||
provide hints on a problem | ||||||
find the most helpful hints and clarifications for a problem | ||||||
help other students find the most helpful hints and clarifications for a problem | ||||||
alert staff to technical issues with the course | ||||||
inform students of technical issues and resolutions | ||||||
fix typos in my posts | ||||||
avoid seeing abusive content | ||||||
discover questions that have not yet been answered | ||||||
This table is in progress. Still need to add other use cases in to understand feature |
Social Dialogue Software at MOOC Scale
Use cases (based on v1)
area | use case | v1 status | v2 status |
---|---|---|---|
student | create / edit / delete threads | ||
create / edit / delete posts | |||
upload files in a post (as linked attachments) | images only | ||
flag / unflag a post | |||
upvote / de-upvote a post | |||
view posts in a thread | |||
browse threads by commentable, or entire course run | |||
browse threads using "more like this" | not implemented | ||
browse threads by most recently active | not implemented | ||
browse threads by "trending" (tags) | not implemented | ||
see if/when user last viewed a thread | |||
post / view posts with anonymity | |||
search for content using text / filters | |||
view user profile / activity | |||
reputation | - | ||
notifications | follow / unfollow a thread | ||
follow / unfollow a commentable | not implemented | ||
follow / unfollow a user | not implemented | ||
get notifications (activity in things a user is following) | |||
tags | use tags | not implemented | |
moderator / community TA | delete all threads in a commentable | ||
close / reopen a thread | |||
pin / unpin a thread | |||
endorse a post | |||
edit / delete others' posts | |||
versioning | versioning of posts | not implement | |
administrator | grant / revoke moderator role on a user | ||
abuse / quality control | disallow posting specific content | backend only | |
manage disallowed content | backend only | ||
disallow posting content matching rules | not implemented | ||
manage disallowed content rules | nto implemented | ||
cohorting | use cohorts for a course run | ||
assign users to cohorts | |||
show only content in a cohort |
Integration Requirements
Platform (common)
- User model - identity, student profile, preferences
- Course-level constructs - course, course run, "commentable," cohort
- Course run lifecycle
- Course Enrollment events and course-level roles / access control
Studio
- automatically initialize forums for new course run
- create / modify / delete commentables
- inline thread preview
- export forum content in course run export
- import forum content with course run import
LMS
- discussion tab (desktop/browser app)
- inline thread view
- ajax endpoints (HTTP API)
Analytics
- emit student events
- provide bulk exports, partitioned by course or institution
LTI
TBD
XBlocks
TBD
System Requirements
Ops Requirements
UI and Accessibility Requirements
Capacity Requirements
Performance Requirements
Licensing Requirements
Relevant Business Targets (FY14)
- 180 Courses
- 2.3M Users
- 35 Universities + 5 B2B
Present (V1) Architecture
click for full-size view.
Build Versus Buy
Considering the nearly innumerable variety of third-party / off-the-shelf options for discussion forums products, why consider building?
Assuming that build was NOT an option, which of the existing products / competitors would be the best fit for us? What is lacking from the best-fitting offering(s) that motivates us to choose our own implementation instead?
If we did choose to use a third party implementation, what impacts would that have on deployment, maintenance, and evolution of the rest of the platform? On data integration? Research capabilities?
(TBD: matrix in progress)
Type | Examples | description | license | interface | fit notes |
---|---|---|---|---|---|
Social Streams | Twitter, Discourse.org, Branch.com |
| Discourse is open source | ||
Social Dialogue | Facebook, Gizmodo, Google+, |
| no known projects (TBD discovery here) | ||
Question & Answer | AskBot, StackExchange, MoocForums.com,Coursera, Udacity |
| Askbot and OSQA are open source | ||
Categorized Conversation | vBulletin, Discourse, Branch, phpBB |
| phpBB is the open source alternative to vBulletin. Discourse is open source. | ||
Emergent Curation | slashdot, reddit, digg.com |
| reddit is open source | ||
Social Learning Discussion Tools | Studyroom, Piazza.com, Google Moderator, Socrative.com |
| no known projects (TBD discovery here) |
Combination/Modern Forum Software Projects: Discourse.org, Branch.com, Piazza.com
3p hosted | OSS / licensed; self-hosted | edx forums v1 | edx forums NG? | |
---|---|---|---|---|
cost | low | medium | medium | high |
integration | low | low - medium | high | high |
product differentiation | low | low | medium | high |
customizable | low | medium | medium | high |
quality | medium | high | ||
performance | medium | high | ||
scalability | high | high | ||
team velocity | high | medium | low | low |
Data
TBD.
Interfaces
TBD.