Connecting Teams to Content Groups

Studio has a feature that allows course authors to restrict the access for a certain subset of students.
This feature is part of what creates the Cohorts feature. This feature also allows different content to be shown to students that belong to a different enrollment track (audit, honor, verified, …).

The proposed modification to the platform to achieve “Connecting Teams to Content Groups“ would add a similar capability to the Teams. Steps 1 and 2 are already how the lms and studio work.

  1. At the beginning of an empty course, the Teams feature is completely disabled.

  2. Using the “pages & resources” page an author can turn on Teams and configure the Groups (team sets)

    Teams can then be created in the teams section at the lms.

  3. [NEW] In studio, when an author opens the modal to select the access restriction in a unit

    the author will be presented with a drop-down that lists the available Groups. When selected the list of Teams from this group will be shown for authors to select one or multiple teams.



 

Technical approach

The proposed modification would build a new Dynamic Partition Generator, that is added to the `openedx.user_partition_scheme` stevedore entry point .

This Generator function would create a TeamUserPartition object in memory for each course's team-set.

Each group associated with each partition is dynamically generated based on the teams within the team-set. When the course blocks are loaded, the course UserPartitionTransformer transformer will collect the blocks the current user can access. This in turn will call the registered course outline processors.
We would include a TeamPartitionGroupsOutlineProcessor, which gets the information in the blocks group_access field and then matches it with the student's group filtering the course tree for the current user.

A test version of this approach has been implemented in the form of a PR here: https://github.com/openedx/edx-platform/pull/33788



Below is the first version of this proposal that built on top of Manual Content Groups - Now rejected in favor of the simple dynamic content groups



Studio has a feature called content groups. This can be reached via the settings dropdown in the header. First, authors can create different groups in this page. Creating a group here does not change anything yet.

 

Second, in the Course Outline, units can be configured to be visible only by certain cohorts by clicking the Gear Icon to reach the modal:

 

Third, at the instructor panel in the LMS, in the cohorts tab, an instructor can select each cohort and assign a content group to them. Doing so, makes the content that is restricted to this content group available for users in that cohort.

 

The proposed modification to the platform to achieve “Connecting Teams to Content Groups“ would add a similar capability to the Teams. For this, in the Team edition page below Optional Characteristics there would be a select to associate a content group.

The original panel for comparison:

 

 

Kyle McCormick
January 30, 2024

cc @Jenna Makowski @Marco Morales , in case you have opinions on how to resolve the naming clash between “Groups” (what the UI calls team-sets a.k.a. topics) and “Content Groups” (the studio abstraction which includes teams, cohorts, etc.)

Felipe Montoya
February 2, 2024

Thanks for pointing this out.

I think it makes a lot of sense to unify the terminology.
I'd even propose to call them teams all the time and never "groups" as this is the source of confusion.
How does this look to you?

Restrict access to: Team Grouping: {GROUP_NAME} Select one or more teams: [x] Team B.1 [x] Team B.2 [ ] Team B.3

 

Kyle McCormick
March 28, 2024

@Felipe Montoya Agreed that we should never call teams “groups”. What I’m seeing is that the teams UI refers to team-sets as “groups”.

(a team-set is a like namespace for teams, where each user can belong to one team per team-set)

Felipe Montoya
April 11, 2024

for some reason I was notified just now about this. In the latest version of the PR this naming was addressed.