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
- 1 PRELIMINARY DRAFT
- 2 Definition
- 2.1 Goals:
- 2.2 Constraints
- 2.3 Scope
- 2.3.1 User-Goal Matrix
- 2.4 Social Dialogue Software at MOOC Scale
- 2.4.1 Use cases (based on v1)
- 2.4.2 Integration Requirements
- 2.4.3 System Requirements
- 2.4.4 Ops Requirements
- 2.4.5 UI and Accessibility Requirements
- 2.4.6 Capacity Requirements
- 2.4.7 Performance Requirements
- 2.4.8 Licensing Requirements
- 2.4.9 Relevant Business Targets (FY14)
- 3 Present (V1) Architecture
- 4 Build Versus Buy
- 5 Data
- 6 Interfaces
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 |
|