[Proposal] User Groups
View Github Ticket to view proposal status updates.
Overview
Simplify user grouping by creating one centralized place for administrators and course delivery teams to create and managing user groups (including legacy grouping mechanisms: cohorts, course/track groups, and teams) at the course, organization, and platform level. Allow platform users to segment users based on their characteristics, performance, and/or the things that they do (or don’t do) on the platform. Once created, user groups can be utilized a number of different ways: to deliver tailored communications to learners, to provide targeted support to learners based (see examples in the Use cases section), to filter Aspects dashboard(s), and to link to a content group.
Problem
Problem 1: Course delivery teams currently have no way of reaching out to users based on their characteristics, their course performance, and/or the things that they do (or don’t do) on the platform (aside from emailing all users, staff users, or users by enrollment track). With a centralized and powerful user grouping feature, the Open edX platform will equip course delivery teams and administrators with the power to send tailored communications to learners. Based on discovery conducted with course delivery team members, we expect that instances will want to add even more ways providing targeted support to segments of learners based on their characteristics, engagement, and/or performance.
For example:
I want to be able to re-set the number of attempts for X problem for users in a group, so that I can keep a learner that is struggling engaged.
I want to be able to grant an extension to all users in a group, so that these learners don’t give up.
Problem 2: There are a number of different ways to group learners on the platform that were each created for one specific purpose (examples: course/track groups, cohorts, and teams), so how and when to use each grouping mechanism is not always clear to course delivery team members. With simplified, more robust user grouping capabilities, we expect that user grouping will be easier to do and understand for users and will encourage platform administrators and course delivery teams to use these powerful segmentation capabilities more often.
Use cases
As a course delivery team member, I want to be able easily to create and manage user groups all in one place, so that I can:
Communicate with a subset of learners (via email or notification depending on the use case and learner notification preferences). (Note: We’ll need to make sure that the success of any targeted communication that is sent is something that users can measure - How many learners that received the communication, opened the communication, and took the action the nudge was intended to precipitate?)
Easily compile and download a list of learners that meet certain criteria based on their characteristics, their course engagement, and/or their course performance.
View course enrollment, engagement, and performance data for a list of learners that meet certain criteria based on their characteristics, their course engagement, and/or their course performance.
Automatically reset attempts for (specific) problem(s) for a subset of learners who are not performing well on an assignment or those that got their final problem attempt(s) wrong for (specific) problem(s) in order to keep them engaged with coursework.
Tailor the course content for learners in a particular group and/or deliver the same course plus supplemental content and problems to a subset of learners in my course based on what the learner does in the course, learner characteristics, etc.
Specific example:
For learners who answered the survey at the beginning of my course with X as their primary area of interest, I want to tailor the problems and examples given throughout the course course to their interests to help keep them engaged.
As a course delivery team member, I want to create user groups based on learner characteristics, performance, and engagement, so that I can learn more about the users in that group and/or build out targeted interventions for the users in that group.
See this link for a list of user groups that course delivery team members want to be able to create and use based on a series of user interviews.
Proposed solution
User Group Strategy (see also the original wiki page to see the initial feedback from the community in the comments: [WIP] Learner Group Requirements)
UI/UX
For the initial user group creation at the course level, we’ll be adding the user group creation and management interfaces to the Instructor Dashboard. As we expand scope to the organization and platform levels (likely beyond the V release), we hope to integrate user grouping management within an administrator console.
In-progress figma prototype for initial slice of user grouping
More UI/UX thinking around user grouping on the platform
Competitive research
Moodle
Cohorts vs. Groups
Moodle allows platform-wide administrators to create cohorts (at the platform level) and these groups are used to enroll large groups of users in courses.
Instructors can create groups of learners within a course. Groups are used similarly to how Teams are used on the Open edX platform. On the Moodle platform, instructors can create groups by uploading a CSV file or by manually adding individual users to a group.
Targeted messaging
Moodle allows instructors to message a subset of learners in their course. The recipient group is created when the instructor is drafting the message (Note: this screenshot was taken in October of 2023):
Canvas
Groups are used similarly to how Teams are used on the Open edX platform. On Canvas, groups are created by randomly splitting learners into N groups or by allowing learners to assign themselves to a group.
More in-depth competitive research and Key takeaways
One major takeaway is that neither Canvas or Moodle have a method for creating dynamic user groups based on user characteristics, performance, and/or engagement. Moodle’s messaging functionality is the closest the platform gets (from what I can tell) to allowing course teams the ability to differentiate learners based on their activity. Building out robust dynamic user grouping functionality that is easy to use could be a huge platform differentiator for the Open edX platform: one that empowers instructors to experiment with and measure their attempts at improving learner outcomes.
Implementation Plan
Axim Collaborative will likely fund this project in collaboration with a provider. eduNEXT is our current partner in fleshing out the data model, migration, refresh mechanism ADRs and is working with us on the early-stage UI/UX plans.
User Groups Beta Releases: User Group Creation, Management, and Limited Usage for Courses
Ulmo Release (User Groups BETA release; defaulted to off): Add the ability to create and manage a static user group at the course level; user can download a CSV file that lists the users in the group and can filter Aspects dashboards by user group (Requirements)
Verawood Release (User Groups BETA release; defaulted to off): Add the ability to create and manage a dynamic user group at the course level (Requirements draft)
Beyond
Start to integrate communication mechanisms with user groups; provide users with a small number of out-of-the-box pre-made user groups based on those we expect to be commonly used (No longer in BETA; defaulted to on)
Slowly start migrating legacy groups over to user group creation and management model and interface in the following order:
Track groups
Cohorts
Teams ← Outstanding question: how many instances are using teams? Does it make sense to keep teams separate from the rest of user grouping for the long term?
Start to expand the scope of user grouping beyond the course level (user groups created at the org level and then platform level)
Plan for long-term ownership/maintainership
Implementers of user groups will continue to maintain the new user grouping code for a certain period of time (~1 year).
Once fully implemented, this work will remove several big pieces of code that are poorly understood and replace them with a smaller, better documented single system.