Teams (capability)

For detailed product information on Teams, see the relevant section of the Building and Running an Open edX Course guide.


Summary

This document specifically describes the current architecture of Teams, including the data model, features, and permissions. 

The source code for teams primarily lives in the edx-platform repository in GitHubFor more details, see the feature landing page: /wiki/spaces/LEARNER/pages/19006021.

Model

  • ENABLE_TEAMS setting in edx-platform

  • Requires Discussions capability (coupled to Discussions permissions, and requires a linked Discussion topic)

  • Topics (API: /api/team/v0/topics)

    • have an ID, name, description

    • belong to a course

    • stored in course structure (mongo)

  • Teams (API: /api/team/v0/teams)

    • have members

    • have instructor-defined limits for capacity (set once, globally, at a top level)

    • have user-defined name, description, language, and geography settings

    • have system-managed ID, date created, and last activity metadata

    • belong to a course

    • optionally belong to a team topic (but if they don’t, they aren’t discoverable)

    • have an associated discussion topic (auto-generated at team creation time with GUID)

    • stored in RDBMS (mysql)

  • Members (API: /api/team/v0/team_membership)

    • belong to a team (limit one team per learner)

    • have system-managed date joined and last activity metadata

    • stored in RDBMS (mysql)

Fig 1. Teams Model

Discovery
  • Teams are grouped into topics for search purposes

    • The Teams tab automatically appears if the course team sets a non-empty dictionary in Studio's advanced settings

  • Teams have activity, which right now is just related discussion forum posts (but is extensible based on Django signals)

    • Thread and comment activity automatically updates team metadata

  • Learners can search for teams (but only within a selected topic, there’s no top-level search except via API)

Rules
  • Learners can view any team’s forum posts, but can only add posts to those linked to their teams

  • Learners can join or leave a team at any time, provided they’re enrolled in the course

  • Learners can create teams

    • The LMS does not let learners modify these settings after team creation (except staff)

    • Staff here means: admin, discussion moderator, discussion admin, community TA

    • Learner is automatically added to a team they create

  • Learners can only be part of one team at a time, except for course staff

  • Instructors can create topics in Studio via Advanced Settings

  • Course staff can delete teams and remove members from teams