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:

  1. 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
  2. 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)
  3. 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
  4. 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

  1. Ensure continuity for past/present courses; do not interrupt service or data access for active courses in cutting over
    1. may have more flexibility with past / archived courses
    2. possibly start new courses on v2 while maintaining v1 for old?
  2. Ensure continuity for research partners
    1. 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
    2. solve this going forward
  3. Preserve baseline interoperability with alternate discussion systems (Piazza, SE, etc)
    1. maybe a non-issue - can alternate discusison providers be implemented with their own tabs?  more about how LMS links to other apps.
  4. Be transparent to OSS community
  5. Support / guide other platform deployments through a transition

 

Scope

User-Goal Matrix

Forums v2

I want to...SaraNicoAmmanMichelleLilyOliver
ask other users for clarification of a problem  (tick)  

(tick)

provide clarification of a problem(tick)(tick) (tick)(tick) 
ask other users for hints on a problem  (tick)  (tick)
provide hints on a problem(tick)(tick) (tick)(tick) 
find the most helpful hints and clarifications for a problem (tick)(tick)(tick)(tick)(tick)
help other students find the most helpful hints and clarifications for a problem(tick)(tick) (tick)(tick) 
alert staff to technical issues with the course (tick)(tick)(tick)(tick)(tick)
inform students of technical issues and resolutions(tick)     
fix typos in my posts(tick)(tick)(tick)(tick)(tick)(tick)
avoid seeing abusive content(tick)(tick)(tick)(tick)(tick)(tick)
discover questions that have not yet been answered(tick)  (tick)  

This table is in progress. Still need to add other use cases in to understand feature 
variation across personas. currently on hold as we explore broader product considerations. 

Social Dialogue Software at MOOC Scale

Forums v2

Error rendering macro 'viewpdf' : Failed to find attachment with Name ForumsSketches.pdf

 

Use cases (based on v1)

areause casev1 statusv2 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 activenot 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 commentablenot implemented 
 follow / unfollow a usernot implemented 
 get notifications (activity in things a user is following)  
tagsuse tagsnot implemented 
moderator / community TAdelete all threads in a commentable  
 close / reopen a thread  
 pin / unpin a thread  
 endorse a post  
 edit / delete others' posts  
versioningversioning of postsnot implement 
administratorgrant / revoke moderator role on a user  
abuse / quality controldisallow posting specific contentbackend only 
 manage disallowed contentbackend only 
 disallow posting content matching rulesnot implemented 
 manage disallowed content rules

nto implemented

 
cohortinguse 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.

Forums V1 Architecture

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)

 

TypeExamplesdescriptionlicenseinterfacefit notes
Social StreamsTwitter, Discourse.org, Branch.com
  • Semi-structured, emergent conversation format with references to concepts (hashtags, tags, etc) and people (@mentions, etc)
  • Relies on notifications for return engagements.
Discourse is open source  
Social DialogueFacebook, Gizmodo, Google+,
  • Primary discussion object with structured 1 or 2 layer depth conversations
  • Relies on notifications for return engagements.
no known projects (TBD discovery here)  
Question & AnswerAskBot, StackExchange, MoocForums.com,CourseraUdacity
  • Tag based organization
  • Post classification based on votes, comments, etc. (simple listing format)
  • Often uses Badging and community equity as moderation mechanic
Askbot and OSQA are open source  
Categorized ConversationvBulletin, Discourse, Branch, phpBB
  • Focus on structured categorization of conversation
  • Often associated with older, more established forum communities online.
  • Hyper customizable, (parially due to age of software solutions) for notifications and community moderation

phpBB is the open source alternative to vBulletin.

Discourse is open source.

  
Emergent Curationslashdot, reddit, digg.com
  • Reliance on moderation tools and community
  • Clear capacity to nest conversation deeply, built around the notion of stitching threads together as a narrative. 
  • Content bubbles up.   ( #IE (wink) ) 
  • Categorization orients users appropriately when necessary (subreddits as example)
reddit is open source  
Social Learning Discussion ToolsStudyroom, Piazza.com, Google Moderator, Socrative.com
  • Focus on learning workflows and classroom-minded solutions
no known projects (TBD discovery here)  

Combination/Modern Forum Software Projects: Discourse.org, Branch.com, Piazza.com

 

 3p hostedOSS / licensed; self-hostededx forums v1edx forums NG?
cost lowmediummediumhigh
integrationlowlow - mediumhighhigh
product differentiationlowlowmediumhigh
customizablelowmediummediumhigh
quality  mediumhigh
performance  mediumhigh
scalability  highhigh
team velocityhighmediumlowlow

Data

TBD.

Interfaces

TBD.